iOS aot assembly requires SDK root (#71094)
diff --git a/packages/flutter_tools/lib/src/build_system/targets/ios.dart b/packages/flutter_tools/lib/src/build_system/targets/ios.dart
index eba8cdc..156126e 100644
--- a/packages/flutter_tools/lib/src/build_system/targets/ios.dart
+++ b/packages/flutter_tools/lib/src/build_system/targets/ios.dart
@@ -47,6 +47,10 @@
if (environment.defines[kTargetPlatform] == null) {
throw MissingDefineException(kTargetPlatform, 'aot_assembly');
}
+ if (environment.defines[kSdkRoot] == null) {
+ throw MissingDefineException(kSdkRoot, 'aot_assembly');
+ }
+
final List<String> extraGenSnapshotOptions = decodeDartDefines(environment.defines, kExtraGenSnapshotOptions);
final bool bitcode = environment.defines[kBitcodeFlag] == 'true';
final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]);
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart
index c553b3b..7a9590f 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart
@@ -187,6 +187,7 @@
fileSystem.currentDirectory,
defines: <String, String>{
kTargetPlatform: 'ios',
+ kSdkRoot: 'path/to/sdk',
},
processManager: processManager,
artifacts: artifacts,
@@ -209,6 +210,34 @@
Platform: () => macPlatform,
});
+ testUsingContext('AotAssemblyRelease throws exception if sdk root is missing', () async {
+ final FileSystem fileSystem = MemoryFileSystem.test();
+ final Environment environment = Environment.test(
+ fileSystem.currentDirectory,
+ defines: <String, String>{
+ kTargetPlatform: 'ios',
+ },
+ processManager: processManager,
+ artifacts: artifacts,
+ logger: logger,
+ fileSystem: fileSystem,
+ );
+ environment.defines[kBuildMode] = 'release';
+ environment.defines[kIosArchs] = 'x86_64';
+
+ expect(const AotAssemblyRelease().build(environment), throwsA(isA<Exception>()
+ .having(
+ (Exception exception) => exception.toString(),
+ 'description',
+ contains('required define SdkRoot but it was not provided'),
+ )
+ ));
+ }, overrides: <Type, Generator>{
+ FileSystem: () => fileSystem,
+ ProcessManager: () => processManager,
+ Platform: () => macPlatform,
+ });
+
testWithoutContext('Unpack copies Flutter.framework', () async {
final FileSystem fileSystem = MemoryFileSystem.test();
final Directory outputDir = fileSystem.directory('output');