Skip to content

Commit e2d8121

Browse files
authored
Remove dependency on [Target] and instead operate on [Architecture] (flutter#159196)
The dart-lang/native repository contains a `Target` class that is almost not needed anymore. The remaining uses are mainly due to kernel asset mapping (which we may be able to remove in the future). This PR removes usages of that `Target` (in favor of `Architecture`) class in most places in flutter tools. This makes the code also cleaner because we no longer have an implicit assumption that a `List<Target>` all belong to the same operating system.
1 parent 15a03a4 commit e2d8121

File tree

8 files changed

+73
-69
lines changed

8 files changed

+73
-69
lines changed

packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Future<void> copyNativeCodeAssetsAndroid(
3434
final Uri source = assetMapping.key.file!;
3535
final Uri target = (assetMapping.value.path as KernelAssetAbsolutePath).uri;
3636
final AndroidArch androidArch =
37-
_getAndroidArch(assetMapping.value.target);
37+
_getAndroidArch(assetMapping.value.target.architecture);
3838
final String jniArchDir = androidArch.archName;
3939
final Uri archUri = buildUri.resolve('jniLibs/lib/$jniArchDir/');
4040
final Uri targetUri = archUri.resolveUri(target);
@@ -43,25 +43,25 @@ Future<void> copyNativeCodeAssetsAndroid(
4343
}
4444
}
4545

46-
/// Get the [Target] for [androidArch].
47-
Target getNativeAndroidTarget(AndroidArch androidArch) {
46+
/// Get the [Architecture] for [androidArch].
47+
Architecture getNativeAndroidArchitecture(AndroidArch androidArch) {
4848
return switch (androidArch) {
49-
AndroidArch.armeabi_v7a => Target.androidArm,
50-
AndroidArch.arm64_v8a => Target.androidArm64,
51-
AndroidArch.x86 => Target.androidIA32,
52-
AndroidArch.x86_64 => Target.androidX64,
49+
AndroidArch.armeabi_v7a => Architecture.arm,
50+
AndroidArch.arm64_v8a => Architecture.arm64,
51+
AndroidArch.x86 => Architecture.ia32,
52+
AndroidArch.x86_64 => Architecture.x64,
5353
};
5454
}
5555

56-
/// Get the [AndroidArch] for [target].
57-
AndroidArch _getAndroidArch(Target target) {
58-
return switch (target) {
59-
Target.androidArm => AndroidArch.armeabi_v7a,
60-
Target.androidArm64 => AndroidArch.arm64_v8a,
61-
Target.androidIA32 => AndroidArch.x86,
62-
Target.androidX64 => AndroidArch.x86_64,
63-
Target.androidRiscv64 => throwToolExit('Android RISC-V not yet supported.'),
64-
_ => throwToolExit('Invalid target: $target.'),
56+
/// Get the [AndroidArch] for [architecture].
57+
AndroidArch _getAndroidArch(Architecture architecture) {
58+
return switch (architecture) {
59+
Architecture.arm => AndroidArch.armeabi_v7a,
60+
Architecture.arm64 => AndroidArch.arm64_v8a,
61+
Architecture.ia32 => AndroidArch.x86,
62+
Architecture.x64 => AndroidArch.x86_64,
63+
Architecture.riscv64 => throwToolExit('Android RISC-V not yet supported.'),
64+
_ => throwToolExit('Invalid architecture: $architecture.'),
6565
};
6666
}
6767

packages/flutter_tools/lib/src/isolated/native_assets/ios/native_assets.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ IOSSdk getIOSSdk(EnvironmentType environmentType) {
2020
};
2121
}
2222

23-
/// Extract the [Target] from a [DarwinArch].
24-
Target getNativeIOSTarget(DarwinArch darwinArch) {
23+
/// Extract the [Architecture] from a [DarwinArch].
24+
Architecture getNativeIOSArchitecture(DarwinArch darwinArch) {
2525
return switch (darwinArch) {
26-
DarwinArch.armv7 => Target.iOSArm,
27-
DarwinArch.arm64 => Target.iOSArm64,
28-
DarwinArch.x86_64 => Target.iOSX64,
26+
DarwinArch.armv7 => Architecture.arm,
27+
DarwinArch.arm64 => Architecture.arm64,
28+
DarwinArch.x86_64 => Architecture.x64,
2929
};
3030
}
3131

packages/flutter_tools/lib/src/isolated/native_assets/macos/native_assets.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import 'native_assets_host.dart';
1313
// TODO(dcharkes): Fetch minimum MacOS version from somewhere. https://github.com/flutter/flutter/issues/145104
1414
const int targetMacOSVersion = 13;
1515

16-
/// Extract the [Target] from a [DarwinArch].
17-
Target getNativeMacOSTarget(DarwinArch darwinArch) {
16+
/// Extract the [Architecture] from a [DarwinArch].
17+
Architecture getNativeMacOSArchitecture(DarwinArch darwinArch) {
1818
return switch (darwinArch) {
19-
DarwinArch.arm64 => Target.macOSArm64,
20-
DarwinArch.x86_64 => Target.macOSX64,
19+
DarwinArch.arm64 => Architecture.arm64,
20+
DarwinArch.x86_64 => Architecture.x64,
2121
DarwinArch.armv7 => throw Exception('Unknown DarwinArch: $darwinArch.'),
2222
};
2323
}

packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,16 @@ Future<DartBuildResult> runFlutterSpecificDartBuild({
9696
return const DartBuildResult.empty();
9797
}
9898

99-
final build_info.BuildMode buildMode = _getBuildMode(targetPlatform, environmentDefines, flutterTester);
100-
final List<Target> targets = flutterTester
101-
? <Target>[Target.current]
102-
: _targetsForOS(targetPlatform, targetOS, environmentDefines);
103-
final DartBuildResult result = targets.isEmpty
99+
final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester);
100+
final List<Architecture> architectures = flutterTester
101+
? <Architecture>[Architecture.current]
102+
: _architecturesForOS(targetPlatform, targetOS, environmentDefines);
103+
final DartBuildResult result = architectures.isEmpty
104104
? const DartBuildResult.empty()
105105
: await _runDartBuild(
106106
environmentDefines: environmentDefines,
107107
buildRunner: buildRunner,
108-
targets: targets,
108+
architectures: architectures,
109109
projectUri: projectUri,
110110
buildMode: _nativeAssetsBuildMode(buildMode),
111111
fileSystem: fileSystem,
@@ -124,7 +124,7 @@ Future<void> installCodeAssets({
124124
final OS targetOS = getNativeOSFromTargetPlatfrorm(targetPlatform);
125125
final Uri buildUri = nativeAssetsBuildUri(projectUri, targetOS);
126126
final bool flutterTester = targetPlatform == build_info.TargetPlatform.tester;
127-
final build_info.BuildMode buildMode = _getBuildMode(targetPlatform, environmentDefines, flutterTester);
127+
final build_info.BuildMode buildMode = _getBuildMode(environmentDefines, flutterTester);
128128

129129
final String? codesignIdentity = environmentDefines[build_info.kCodesignIdentity];
130130
final Map<CodeAsset, KernelAsset> assetTargetLocations = assetTargetLocationsForOS(targetOS, dartBuildResult.codeAssets, flutterTester, buildUri);
@@ -711,20 +711,23 @@ Future<void> _copyNativeCodeAssetsForOS(
711711
Future<DartBuildResult> _runDartBuild({
712712
required Map<String, String> environmentDefines,
713713
required FlutterNativeAssetsBuildRunner buildRunner,
714-
required List<Target> targets,
714+
required List<Architecture> architectures,
715715
required Uri projectUri,
716716
required BuildMode buildMode,
717717
required FileSystem fileSystem,
718-
required OS targetOS,
718+
required OS? targetOS,
719719
}) async {
720720
final bool linkingEnabled = buildMode == BuildMode.release;
721-
final String targetString = targets.length == 1
722-
? targets.single.toString()
723-
: targets.toList().toString();
721+
722+
final String architectureString = architectures.length == 1
723+
? architectures.single.toString()
724+
: architectures.toList().toString();
725+
724726
globals.logger
725-
.printTrace('Building native assets for $targetString $buildMode.');
727+
.printTrace('Building native assets for $targetOS $architectureString $buildMode.');
726728
final List<EncodedAsset> assets = <EncodedAsset>[];
727729
final Set<Uri> dependencies = <Uri>{};
730+
728731
final build_info.EnvironmentType? environmentType;
729732
if (targetOS == OS.iOS) {
730733
final String? sdkRoot = environmentDefines[build_info.kSdkRoot];
@@ -748,12 +751,12 @@ Future<DartBuildResult> _runDartBuild({
748751
final int? macOSVersion = targetOS == OS.macOS ? targetMacOSVersion : null;
749752
final IOSSdk? iOSSdk = targetOS == OS.iOS ? getIOSSdk(environmentType!) : null;
750753

751-
for (final Target target in targets) {
754+
for (final Architecture architecture in architectures) {
752755
final BuildResult? buildResult = await buildRunner.build(
753756
supportedAssetTypes: <String>[CodeAsset.type],
754757
configCreator: () => BuildConfigBuilder()
755758
..setupCodeConfig(
756-
targetArchitecture: target.architecture,
759+
targetArchitecture: architecture,
757760
linkModePreference: LinkModePreference.dynamic,
758761
cCompilerConfig: cCompilerConfig,
759762
targetAndroidNdkApi: androidNdkApi,
@@ -770,7 +773,7 @@ Future<DartBuildResult> _runDartBuild({
770773
applicationAssetValidator: (List<EncodedAsset> assets) async => <String>[
771774
...await validateCodeAssetInApplication(assets),
772775
],
773-
targetOS: target.os,
776+
targetOS: targetOS!,
774777
buildMode: buildMode,
775778
workingDirectory: projectUri,
776779
includeParentEnvironment: true,
@@ -787,7 +790,7 @@ Future<DartBuildResult> _runDartBuild({
787790
supportedAssetTypes: <String>[CodeAsset.type],
788791
configCreator: () => LinkConfigBuilder()
789792
..setupCodeConfig(
790-
targetArchitecture: target.architecture,
793+
targetArchitecture: architecture,
791794
linkModePreference: LinkModePreference.dynamic,
792795
cCompilerConfig: cCompilerConfig,
793796
targetAndroidNdkApi: androidNdkApi,
@@ -823,7 +826,7 @@ Future<DartBuildResult> _runDartBuild({
823826
.map<CodeAsset>(CodeAsset.fromEncoded)
824827
.toList();
825828
globals.logger
826-
.printTrace('Building native assets for $targetString $buildMode done.');
829+
.printTrace('Building native assets for $targetOS $architectureString $buildMode done.');
827830
return DartBuildResult(codeAssets, dependencies.toList());
828831
}
829832

@@ -865,13 +868,13 @@ Future<DartBuildResult> _runDartDryRunBuild({
865868
dependencies.toList());
866869
}
867870

868-
List<Target> _targetsForOS(build_info.TargetPlatform targetPlatform,
871+
List<Architecture> _architecturesForOS(build_info.TargetPlatform targetPlatform,
869872
OS targetOS, Map<String, String> environmentDefines) {
870873
switch (targetOS) {
871874
case OS.linux:
872-
return <Target>[_getNativeTarget(targetPlatform)];
875+
return <Architecture>[_getNativeArchitecture(targetPlatform)];
873876
case OS.windows:
874-
return <Target>[_getNativeTarget(targetPlatform)];
877+
return <Architecture>[_getNativeArchitecture(targetPlatform)];
875878
case OS.macOS:
876879
final List<build_info.DarwinArch> darwinArchs =
877880
_emptyToNull(environmentDefines[build_info.kDarwinArchs])
@@ -882,40 +885,38 @@ List<Target> _targetsForOS(build_info.TargetPlatform targetPlatform,
882885
build_info.DarwinArch.x86_64,
883886
build_info.DarwinArch.arm64
884887
];
885-
return darwinArchs.map(getNativeMacOSTarget).toList();
888+
return darwinArchs.map(getNativeMacOSArchitecture).toList();
886889
case OS.android:
887890
final String? androidArchsEnvironment =
888891
environmentDefines[build_info.kAndroidArchs];
889892
final List<build_info.AndroidArch> androidArchs = _androidArchs(
890893
targetPlatform,
891894
androidArchsEnvironment,
892895
);
893-
return androidArchs.map(getNativeAndroidTarget).toList();
896+
return androidArchs.map(getNativeAndroidArchitecture).toList();
894897
case OS.iOS:
895898
final List<build_info.DarwinArch> iosArchs =
896899
_emptyToNull(environmentDefines[build_info.kIosArchs])
897900
?.split(' ')
898901
.map(build_info.getIOSArchForName)
899902
.toList() ??
900903
<build_info.DarwinArch>[build_info.DarwinArch.arm64];
901-
return iosArchs.map(getNativeIOSTarget).toList();
904+
return iosArchs.map(getNativeIOSArchitecture).toList();
902905
default:
903906
// TODO(dacoharkes): Implement other OSes. https://github.com/flutter/flutter/issues/129757
904907
// Write the file we claim to have in the [outputs].
905-
return <Target>[];
908+
return <Architecture>[];
906909
}
907910
}
908911

909-
Target _getNativeTarget(build_info.TargetPlatform targetPlatform) {
912+
Architecture _getNativeArchitecture(build_info.TargetPlatform targetPlatform) {
910913
switch (targetPlatform) {
911914
case build_info.TargetPlatform.linux_x64:
912-
return Target.linuxX64;
913-
case build_info.TargetPlatform.linux_arm64:
914-
return Target.linuxArm64;
915915
case build_info.TargetPlatform.windows_x64:
916-
return Target.windowsX64;
916+
return Architecture.x64;
917+
case build_info.TargetPlatform.linux_arm64:
917918
case build_info.TargetPlatform.windows_arm64:
918-
return Target.windowsArm64;
919+
return Architecture.arm64;
919920
case build_info.TargetPlatform.android:
920921
case build_info.TargetPlatform.ios:
921922
case build_info.TargetPlatform.darwin:
@@ -1097,7 +1098,7 @@ const Map<OS, Set<Architecture>> _osTargets = <OS, Set<Architecture>>{
10971098
},
10981099
};
10991100

1100-
build_info.BuildMode _getBuildMode(build_info.TargetPlatform targetPlatform, Map<String, String> environmentDefines, bool isFlutterTester) {
1101+
build_info.BuildMode _getBuildMode(Map<String, String> environmentDefines, bool isFlutterTester) {
11011102
if (isFlutterTester) {
11021103
return build_info.BuildMode.debug;
11031104
}

packages/flutter_tools/test/general.shard/isolated/android/native_assets_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ void main() {
111111
expect(
112112
(globals.logger as BufferLogger).traceText,
113113
stringContainsInOrder(<String>[
114-
'Building native assets for android_arm64 $buildMode.',
115-
'Building native assets for android_arm64 $buildMode done.',
114+
'Building native assets for android arm64 $buildMode.',
115+
'Building native assets for android arm64 $buildMode done.',
116116
]),
117117
);
118118

packages/flutter_tools/test/general.shard/isolated/ios/native_assets_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,8 @@ void main() {
216216
expect(
217217
(globals.logger as BufferLogger).traceText,
218218
stringContainsInOrder(<String>[
219-
'Building native assets for [ios_arm64, ios_x64] $buildMode.',
220-
'Building native assets for [ios_arm64, ios_x64] $buildMode done.',
219+
'Building native assets for ios [arm64, x64] $buildMode.',
220+
'Building native assets for ios [arm64, x64] $buildMode done.',
221221
]),
222222
);
223223
expect(environment.buildDir.childFile(InstallCodeAssets.nativeAssetsFilename), exists);

packages/flutter_tools/test/general.shard/isolated/macos/native_assets_test.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,13 +323,13 @@ void main() {
323323
nativeAssetsFileUri: nativeAssetsFileUri ,
324324
);
325325
final String expectedArchsBeingBuilt = flutterTester
326-
? (isArm64 ? 'macos_arm64' : 'macos_x64')
327-
: '[macos_arm64, macos_x64]';
326+
? (isArm64 ? 'arm64' : 'x64')
327+
: '[arm64, x64]';
328328
expect(
329329
(globals.logger as BufferLogger).traceText,
330330
stringContainsInOrder(<String>[
331-
'Building native assets for $expectedArchsBeingBuilt $buildMode.',
332-
'Building native assets for $expectedArchsBeingBuilt $buildMode done.',
331+
'Building native assets for macos $expectedArchsBeingBuilt $buildMode.',
332+
'Building native assets for macos $expectedArchsBeingBuilt $buildMode done.',
333333
]),
334334
);
335335
final String nativeAssetsFileContent = await fileSystem.file(nativeAssetsFileUri).readAsString();

packages/flutter_tools/test/general.shard/isolated/windows/native_assets_test.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,16 @@ void main() {
127127
nativeAssetsFileUri: nativeAssetsFileUri,
128128
);
129129
final String expectedOS = flutterTester
130-
? native_assets_cli.Target.current.toString()
131-
: 'windows_x64';
130+
? OS.current.toString()
131+
: 'windows';
132+
final String expectedArch = flutterTester
133+
? Architecture.current.toString()
134+
: 'x64';
132135
expect(
133136
(globals.logger as BufferLogger).traceText,
134137
stringContainsInOrder(<String>[
135-
'Building native assets for $expectedOS $buildMode.',
136-
'Building native assets for $expectedOS $buildMode done.',
138+
'Building native assets for $expectedOS $expectedArch $buildMode.',
139+
'Building native assets for $expectedOS $expectedArch $buildMode done.',
137140
]),
138141
);
139142
expect(

0 commit comments

Comments
 (0)