Respect plugin excluded iOS architectures (#86905)

This commit is contained in:
Jenn Magder 2021-07-23 13:56:03 -07:00 committed by GitHub
parent 8fcace1d6c
commit 6881fca7b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 10 deletions

View File

@ -167,14 +167,19 @@ class _FlutterProject {
}
final String podsProjectContent = podsProject.readAsStringSync();
// This may be a bit brittle, IPHONEOS_DEPLOYMENT_TARGET appears in the
// Pods Xcode project file 6 times. If this number changes, make sure
// it's not a regression in the IPHONEOS_DEPLOYMENT_TARGET override logic.
// The plugintest target should not have IPHONEOS_DEPLOYMENT_TARGET set.
// See _reduceDarwinPluginMinimumVersion for details.
final int iosDeploymentTargetCount = 'IPHONEOS_DEPLOYMENT_TARGET'.allMatches(podsProjectContent).length;
if (target == 'ios' && iosDeploymentTargetCount != 9) {
throw TaskResult.failure('plugintest may contain IPHONEOS_DEPLOYMENT_TARGET, $iosDeploymentTargetCount found');
if (target == 'ios') {
// This may be a bit brittle, IPHONEOS_DEPLOYMENT_TARGET appears in the
// Pods Xcode project file 6 times. If this number changes, make sure
// it's not a regression in the IPHONEOS_DEPLOYMENT_TARGET override logic.
// The plugintest target should not have IPHONEOS_DEPLOYMENT_TARGET set.
// See _reduceDarwinPluginMinimumVersion for details.
final int iosDeploymentTargetCount = 'IPHONEOS_DEPLOYMENT_TARGET'.allMatches(podsProjectContent).length;
if (iosDeploymentTargetCount != 9) {
throw TaskResult.failure('plugintest may contain IPHONEOS_DEPLOYMENT_TARGET, $iosDeploymentTargetCount found');
}
if (!podsProjectContent.contains(r'"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";')) {
throw TaskResult.failure(r'EXCLUDED_ARCHS is not "$(inherited) i386"');
}
}
// Same for macOS, but 12.

View File

@ -74,7 +74,7 @@ def flutter_additional_ios_build_settings(target)
# Override legacy Xcode 11 style VALID_ARCHS[sdk=iphonesimulator*]=x86_64 and prefer Xcode 12 EXCLUDED_ARCHS.
build_configuration.build_settings['VALID_ARCHS[sdk=iphonesimulator*]'] = '$(ARCHS_STANDARD)'
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386'
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = '$(inherited) i386'
end
end

View File

@ -225,7 +225,7 @@ void main() {
'FLUTTER_XCODE_ONLY_ACTIVE_ARCH': 'NO',
},
);
// This test case would fail if arm64 or i386 were not excluded.
// This test case would fail if arm64 or x86_64 simulators could not build.
expect(buildSimulator.exitCode, 0);
final File simulatorAppFrameworkBinary = fileSystem.file(fileSystem.path.join(
@ -243,6 +243,7 @@ void main() {
<String>['file', simulatorAppFrameworkBinary.path],
);
expect(archs.stdout, contains('Mach-O 64-bit dynamically linked shared library x86_64'));
expect(archs.stdout, contains('Mach-O 64-bit dynamically linked shared library arm64'));
});
}, skip: !platform.isMacOS, timeout: const Timeout(Duration(minutes: 5))
);