Exclude arm64 from valid iOS simulators (#73458)

This commit is contained in:
Jenn Magder 2021-01-07 13:03:52 -08:00 committed by GitHub
parent d3a2db22e7
commit 273630c09d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 47 additions and 5 deletions

View File

@ -182,6 +182,43 @@ Future<void> main() async {
await flutter('clean');
});
section('Build app for simulator with all available architectures');
// Apple Silicon ARM simulators not yet supported.
// Prove (on Xcode 12) Flutter knows to exclude this architecture.
await inDirectory(flutterProject.rootPath, () async {
await flutter('build', options: <String>[
'ios',
'--simulator',
'--no-codesign',
'--verbose',
], environment: <String, String>{
'FLUTTER_XCODE_ONLY_ACTIVE_ARCH': 'NO'
});
});
final String simulatorAppFrameworkBinary = path.join(
flutterProject.rootPath,
'build',
'ios',
'iphonesimulator',
'Runner.app',
'Frameworks',
'App.framework',
'App',
);
final String archs = await fileType(simulatorAppFrameworkBinary);
if (!archs.contains('Mach-O 64-bit dynamically linked shared library x86_64')) {
throw TaskResult.failure('Unexpected architecture');
}
section('Clean build');
await inDirectory(flutterProject.rootPath, () async {
await flutter('clean');
});
section('Archive');
await inDirectory(flutterProject.rootPath, () async {

View File

@ -68,6 +68,9 @@ def flutter_additional_ios_build_settings(target)
# When deleted, the deployment version will inherit from the higher version derived from the 'Runner' target.
# If the pod only supports a higher version, do not delete to correctly produce an error.
build_configuration.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' if inherit_deployment_target
# Apple Silicon ARM simulators not yet supported.
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'
end
end

View File

@ -250,7 +250,7 @@ Future<XcodeBuildResult> buildXcodeProject({
if (buildForDevice) {
buildCommands.addAll(<String>['-sdk', 'iphoneos']);
} else {
buildCommands.addAll(<String>['-sdk', 'iphonesimulator', '-arch', 'x86_64']);
buildCommands.addAll(<String>['-sdk', 'iphonesimulator']);
}
}

View File

@ -209,6 +209,9 @@ List<String> _xcodeBuildSettingsLines({
if (useMacOSConfig) {
// ARM not yet supported https://github.com/flutter/flutter/issues/69221
xcodeBuildSettings.add('EXCLUDED_ARCHS=arm64');
} else {
// Apple Silicon ARM simulators not yet supported.
xcodeBuildSettings.add('EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386');
}
for (final MapEntry<String, String> config in buildInfo.toEnvironmentConfig().entries) {

View File

@ -683,12 +683,14 @@ Information about project "Runner":
final String contents = config.readAsStringSync();
expect(contents.contains('ARCHS=armv7'), isTrue);
expect(contents.contains('EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386'), isTrue);
final File buildPhaseScript = fs.file('path/to/project/ios/Flutter/flutter_export_environment.sh');
expect(buildPhaseScript.existsSync(), isTrue);
final String buildPhaseScriptContents = buildPhaseScript.readAsStringSync();
expect(buildPhaseScriptContents.contains('ARCHS=armv7'), isTrue);
expect(buildPhaseScriptContents.contains('"EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386"'), isTrue);
});
testUsingOsxContext('sets TRACK_WIDGET_CREATION=true when trackWidgetCreation is true', () async {

View File

@ -41,10 +41,7 @@ void main() {
// Config is updated if command succeeded.
expect(generatedConfig, exists);
expect(generatedConfig.readAsStringSync(), allOf(
contains('DART_OBFUSCATION=true'),
isNot(contains('EXCLUDED_ARCHS')),
));
expect(generatedConfig.readAsStringSync(), contains('DART_OBFUSCATION=true'));
// file that only exists if app was fully built.
final File frameworkPlist = fileSystem.file(