Exclude arm64 from valid iOS simulators (#73458)
This commit is contained in:
parent
d3a2db22e7
commit
273630c09d
@ -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 {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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 {
|
||||
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user