Línea de command xcodebuild: aprobar ID de DevelopmentTeam para el propósito de firma de código

Mi aplicación tiene un bundleID para la distribución de App Store. La aplicación también tiene una pequeña variante para la distribución empresarial, por lo tanto, con otro bundleID. La compilation automática utiliza la siguiente línea de command para establecer bundleID y elegir la identificación de firma correcta:

xcodebuild -project XYZ.xcodeproj -target XYZ -sdk "iphoneos" -configuration "Debug" BUNDLE_IDENTIFIER=<bundleID_1_or_2> CODE_SIGN_IDENTITY="<identify_1_or_2" build 

Esta compilation automática ha funcionado muy bien, hasta hace poco time habilité la capacidad iCloud. Ahora Xcode agrega automáticamente lo siguiente a project.pbxproj:

 TargetAttributes = { QWERTY1234567890123456 = { DevelopmentTeam = XYZ123456; SystemCapabilities = { com.apple.iCloud = { enabled = 1; }; }; }; }; 

Observe la adición de un "DevelopmentTeam = XYZ123456" codificado; para las dos comstackciones, la ID de DevelopmentTeam es diferente. ¿Cómo automatizar esto? Una solución más fácil es tener un script para modificar project.pbxproj antes de invocar xcodebuild, pero no soy fanático de esa solución. La siguiente mejor es crear una nueva "Configuración definida por el usuario", pasando así por la línea de command, pero no pude descubrir cómo asociar la configuration definida por el usuario con esa ID de DevelopmentTeam incrustada allí dentro de project.pbxproj.

Pudimos tratar múltiples ID de DevelopmentTeam utilizando la utilidad suspiro , que proporciona automation para los perfiles de aprovisionamiento. Lo usamos como parte del set de herramientas Fastlane .

 sigh --team_id <DevelopmentTeamID> 

O como parte de una automation Fastlane ( Fastfile ):

 sigh(team_id: "<DevelopmentTeamID>") 

En Xcode 8 esto se agregó como la configuration de desarrollo DEVELOPMENT_TEAM . Puede pasar como un argumento de línea de command al igual que otras configuraciones:

 xcodebuild -sdk "iphoneos" -project Foo.xcodeproj -configuration "Debug" ... DEVELOPMENT_TEAM=XYZ123456 

Vea con más detalle los cambios de firma de código de Xcode 8: https://pewpewthespells.com/blog/migrating_code_signing.html

Terminamos creando otra configuration de compilation tipo debugging. En nuestro caso se llama "Ad-hoc" sin una razón particular. Nuestro server de compilation utiliza un certificate empresarial para las comstackciones de testing, por lo que solo cambiamos esa configuration de compilation para tener el certificate correcto y los parameters del equipo, y el desarrollo "depurar" ya no es importante. Sin embargo, una cosa que es desafiante es que algunos cocoapods (fbtweaks) no se dan count de que puede estar usando una configuration que no se llama "Debug" para crear comstackciones de debugging, por lo que hay algunos aros que deben saltarse para hacer que funciona correctamente