web-dev-qa-db-ja.com

Xcode 7:製品バンドル識別子の変更

Jenkinsをセットアップして、ビルドプロセスを自動化します。特に、私のニーズのために、異なるバンドル識別子を設定できるようにしたいと思います。

Xcode Jenkinsプラグインを使用して、バンドル識別子を設定しています。

Jenkins Xcode plugin - Code signing & OS X keychain options

問題は、これによりInfo.plistファイルおよびMyTarget> General> Bundle Identifierのバンドル識別子が変更されることです。ただし、[ビルド設定]> [パッケージング]> [製品バンドル識別子]のバンドル識別子は変更されません。

手動で行うと同じことが起こります。 Xcode 7で新しいプロジェクトを作成します。デフォルトでは、3つの値は次のとおりです。

Info plist beforetarget general beforepackaging

Info.plistファイルの値を次のように変更すると:

Info plist changed

他の2つの値は次のとおりです。

target general afterpackaging after

したがって、ビルド設定で値を確認する方法は変更されていません。 Xcodeを使用している場合、その値を手動で変更しますが、Jenkinsでプロジェクトをビルドしている場合、これはbisの問題です。

誰も同じ問題に遭遇しましたか?どのように取り組みますか?

ありがとう!

41
Luca Torella

同じ問題に直面した。

PRODUCT_BUNDLE_IDENTIFIERは、project.pbxprojファイル内の変数です。これを必要なものに変更すると、Info.plistとプロジェクト設定の両方に反映されます。

29
udit gupta

監査の答え は正しい。ベストプラクティスは、plistでバンドルID値を$ PRODUCT_BUNDLE_IDENTIFIERに設定することです。次に、ビルド設定で、異なる構成(デバッグ、リリースなど)を使用して、必要に応じて異なるバンドルIDをセットアップします。 enter image description here

バンドルIDを変更するためにxCodeプラグインはもう必要ありませんが、設定を指定する必要があります。

enter image description here

26
Aoke Li

次のようなシェルコマンドを使用して$ PRODUCT_BUNDLE_IDENTIFIERを置き換える簡単なソリューションについては、 this を参照してください。

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

それに応じて、Jenkins/Shellを使用して変数を渡すことができます。

これを行う別の方法は、 mod-pbxproj を使用することです。

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

//編集

古いバンドルIDは次の方法で取得できます-

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

これは文字列変数に格納され、com.example.oldbundleidの代わりに使用できます

11
Sarthak Singhal

xcode 8.xの場合

[ターゲット]> [your_app_name-情報]>新しいプロパティキーの追加でアプリ名を変更しても、プロジェクト全体でアプリ名のすべての場所が完全に変更されるわけではありません。

これを行うと、プロジェクトはMacのみでスムーズに実行されます(つまり、すべてのプロパティキーとIDがシステムに保存されるため、これらの変更を行ったシステムで)。別のシステムでプロジェクトを使用しようとすると、プロジェクトでポッドを使用している場合にプロジェクトが見つからないという奇妙なエラーが発生します。

したがって、これを克服するために、すべてのビルド設定でいくつかの変更を行うを選択し、[全般]タブと[情報]タブはそのままにしておきます。

ターゲット>ビルド設定の下で、パッケージングまでスクロールします。

製品名を目的の名前に変更し、製品バンドル識別子を新しい名前に変更します。これを行うと、プロジェクトの表示名とバンドルIDが[全般]タブの新しい名前に自動的に変更されます。

3
user6502515

また、[ターゲット]に移動して[レベル]を選択し、バンドル識別子を含む列を表示することにより、データをプレーンテキストで表示することもできます。

enter image description here

0