2016-11-04 78 views
1

Xcode項目的Info.plist中的包標識符可能有多種形式,例如,使用shell腳本在XCode項目中查找包標識符

  1. com.company $(PRODUCT_NAME:rfc1034identifier)
  2. $(PRODUCT_BUNDLE_IDENTIFIER)
  3. 有人可以設計自己的產品捆綁標識符調試,發佈版本的等等類型和編寫針對捆綁標識符的變量,例如$(PRODUCTRUDOMVIDiable)。$(someRandomVariable)

我想寫一個shell腳本,它只是正確讀取包標識符。但是,如果你只知道shell腳本 - 我知道,如何找出$()中變量的值,但想要一個shell腳本應該給我所有這樣的變量在字符串中,然後我將代碼找出他們的值,發佈後我將創建字符串與變量替換爲值。

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