web-dev-qa-db-fra.com

Xcode 7: modification de l'identifiant du groupe de produits

Je configure Jenkins pour automatiser le processus de construction. En particulier, pour mes besoins, j'aimerais pouvoir définir différents identificateurs de paquet. 

J'utilise le plugin Xcode Jenkins pour définir l'identifiant du paquet:

 Jenkins Xcode plugin - Code signing & OS X keychain options

Le problème est que cela va changer l'identifiant de paquet dans le fichier Info.plist et dans MyTarget> Général> Identifiant de paquet. Mais cela ne changera pas l'identifiant de l'ensemble dans Paramètres de construction> Conditionnement> Identifiant de l'ensemble de produits.

La même chose se produit si je le fais manuellement ..__ Je crée un nouveau projet dans Xcode 7. Par défaut, les trois valeurs sont:

 Info plist before  target general before  packaging

Quand je change la valeur dans le fichier Info.plist comme ceci:

 Info plist changed

Les deux autres valeurs seront:

 target general after  packaging after

Donc, comment vous pouvez voir la valeur dans les paramètres de construction ne change pas Si je suis dans Xcode, je change cette valeur manuellement, mais si je construis le projet dans Jenkins, ceci est un problème. 

Quelqu'un a rencontré le même problème? Comment vous y prenez-vous?

Merci!

36
Luca Torella

Face au même problème.

Le PRODUCT_BUNDLE_IDENTIFIER est une variable de votre fichier project.pbxproj. Changez cela en ce que vous voulez et cela se reflétera dans votre Info.plist ainsi que dans les paramètres du projet. 

26
udit gupta

La réponse de udit est correcte. La meilleure pratique consiste à définir la valeur de l'identifiant de l'ensemble comme étant $ PRODUCT_BUNDLE_IDENTIFIER. Ensuite, dans les paramètres de construction, utilisez différentes configurations (Debug, Release .etc) pour configurer différents identifiants de bundles selon les critères requis: enter image description here

Vous n'avez plus besoin du plugin xCode pour changer l'identifiant du bundle, mais vous devez spécifier la configuration.

enter image description here

25
Aoke Li

Reportez-vous à this pour une solution simple permettant de remplacer $ PRODUCT_BUNDLE_IDENTIFIER à l’aide de la commande Shell, comme - 

sed -i '' 's/com.example.oldbundleid/com.example.newbundleid/g' project.pbxproj

Vous pouvez transmettre vos variables en conséquence en utilisant Jenkins/Shell. 

Une autre approche consiste à utiliser mod-pbxproj .

python -m mod_pbxproj -b -af PRODUCT_BUNDLE_IDENTIFIER=com.example.newbundleid -rf PRODUCT_BUNDLE_IDENTIFIER=com.example.oldbundleid project.pbxproj All

//modifier

L'ancien identifiant de paquet peut être récupéré par - 

awk -F '=' '/PRODUCT_BUNDLE_IDENTIFIER/ {print $2; exit}' project.pbxproj

Cela peut être stocké dans une variable chaîne et utilisé à la place de com.example.oldbundleid

11
Sarthak Singhal

Pour xcode 8.x

Changer le nom de l'application sous Cibles> votre_app_nom - Info> l'ajout d'une nouvelle clé de propriété n'apporte pas de modifications complètes du nom de l'application partout dans le projet.

Lorsque vous faites cela, votre projet se déroule sans problème dans votre Mac seul (c'est-à-dire, dans le système avec lequel vous avez effectué ces modifications, car toutes vos clés de propriété et vos identités seront sauvegardées dans votre système). Lorsque vous essayez d'utiliser votre projet dans un autre système, vous obtiendrez cette erreur étrange selon laquelle votre projet est manquant si vous utilisez des pods dans votre projet.

Donc, pour surmonter cela, tout ce que vous devez apporter quelques modifications dans les paramètres de construction, en laissant les onglets Général et Info intacts.

Sous Cibles> Paramètres de construction}, accédez à Conditionnement.

Remplacez votre Nom du produit par le nom souhaité & Identificateur de groupe de produits} par le nouveau. Une fois cette opération effectuée, le nom d'affichage de votre projet et son identifiant de paquet sont automatiquement remplacés par le nouveau nom de l'onglet Général.

3
user6502515

Vous pouvez également voir les données en texte brut en allant à Cibles et en sélectionnant "Niveaux" qui affichera une colonne incluant l'identificateur de paquet. 

 enter image description here

0
Ron AndKim Stengel