2016-11-04 4 views
1

XcodeプロジェクトのInfo.plistのバンドルIDは、さまざまな形式をとります。シェルスクリプトを使用してXcodeプロジェクトでバンドルIDを見つける

  1. com.company $(PRODUCT_NAME:rfc1034identifier)。
  2. $(PRODUCT_BUNDLE_IDENTIFIER)
  3. 誰かが、デバッグのために独自の製品バンドル識別子を設計、構築するなどの種類を解放し、バンドル識別子に対して変数を書くことができ例えば$(PRODUCT_NAME:rfc1034identifier)$(someRandomVariable)

バンドル識別子を正しく読み取るシェルスクリプトを作成したいと思います。

しかし、あなたが知っているのは、シェルスクリプトしか知りません - $()の変数の値を調べる方法はわかりますが、シェルスクリプトを使って文字列にそのような変数を与えてから、それらの値を計算し、変数を変数に置き換えてストリングバックを作成します。

function getBundleIdentifier 
{ 
    cfBundleIdentifier=${PRODUCT_BUNDLE_IDENTIFIER} 
    if [ ${#cfBundleIdentifier} -lt 1 ]; then 

     SOURCE="rfc1034identifier" 
     cfBundleIdentifier=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${PROJECT_DIR}/${INFOPLIST_FILE}") 

     if echo "$cfBundleIdentifier" | grep -q "$SOURCE"; then 
      echo `eval echo $cfBundleIdentifier``eval echo ${PRODUCT_NAME:rfc1034identifier}` 
     else 
      echo `eval echo $cfBundleIdentifier` 
     fi 

    else 
     echo $cfBundleIdentifier 
    fi 
} 

これは私が書いたものですが、すべてのケースをカバーしているわけではありません。

答えて

0

それはちょうど、このコマンドを実行して、非常に簡単です:

BUNDLE_ID=`xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER` 

echo $BUNDLE_ID 
関連する問題