Let iOS auto-signing tool handle Googler scenario (#16010) * Let iOS auto-signing tool handle Googler scenario * Forgot to update tests
diff --git a/packages/flutter_tools/lib/src/ios/code_signing.dart b/packages/flutter_tools/lib/src/ios/code_signing.dart index 54f2289..2e1d5c2 100644 --- a/packages/flutter_tools/lib/src/ios/code_signing.dart +++ b/packages/flutter_tools/lib/src/ios/code_signing.dart
@@ -83,9 +83,15 @@ /// signing identities in the user's keychain prompting a choice if multiple /// are found. /// +/// Returns a set of build configuration settings that uses the selected +/// signing identities. +/// /// Will return null if none are found, if the user cancels or if the Xcode /// project has a development team set in the project's build settings. -Future<String> getCodeSigningIdentityDevelopmentTeam({BuildableIOSApp iosApp, bool usesTerminalUi: true}) async{ +Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({ + BuildableIOSApp iosApp, + bool usesTerminalUi: true +}) async{ if (iosApp.buildSettings == null) return null; @@ -154,9 +160,19 @@ if (await opensslProcess.exitCode != 0) return null; - return _certificateOrganizationalUnitExtractionPattern + final Map<String, String> signingConfigs = <String, String> { + 'DEVELOPMENT_TEAM': _certificateOrganizationalUnitExtractionPattern .firstMatch(opensslOutput) - ?.group(1); + ?.group(1), + }; + + if (opensslOutput.contains('iPhone Developer: Google Development')) { + signingConfigs['PROVISIONING_PROFILE_SPECIFIER'] = 'Google Development'; + signingConfigs['CODE_SIGN_STYLE'] = 'Manual'; + printStatus("Manually selecting Google's mobile provisioning profile (see go/google-flutter-signing)."); + } + + return signingConfigs; } Future<String> _chooseSigningIdentity(List<String> validCodeSigningIdentities, bool usesTerminalUi) async {
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index 7356716..ff3d9d1 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -225,9 +225,9 @@ return new XcodeBuildResult(success: false); } - String developmentTeam; + Map<String, String> autoSigningConfigs; if (codesign && buildForDevice) - developmentTeam = await getCodeSigningIdentityDevelopmentTeam(iosApp: app, usesTerminalUi: usesTerminalUi); + autoSigningConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app, usesTerminalUi: usesTerminalUi); // Before the build, all service definitions must be updated and the dylibs // copied over to a location that is suitable for Xcodebuild to find them. @@ -287,8 +287,10 @@ buildCommands.add('-quiet'); } - if (developmentTeam != null) { - buildCommands.add('DEVELOPMENT_TEAM=$developmentTeam'); + if (autoSigningConfigs != null) { + for (MapEntry<String, String> signingConfig in autoSigningConfigs.entries) { + buildCommands.add('${signingConfig.key}=${signingConfig.value}'); + } buildCommands.add('-allowProvisioningUpdates'); buildCommands.add('-allowProvisioningDeviceRegistration'); }