diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart index fb3634365d..df7fec1423 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart @@ -34,7 +34,7 @@ Future copyNativeCodeAssetsAndroid( final Uri source = assetMapping.key.file!; final Uri target = (assetMapping.value.path as KernelAssetAbsolutePath).uri; final AndroidArch androidArch = - _getAndroidArch(assetMapping.value.target); + _getAndroidArch(assetMapping.value.target.architecture); final String jniArchDir = androidArch.archName; final Uri archUri = buildUri.resolve('jniLibs/lib/$jniArchDir/'); final Uri targetUri = archUri.resolveUri(target); @@ -43,25 +43,25 @@ Future copyNativeCodeAssetsAndroid( } } -/// Get the [Target] for [androidArch]. -Target getNativeAndroidTarget(AndroidArch androidArch) { +/// Get the [Architecture] for [androidArch]. +Architecture getNativeAndroidArchitecture(AndroidArch androidArch) { return switch (androidArch) { - AndroidArch.armeabi_v7a => Target.androidArm, - AndroidArch.arm64_v8a => Target.androidArm64, - AndroidArch.x86 => Target.androidIA32, - AndroidArch.x86_64 => Target.androidX64, + AndroidArch.armeabi_v7a => Architecture.arm, + AndroidArch.arm64_v8a => Architecture.arm64, + AndroidArch.x86 => Architecture.ia32, + AndroidArch.x86_64 => Architecture.x64, }; } -/// Get the [AndroidArch] for [target]. -AndroidArch _getAndroidArch(Target target) { - return switch (target) { - Target.androidArm => AndroidArch.armeabi_v7a, - Target.androidArm64 => AndroidArch.arm64_v8a, - Target.androidIA32 => AndroidArch.x86, - Target.androidX64 => AndroidArch.x86_64, - Target.androidRiscv64 => throwToolExit('Android RISC-V not yet supported.'), - _ => throwToolExit('Invalid target: $target.'), +/// Get the [AndroidArch] for [architecture]. +AndroidArch _getAndroidArch(Architecture architecture) { + return switch (architecture) { + Architecture.arm => AndroidArch.armeabi_v7a, + Architecture.arm64 => AndroidArch.arm64_v8a, + Architecture.ia32 => AndroidArch.x86, + Architecture.x64 => AndroidArch.x86_64, + Architecture.riscv64 => throwToolExit('Android RISC-V not yet supported.'), + _ => throwToolExit('Invalid architecture: $architecture.'), }; } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart index 76842bcd8f..1282b76dc8 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart @@ -20,12 +20,12 @@ IOSSdk getIOSSdk(EnvironmentType environmentType) { }; } -/// Extract the [Target] from a [DarwinArch]. -Target getNativeIOSTarget(DarwinArch darwinArch) { +/// Extract the [Architecture] from a [DarwinArch]. +Architecture getNativeIOSArchitecture(DarwinArch darwinArch) { return switch (darwinArch) { - DarwinArch.armv7 => Target.iOSArm, - DarwinArch.arm64 => Target.iOSArm64, - DarwinArch.x86_64 => Target.iOSX64, + DarwinArch.armv7 => Architecture.arm, + DarwinArch.arm64 => Architecture.arm64, + DarwinArch.x86_64 => Architecture.x64, }; } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart index 700157416f..5024c1a2e0 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart @@ -13,11 +13,11 @@ import 'native_assets_host.dart'; // TODO(dcharkes): Fetch minimum MacOS version from somewhere. https://github.com/flutter/flutter/issues/145104 const int targetMacOSVersion = 13; -/// Extract the [Target] from a [DarwinArch]. -Target getNativeMacOSTarget(DarwinArch darwinArch) { +/// Extract the [Architecture] from a [DarwinArch]. +Architecture getNativeMacOSArchitecture(DarwinArch darwinArch) { return switch (darwinArch) { - DarwinArch.arm64 => Target.macOSArm64, - DarwinArch.x86_64 => Target.macOSX64, + DarwinArch.arm64 => Architecture.arm64, + DarwinArch.x86_64 => Architecture.x64, DarwinArch.armv7 => throw Exception('Unknown DarwinArch: $darwinArch.'), }; } diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart index 5c98907156..686e0007db 100644 --- a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart +++ b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart @@ -96,16 +96,16 @@ Future runFlutterSpecificDartBuild({ return const DartBuildResult.empty(); } - final build_info.BuildMode buildMode = _getBuildMode(targetPlatform, environmentDefines, flutterTester); - final List targets = flutterTester - ? [Target.current] - : _targetsForOS(targetPlatform, targetOS, environmentDefines); - final DartBuildResult result = targets.isEmpty + final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); + final List architectures = flutterTester + ? [Architecture.current] + : _architecturesForOS(targetPlatform, targetOS, environmentDefines); + final DartBuildResult result = architectures.isEmpty ? const DartBuildResult.empty() : await _runDartBuild( environmentDefines: environmentDefines, buildRunner: buildRunner, - targets: targets, + architectures: architectures, projectUri: projectUri, buildMode: _nativeAssetsBuildMode(buildMode), fileSystem: fileSystem, @@ -124,7 +124,7 @@ Future installCodeAssets({ final OS targetOS = getNativeOSFromTargetPlatfrorm(targetPlatform); final Uri buildUri = nativeAssetsBuildUri(projectUri, targetOS); final bool flutterTester = targetPlatform == build_info.TargetPlatform.tester; - final build_info.BuildMode buildMode = _getBuildMode(targetPlatform, environmentDefines, flutterTester); + final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester); final String? codesignIdentity = environmentDefines[build_info.kCodesignIdentity]; final Map assetTargetLocations = assetTargetLocationsForOS(targetOS, dartBuildResult.codeAssets, flutterTester, buildUri); @@ -711,20 +711,23 @@ Future _copyNativeCodeAssetsForOS( Future _runDartBuild({ required Map environmentDefines, required FlutterNativeAssetsBuildRunner buildRunner, - required List targets, + required List architectures, required Uri projectUri, required BuildMode buildMode, required FileSystem fileSystem, - required OS targetOS, + required OS? targetOS, }) async { final bool linkingEnabled = buildMode == BuildMode.release; - final String targetString = targets.length == 1 - ? targets.single.toString() - : targets.toList().toString(); + + final String architectureString = architectures.length == 1 + ? architectures.single.toString() + : architectures.toList().toString(); + globals.logger - .printTrace('Building native assets for $targetString $buildMode.'); + .printTrace('Building native assets for $targetOS $architectureString $buildMode.'); final List assets = []; final Set dependencies = {}; + final build_info.EnvironmentType? environmentType; if (targetOS == OS.iOS) { final String? sdkRoot = environmentDefines[build_info.kSdkRoot]; @@ -748,12 +751,12 @@ Future _runDartBuild({ final int? macOSVersion = targetOS == OS.macOS ? targetMacOSVersion : null; final IOSSdk? iOSSdk = targetOS == OS.iOS ? getIOSSdk(environmentType!) : null; - for (final Target target in targets) { + for (final Architecture architecture in architectures) { final BuildResult? buildResult = await buildRunner.build( supportedAssetTypes: [CodeAsset.type], configCreator: () => BuildConfigBuilder() ..setupCodeConfig( - targetArchitecture: target.architecture, + targetArchitecture: architecture, linkModePreference: LinkModePreference.dynamic, cCompilerConfig: cCompilerConfig, targetAndroidNdkApi: androidNdkApi, @@ -770,7 +773,7 @@ Future _runDartBuild({ applicationAssetValidator: (List assets) async => [ ...await validateCodeAssetInApplication(assets), ], - targetOS: target.os, + targetOS: targetOS!, buildMode: buildMode, workingDirectory: projectUri, includeParentEnvironment: true, @@ -787,7 +790,7 @@ Future _runDartBuild({ supportedAssetTypes: [CodeAsset.type], configCreator: () => LinkConfigBuilder() ..setupCodeConfig( - targetArchitecture: target.architecture, + targetArchitecture: architecture, linkModePreference: LinkModePreference.dynamic, cCompilerConfig: cCompilerConfig, targetAndroidNdkApi: androidNdkApi, @@ -823,7 +826,7 @@ Future _runDartBuild({ .map(CodeAsset.fromEncoded) .toList(); globals.logger - .printTrace('Building native assets for $targetString $buildMode done.'); + .printTrace('Building native assets for $targetOS $architectureString $buildMode done.'); return DartBuildResult(codeAssets, dependencies.toList()); } @@ -865,13 +868,13 @@ Future _runDartDryRunBuild({ dependencies.toList()); } -List _targetsForOS(build_info.TargetPlatform targetPlatform, +List _architecturesForOS(build_info.TargetPlatform targetPlatform, OS targetOS, Map environmentDefines) { switch (targetOS) { case OS.linux: - return [_getNativeTarget(targetPlatform)]; + return [_getNativeArchitecture(targetPlatform)]; case OS.windows: - return [_getNativeTarget(targetPlatform)]; + return [_getNativeArchitecture(targetPlatform)]; case OS.macOS: final List darwinArchs = _emptyToNull(environmentDefines[build_info.kDarwinArchs]) @@ -882,7 +885,7 @@ List _targetsForOS(build_info.TargetPlatform targetPlatform, build_info.DarwinArch.x86_64, build_info.DarwinArch.arm64 ]; - return darwinArchs.map(getNativeMacOSTarget).toList(); + return darwinArchs.map(getNativeMacOSArchitecture).toList(); case OS.android: final String? androidArchsEnvironment = environmentDefines[build_info.kAndroidArchs]; @@ -890,7 +893,7 @@ List _targetsForOS(build_info.TargetPlatform targetPlatform, targetPlatform, androidArchsEnvironment, ); - return androidArchs.map(getNativeAndroidTarget).toList(); + return androidArchs.map(getNativeAndroidArchitecture).toList(); case OS.iOS: final List iosArchs = _emptyToNull(environmentDefines[build_info.kIosArchs]) @@ -898,24 +901,22 @@ List _targetsForOS(build_info.TargetPlatform targetPlatform, .map(build_info.getIOSArchForName) .toList() ?? [build_info.DarwinArch.arm64]; - return iosArchs.map(getNativeIOSTarget).toList(); + return iosArchs.map(getNativeIOSArchitecture).toList(); default: // TODO(dacoharkes): Implement other OSes. https://github.com/flutter/flutter/issues/129757 // Write the file we claim to have in the [outputs]. - return []; + return []; } } -Target _getNativeTarget(build_info.TargetPlatform targetPlatform) { +Architecture _getNativeArchitecture(build_info.TargetPlatform targetPlatform) { switch (targetPlatform) { case build_info.TargetPlatform.linux_x64: - return Target.linuxX64; - case build_info.TargetPlatform.linux_arm64: - return Target.linuxArm64; case build_info.TargetPlatform.windows_x64: - return Target.windowsX64; + return Architecture.x64; + case build_info.TargetPlatform.linux_arm64: case build_info.TargetPlatform.windows_arm64: - return Target.windowsArm64; + return Architecture.arm64; case build_info.TargetPlatform.android: case build_info.TargetPlatform.ios: case build_info.TargetPlatform.darwin: @@ -1097,7 +1098,7 @@ const Map> _osTargets = >{ }, }; -build_info.BuildMode _getBuildMode(build_info.TargetPlatform targetPlatform, Map environmentDefines, bool isFlutterTester) { +build_info.BuildMode _getBuildMode(Map environmentDefines, bool isFlutterTester) { if (isFlutterTester) { return build_info.BuildMode.debug; } diff --git a/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart index 34bfa478b8..1a26d82d22 100644 --- a/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart @@ -111,8 +111,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for android_arm64 $buildMode.', - 'Building native assets for android_arm64 $buildMode done.', + 'Building native assets for android arm64 $buildMode.', + 'Building native assets for android arm64 $buildMode done.', ]), ); diff --git a/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart index 141703026e..8997038b65 100644 --- a/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart @@ -216,8 +216,8 @@ void main() { expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for [ios_arm64, ios_x64] $buildMode.', - 'Building native assets for [ios_arm64, ios_x64] $buildMode done.', + 'Building native assets for ios [arm64, x64] $buildMode.', + 'Building native assets for ios [arm64, x64] $buildMode done.', ]), ); expect(environment.buildDir.childFile(InstallCodeAssets.nativeAssetsFilename), exists); diff --git a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart index c674cca87e..58c151e869 100644 --- a/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart @@ -323,13 +323,13 @@ void main() { nativeAssetsFileUri: nativeAssetsFileUri , ); final String expectedArchsBeingBuilt = flutterTester - ? (isArm64 ? 'macos_arm64' : 'macos_x64') - : '[macos_arm64, macos_x64]'; + ? (isArm64 ? 'arm64' : 'x64') + : '[arm64, x64]'; expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for $expectedArchsBeingBuilt $buildMode.', - 'Building native assets for $expectedArchsBeingBuilt $buildMode done.', + 'Building native assets for macos $expectedArchsBeingBuilt $buildMode.', + 'Building native assets for macos $expectedArchsBeingBuilt $buildMode done.', ]), ); final String nativeAssetsFileContent = await fileSystem.file(nativeAssetsFileUri).readAsString(); diff --git a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart index c05c308a6a..9f9b6db1c0 100644 --- a/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart +++ b/packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart @@ -127,13 +127,16 @@ void main() { nativeAssetsFileUri: nativeAssetsFileUri, ); final String expectedOS = flutterTester - ? native_assets_cli.Target.current.toString() - : 'windows_x64'; + ? OS.current.toString() + : 'windows'; + final String expectedArch = flutterTester + ? Architecture.current.toString() + : 'x64'; expect( (globals.logger as BufferLogger).traceText, stringContainsInOrder([ - 'Building native assets for $expectedOS $buildMode.', - 'Building native assets for $expectedOS $buildMode done.', + 'Building native assets for $expectedOS $expectedArch $buildMode.', + 'Building native assets for $expectedOS $expectedArch $buildMode done.', ]), ); expect(