wake-up-neo.com

Xcode 7: Ändern der Produktpaket-ID

Ich stelle Jenkins ein, um den Erstellungsprozess zu automatisieren. Für meine Bedürfnisse möchte ich insbesondere unterschiedliche Bündelkennungen festlegen können. 

Ich verwende das Xcode Jenkins-Plugin, um die Bundle-ID festzulegen:

 Jenkins Xcode plugin - Code signing & OS X keychain options

Das Problem ist, dass dies die Bundle-ID in der Info.plist-Datei und in MyTarget> General> Bundle Identifier ändert. Die Bundle-ID wird jedoch nicht unter Build-Einstellungen> Verpackung> Produkt-Bundle-ID geändert.

Das Gleiche passiert, wenn ich es manuell mache. Ich erstelle ein neues Projekt in Xcode 7. Standardmäßig sind die drei Werte:

 Info plist before  target general before  packaging

Wenn ich den Wert in der Info.plist-Datei wie folgt ändere:

 Info plist changed

Die anderen zwei Werte sind:

 target general after  packaging after

Wie Sie also den Wert in den Build-Einstellungen sehen können, ändert sich nicht. Wenn ich in Xcode bin, ändere ich diesen Wert manuell, aber wenn ich das Projekt in Jenkins baue, ist dies ein Problem. 

Hat jemand das gleiche Problem festgestellt? Wie geht ihr damit um?

Vielen Dank!

36
Luca Torella

Das gleiche Problem konfrontiert.

Der PRODUCT_BUNDLE_IDENTIFIER ist eine Variable in Ihrer Datei project.pbxproj. Ändern Sie das, was Sie möchten, und es wird sowohl in Ihrer Info.plist als auch in den Projekteinstellungen angezeigt. 

26
udit gupta

udits Antwort ist richtig. Die bewährte Methode ist, wenn Sie den Paket-ID-Wert für plist als $ PRODUCT_BUNDLE_IDENTIFIER festlegen. Verwenden Sie dann in den Build-Einstellungen andere Konfigurationen (Debug, Release .etc), um die erforderliche Bundle-ID nach Bedarf einzurichten: enter image description here

Sie benötigen kein xCode-Plugin mehr, um die Bundle-ID zu ändern, müssen jedoch die Konfiguration dort angeben.

enter image description here

25
Aoke Li

Unter this finden Sie eine einfache Lösung, um $ PRODUCT_BUNDLE_IDENTIFIER mit dem Shell-Befehl wie - zu ersetzen. 

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

Sie können Ihre Variablen mit Jenkins/Shell entsprechend übergeben. 

Ein alternativer Ansatz dazu ist die Verwendung von mod-pbxproj .

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

//bearbeiten

Alte Bundle-ID kann abgerufen werden mit 

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

Dies kann in einer Stringvariablen gespeichert und anstelle von com.example.oldbundleid verwendet werden.

11
Sarthak Singhal

Für xcode 8.x

Ändern des Anwendungsnamens unter Ziele> Ihr_Anwendungsname - Info> Hinzufügen eines neuen Eigenschaftsschlüssels führt keine vollständigen Änderungen des Anwendungsnamens überall im Projekt durch.

Wenn Sie dies tun, läuft Ihr Projekt nur in Ihrem Mac reibungslos ab (d. H. In dem System, in dem Sie diese Änderungen vorgenommen haben, da alle Eigentumsschlüssel und Identitäten in Ihrem System gespeichert werden). Wenn Sie versuchen, Ihr Projekt in einem anderen System zu verwenden, wird dieser seltsame Fehler angezeigt, den Ihr Projekt fehlt, falls Sie in Ihrem Projekt Pods verwenden.

Um dies zu überwinden, müssen Sie nehmen Sie einige Änderungen an den Build-Einstellungen vor und lassen Sie die Registerkarten Allgemein und Info unberührt.

Blättern Sie unter Ziele> Build-Einstellungen zu Verpackung.

Ändern Sie Ihr Produktname in den gewünschten Namen und Produktpaketkennung in den neuen Namen. Wenn Sie dies tun, wird automatisch der Name und die Bundle-ID Ihres Projekts in der Registerkarte Allgemein geändert.

3
user6502515

Sie können die Daten auch im Klartext anzeigen, indem Sie zu Ziele gehen und "Ebenen" auswählen, in der eine Spalte mit der Bundle-ID angezeigt wird. 

 enter image description here

0