Remove flutter_tools support for old AOT snapshotting (#34895)
Android now exclusively uses ELF shared libraries, and
iOS uses assembly.
diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle
index 4dfd277..dcf3d10 100644
--- a/packages/flutter_tools/gradle/flutter.gradle
+++ b/packages/flutter_tools/gradle/flutter.gradle
@@ -268,13 +268,6 @@
}
}
- private static Boolean getBuildShareLibrary(Project project) {
- if (project.hasProperty('build-shared-library')) {
- return project.property('build-shared-library').toBoolean()
- }
- return false;
- }
-
private static Boolean splitPerAbi(Project project) {
if (project.hasProperty('split-per-abi')) {
return project.property('split-per-abi').toBoolean()
@@ -645,7 +638,6 @@
args "build", "aot"
args "--suppress-analytics"
args "--quiet"
- args "--build-shared-library"
args "--target", targetPath
args "--output-dir", "${intermediateDir}"
args "--target-platform", "${targetPlatform}"
diff --git a/packages/flutter_tools/lib/src/base/build.dart b/packages/flutter_tools/lib/src/base/build.dart
index fbce754..5f6cb9d 100644
--- a/packages/flutter_tools/lib/src/base/build.dart
+++ b/packages/flutter_tools/lib/src/base/build.dart
@@ -92,7 +92,6 @@
@required String mainPath,
@required String packagesPath,
@required String outputPath,
- @required bool buildSharedLibrary,
IOSArch iosArch,
List<String> extraGenSnapshotOptions = const <String>[],
}) async {
@@ -107,10 +106,6 @@
// TODO(cbracken): replace IOSArch with TargetPlatform.ios_{armv7,arm64}.
assert(platform != TargetPlatform.ios || iosArch != null);
- // buildSharedLibrary is ignored for iOS builds.
- if (platform == TargetPlatform.ios)
- buildSharedLibrary = false;
-
final PackageMap packageMap = PackageMap(packagesPath);
final String packageMapError = packageMap.checkValid();
if (packageMapError != null) {
@@ -143,26 +138,12 @@
outputPaths.add(assembly);
genSnapshotArgs.add('--snapshot_kind=app-aot-assembly');
genSnapshotArgs.add('--assembly=$assembly');
- } else if (buildSharedLibrary) {
+ } else {
final String aotSharedLibrary = fs.path.join(outputDir.path, 'app.so');
outputPaths.add(aotSharedLibrary);
genSnapshotArgs.add('--snapshot_kind=app-aot-elf');
genSnapshotArgs.add('--elf=$aotSharedLibrary');
genSnapshotArgs.add('--strip');
- } else {
- // Blob AOT snapshot.
- final String vmSnapshotData = fs.path.join(outputDir.path, 'vm_snapshot_data');
- final String isolateSnapshotData = fs.path.join(outputDir.path, 'isolate_snapshot_data');
- final String vmSnapshotInstructions = fs.path.join(outputDir.path, 'vm_snapshot_instr');
- final String isolateSnapshotInstructions = fs.path.join(outputDir.path, 'isolate_snapshot_instr');
- outputPaths.addAll(<String>[vmSnapshotData, isolateSnapshotData, vmSnapshotInstructions, isolateSnapshotInstructions]);
- genSnapshotArgs.addAll(<String>[
- '--snapshot_kind=app-aot-blobs',
- '--vm_snapshot_data=$vmSnapshotData',
- '--isolate_snapshot_data=$isolateSnapshotData',
- '--vm_snapshot_instructions=$vmSnapshotInstructions',
- '--isolate_snapshot_instructions=$isolateSnapshotInstructions',
- ]);
}
if (platform == TargetPlatform.android_arm || iosArch == IOSArch.armv7) {
@@ -192,7 +173,6 @@
'buildMode': buildMode.toString(),
'targetPlatform': platform.toString(),
'entryPoint': mainPath,
- 'sharedLib': buildSharedLibrary.toString(),
'extraGenSnapshotOptions': extraGenSnapshotOptions.join(' '),
'engineHash': Cache.instance.engineRevision,
'buildersUsed': '${flutterProject != null ? flutterProject.hasBuilders : false}',
diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart
index 246ab6a..7dfd45b 100644
--- a/packages/flutter_tools/lib/src/commands/build_aot.dart
+++ b/packages/flutter_tools/lib/src/commands/build_aot.dart
@@ -28,11 +28,6 @@
allowed: <String>['android-arm', 'android-arm64', 'ios'],
)
..addFlag('quiet', defaultsTo: false)
- ..addFlag('build-shared-library',
- negatable: false,
- defaultsTo: false,
- help: 'Compile to a *.so file (requires NDK when building for Android).',
- )
..addFlag('report-timings',
negatable: false,
defaultsTo: false,
@@ -122,7 +117,6 @@
mainPath: mainPath,
packagesPath: PackageMap.globalPackagesPath,
outputPath: outputPath,
- buildSharedLibrary: false,
extraGenSnapshotOptions: argResults[FlutterOptions.kExtraGenSnapshotOptions],
).then<int>((int buildExitCode) {
return buildExitCode;
@@ -152,7 +146,6 @@
mainPath: mainPath,
packagesPath: PackageMap.globalPackagesPath,
outputPath: outputPath,
- buildSharedLibrary: argResults['build-shared-library'],
extraGenSnapshotOptions: argResults[FlutterOptions.kExtraGenSnapshotOptions],
);
if (snapshotExitCode != 0) {
diff --git a/packages/flutter_tools/test/base/build_test.dart b/packages/flutter_tools/test/base/build_test.dart
index 90f2865..956f271 100644
--- a/packages/flutter_tools/test/base/build_test.dart
+++ b/packages/flutter_tools/test/base/build_test.dart
@@ -135,7 +135,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
), isNot(equals(0)));
}, overrides: contextOverrides);
@@ -147,7 +146,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
), isNot(0));
}, overrides: contextOverrides);
@@ -159,7 +157,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
), isNot(0));
}, overrides: contextOverrides);
@@ -183,7 +180,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
iosArch: IOSArch.armv7,
);
@@ -221,7 +217,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
iosArch: IOSArch.arm64,
);
@@ -237,90 +232,6 @@
]);
}, overrides: contextOverrides);
- testUsingContext('builds Android arm profile AOT snapshot', () async {
- fs.file('main.dill').writeAsStringSync('binary magic');
-
- final String outputPath = fs.path.join('build', 'foo');
- fs.directory(outputPath).createSync(recursive: true);
-
- genSnapshot.outputs = <String, String>{
- fs.path.join(outputPath, 'vm_snapshot_data'): '',
- fs.path.join(outputPath, 'isolate_snapshot_data'): '',
- fs.path.join(outputPath, 'vm_snapshot_instr'): '',
- fs.path.join(outputPath, 'isolate_snapshot_instr'): '',
- };
-
- final RunResult successResult = RunResult(ProcessResult(1, 0, '', ''), <String>['command name', 'arguments...']);
- when(xcode.cc(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
- when(xcode.clang(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
-
- final int genSnapshotExitCode = await snapshotter.build(
- platform: TargetPlatform.android_arm,
- buildMode: BuildMode.profile,
- mainPath: 'main.dill',
- packagesPath: '.packages',
- outputPath: outputPath,
- buildSharedLibrary: false,
- );
-
- expect(genSnapshotExitCode, 0);
- expect(genSnapshot.callCount, 1);
- expect(genSnapshot.snapshotType.platform, TargetPlatform.android_arm);
- expect(genSnapshot.snapshotType.mode, BuildMode.profile);
- expect(genSnapshot.additionalArgs, <String>[
- '--deterministic',
- '--snapshot_kind=app-aot-blobs',
- '--vm_snapshot_data=build/foo/vm_snapshot_data',
- '--isolate_snapshot_data=build/foo/isolate_snapshot_data',
- '--vm_snapshot_instructions=build/foo/vm_snapshot_instr',
- '--isolate_snapshot_instructions=build/foo/isolate_snapshot_instr',
- '--no-sim-use-hardfp',
- '--no-use-integer-division',
- 'main.dill',
- ]);
- }, overrides: contextOverrides);
-
- testUsingContext('builds Android arm64 profile AOT snapshot', () async {
- fs.file('main.dill').writeAsStringSync('binary magic');
-
- final String outputPath = fs.path.join('build', 'foo');
- fs.directory(outputPath).createSync(recursive: true);
-
- genSnapshot.outputs = <String, String>{
- fs.path.join(outputPath, 'vm_snapshot_data'): '',
- fs.path.join(outputPath, 'isolate_snapshot_data'): '',
- fs.path.join(outputPath, 'vm_snapshot_instr'): '',
- fs.path.join(outputPath, 'isolate_snapshot_instr'): '',
- };
-
- final RunResult successResult = RunResult(ProcessResult(1, 0, '', ''), <String>['command name', 'arguments...']);
- when(xcode.cc(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
- when(xcode.clang(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
-
- final int genSnapshotExitCode = await snapshotter.build(
- platform: TargetPlatform.android_arm64,
- buildMode: BuildMode.profile,
- mainPath: 'main.dill',
- packagesPath: '.packages',
- outputPath: outputPath,
- buildSharedLibrary: false,
- );
-
- expect(genSnapshotExitCode, 0);
- expect(genSnapshot.callCount, 1);
- expect(genSnapshot.snapshotType.platform, TargetPlatform.android_arm64);
- expect(genSnapshot.snapshotType.mode, BuildMode.profile);
- expect(genSnapshot.additionalArgs, <String>[
- '--deterministic',
- '--snapshot_kind=app-aot-blobs',
- '--vm_snapshot_data=build/foo/vm_snapshot_data',
- '--isolate_snapshot_data=build/foo/isolate_snapshot_data',
- '--vm_snapshot_instructions=build/foo/vm_snapshot_instr',
- '--isolate_snapshot_instructions=build/foo/isolate_snapshot_instr',
- 'main.dill',
- ]);
- }, overrides: contextOverrides);
-
testUsingContext('builds iOS release armv7 AOT snapshot', () async {
fs.file('main.dill').writeAsStringSync('binary magic');
@@ -341,7 +252,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
iosArch: IOSArch.armv7,
);
@@ -379,7 +289,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
iosArch: IOSArch.arm64,
);
@@ -407,7 +316,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: true,
);
expect(genSnapshotExitCode, 0);
@@ -437,7 +345,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: true,
);
expect(genSnapshotExitCode, 0);
@@ -453,90 +360,6 @@
]);
}, overrides: contextOverrides);
- testUsingContext('builds Android arm release AOT snapshot', () async {
- fs.file('main.dill').writeAsStringSync('binary magic');
-
- final String outputPath = fs.path.join('build', 'foo');
- fs.directory(outputPath).createSync(recursive: true);
-
- genSnapshot.outputs = <String, String>{
- fs.path.join(outputPath, 'vm_snapshot_data'): '',
- fs.path.join(outputPath, 'isolate_snapshot_data'): '',
- fs.path.join(outputPath, 'vm_snapshot_instr'): '',
- fs.path.join(outputPath, 'isolate_snapshot_instr'): '',
- };
-
- final RunResult successResult = RunResult(ProcessResult(1, 0, '', ''), <String>['command name', 'arguments...']);
- when(xcode.cc(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
- when(xcode.clang(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
-
- final int genSnapshotExitCode = await snapshotter.build(
- platform: TargetPlatform.android_arm,
- buildMode: BuildMode.release,
- mainPath: 'main.dill',
- packagesPath: '.packages',
- outputPath: outputPath,
- buildSharedLibrary: false,
- );
-
- expect(genSnapshotExitCode, 0);
- expect(genSnapshot.callCount, 1);
- expect(genSnapshot.snapshotType.platform, TargetPlatform.android_arm);
- expect(genSnapshot.snapshotType.mode, BuildMode.release);
- expect(genSnapshot.additionalArgs, <String>[
- '--deterministic',
- '--snapshot_kind=app-aot-blobs',
- '--vm_snapshot_data=build/foo/vm_snapshot_data',
- '--isolate_snapshot_data=build/foo/isolate_snapshot_data',
- '--vm_snapshot_instructions=build/foo/vm_snapshot_instr',
- '--isolate_snapshot_instructions=build/foo/isolate_snapshot_instr',
- '--no-sim-use-hardfp',
- '--no-use-integer-division',
- 'main.dill',
- ]);
- }, overrides: contextOverrides);
-
- testUsingContext('builds Android arm64 release AOT snapshot', () async {
- fs.file('main.dill').writeAsStringSync('binary magic');
-
- final String outputPath = fs.path.join('build', 'foo');
- fs.directory(outputPath).createSync(recursive: true);
-
- genSnapshot.outputs = <String, String>{
- fs.path.join(outputPath, 'vm_snapshot_data'): '',
- fs.path.join(outputPath, 'isolate_snapshot_data'): '',
- fs.path.join(outputPath, 'vm_snapshot_instr'): '',
- fs.path.join(outputPath, 'isolate_snapshot_instr'): '',
- };
-
- final RunResult successResult = RunResult(ProcessResult(1, 0, '', ''), <String>['command name', 'arguments...']);
- when(xcode.cc(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
- when(xcode.clang(any)).thenAnswer((_) => Future<RunResult>.value(successResult));
-
- final int genSnapshotExitCode = await snapshotter.build(
- platform: TargetPlatform.android_arm64,
- buildMode: BuildMode.release,
- mainPath: 'main.dill',
- packagesPath: '.packages',
- outputPath: outputPath,
- buildSharedLibrary: false,
- );
-
- expect(genSnapshotExitCode, 0);
- expect(genSnapshot.callCount, 1);
- expect(genSnapshot.snapshotType.platform, TargetPlatform.android_arm64);
- expect(genSnapshot.snapshotType.mode, BuildMode.release);
- expect(genSnapshot.additionalArgs, <String>[
- '--deterministic',
- '--snapshot_kind=app-aot-blobs',
- '--vm_snapshot_data=build/foo/vm_snapshot_data',
- '--isolate_snapshot_data=build/foo/isolate_snapshot_data',
- '--vm_snapshot_instructions=build/foo/vm_snapshot_instr',
- '--isolate_snapshot_instructions=build/foo/isolate_snapshot_instr',
- 'main.dill',
- ]);
- }, overrides: contextOverrides);
-
testUsingContext('reports timing', () async {
fs.file('main.dill').writeAsStringSync('binary magic');
@@ -544,10 +367,7 @@
fs.directory(outputPath).createSync(recursive: true);
genSnapshot.outputs = <String, String>{
- fs.path.join(outputPath, 'vm_snapshot_data'): '',
- fs.path.join(outputPath, 'isolate_snapshot_data'): '',
- fs.path.join(outputPath, 'vm_snapshot_instr'): '',
- fs.path.join(outputPath, 'isolate_snapshot_instr'): '',
+ fs.path.join(outputPath, 'app.so'): '',
};
final RunResult successResult = RunResult(ProcessResult(1, 0, '', ''), <String>['command name', 'arguments...']);
@@ -560,7 +380,6 @@
mainPath: 'main.dill',
packagesPath: '.packages',
outputPath: outputPath,
- buildSharedLibrary: false,
);
expect(genSnapshotExitCode, 0);