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');
|
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');
|
section('Archive');
|
||||||
|
|
||||||
await inDirectory(flutterProject.rootPath, () async {
|
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.
|
# 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.
|
# 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
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ Future<XcodeBuildResult> buildXcodeProject({
|
|||||||
if (buildForDevice) {
|
if (buildForDevice) {
|
||||||
buildCommands.addAll(<String>['-sdk', 'iphoneos']);
|
buildCommands.addAll(<String>['-sdk', 'iphoneos']);
|
||||||
} else {
|
} else {
|
||||||
buildCommands.addAll(<String>['-sdk', 'iphonesimulator', '-arch', 'x86_64']);
|
buildCommands.addAll(<String>['-sdk', 'iphonesimulator']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,6 +209,9 @@ List<String> _xcodeBuildSettingsLines({
|
|||||||
if (useMacOSConfig) {
|
if (useMacOSConfig) {
|
||||||
// ARM not yet supported https://github.com/flutter/flutter/issues/69221
|
// ARM not yet supported https://github.com/flutter/flutter/issues/69221
|
||||||
xcodeBuildSettings.add('EXCLUDED_ARCHS=arm64');
|
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) {
|
for (final MapEntry<String, String> config in buildInfo.toEnvironmentConfig().entries) {
|
||||||
|
@ -683,12 +683,14 @@ Information about project "Runner":
|
|||||||
|
|
||||||
final String contents = config.readAsStringSync();
|
final String contents = config.readAsStringSync();
|
||||||
expect(contents.contains('ARCHS=armv7'), isTrue);
|
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');
|
final File buildPhaseScript = fs.file('path/to/project/ios/Flutter/flutter_export_environment.sh');
|
||||||
expect(buildPhaseScript.existsSync(), isTrue);
|
expect(buildPhaseScript.existsSync(), isTrue);
|
||||||
|
|
||||||
final String buildPhaseScriptContents = buildPhaseScript.readAsStringSync();
|
final String buildPhaseScriptContents = buildPhaseScript.readAsStringSync();
|
||||||
expect(buildPhaseScriptContents.contains('ARCHS=armv7'), isTrue);
|
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 {
|
testUsingOsxContext('sets TRACK_WIDGET_CREATION=true when trackWidgetCreation is true', () async {
|
||||||
|
@ -41,10 +41,7 @@ void main() {
|
|||||||
|
|
||||||
// Config is updated if command succeeded.
|
// Config is updated if command succeeded.
|
||||||
expect(generatedConfig, exists);
|
expect(generatedConfig, exists);
|
||||||
expect(generatedConfig.readAsStringSync(), allOf(
|
expect(generatedConfig.readAsStringSync(), contains('DART_OBFUSCATION=true'));
|
||||||
contains('DART_OBFUSCATION=true'),
|
|
||||||
isNot(contains('EXCLUDED_ARCHS')),
|
|
||||||
));
|
|
||||||
|
|
||||||
// file that only exists if app was fully built.
|
// file that only exists if app was fully built.
|
||||||
final File frameworkPlist = fileSystem.file(
|
final File frameworkPlist = fileSystem.file(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user