web-dev-qa-db-fra.com

xcodebuild différent profil d'approvisionnement pour la dépendance cible

J'essaie de construire mon application avec xcodebuild:

xcodebuild -workspace "RG.xcworkspace" -scheme "Production" -configuration "Release" build CONFIGURATION_BUILD_DIR="${TEMP_DIR}" PROVISIONING_PROFILE="1234-5678-9098-7654-3210"

Mon schéma a deux objectifs. Une cible est l'application, l'autre est l'extension de l'application (j'ai construit une extension pour Safari). L'extension de l'application est une dépendance de la cible. Chaque cible nécessite un profil d'approvisionnement distinct. Je ne sais pas comment spécifier le PROVISIONING_PROFILE pour la dépendance. Je reçois cette erreur, comme prévu:

CodeSign error: code signing is required for product type 'App Extension' in SDK 'iOS 8.1'

StackOverflow et la page de manuel de xcodebuild ne semblent rien proposer. Est-ce que quelqu'un sait comment construire un projet avec xcodebuild qui repose sur deux profils d'approvisionnement?

27
Rey Gonzales

J'ai passé trop de temps à travailler sur cela aujourd'hui. J'étais sur le chemin du lit quand la réponse m'a frappé:

Dans les Paramètres de construction de vos cibles , vous devez définir un $VARIABLE pour le nom du profil. Pour ce faire, sélectionnez "Autre" au bas de la liste des profils. Cela ouvrira un champ de texte - choisissez un $VARIABLE différent pour chaque cible - par exemple, j'ai choisi $APP_PROFILE pour la cible de l'application conteneur et $EXTENSION_PROFILE pour ma cible de l'extension Today.

Adding a build variable variable...

Cela se traduira par quelque chose comme ce qui suit:

Profiles

Enfin, lors de la construction avec xcodebuild, spécifiez les UUID du profil comme vous l'avez fait avec PROVISIONING_PROFILE:

xcodebuild ... APP_PROFILE="85b6f019-d5e5-43a7-9e8f-e3aaed64a7e4" EXTENSION_PROFILE="e50cf605-ab63-40ad-8329-2758359ea748"

Construire à partir de XCode ne semble pas être affecté - pour autant que je sache, XCode sélectionne les profils par défaut (comme si en mode "Automatique")

Théoriquement, cela supporterait aussi plusieurs extensions.

Fonctionne pour moi avec XCode 6.3 :)

47
Max Chuquimia

Des mois plus tard ... Une solution n'impliquant pas de valeurs de paramètres dans Xcode: Dans sigh , il existe un script capable de renoncer à un fichier ipa doté de profils donnés. Ce qui suit fonctionne pour moi:

bash resign.sh Experiments-AdHocProd.ipa "iPhone Distribution: Company Pty Ltd" output.ipa -p com.company.experiments.AudioPlugin=Experiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision -p com.company.experiments=Experiments-AdHocProd.mobileprovision --verbose

où:

  • Experiments-AdHocProd.ipa est l'ipa existant
  • com.company.experiments.AudioPlugin est l'ID de l'ensemble d'extension
  • Experiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision est le profil d'extension
  • com.company.experiments est l'identifiant principal du bundle d'applications
  • Experiments-AdHocProd.mobileprovision est le profil principal de l'application

L'identifiant de bundle de chaque profil doit correspondre à celui de l'application avec laquelle il sera signé.

Quelque chose que j’ai trouvé et qui est important à noter est que si un identifiant d’ensemble a un caractère générique (dans mon cas, Experiments-AdHocProd.mobileprovision le fait), les profils avec des identifiants explicites doivent d'abord être passés à -p.


Vous pouvez également utiliser sigh pour effectuer la démission. Malheureusement, sigh --help ne dit rien sur la démission des fichiers binaires avec des extensions, cependant sigh resign --help le fait. 

1
Max Chuquimia

Dans Swift, l’architecture des fichiers Pod sera conditionnée séparément .

 1. Select pods 
 2. Targets
 3. General
 4. Edit bundle id
 5. Build Settings
 6. Code Signing
 7. Provisioning profile -> select the valid profile
 8. Code Signing Identity -> Select the respective identity from
    profile.

Répétez la même chose pour toutes les cibles.

Je suis capable de générer la construction.

0
Pebby