2016-11-04 87 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