使用 shell 脚本在 XCode 项目中查找包标识符

pra*_*ash 1 shell xcode ios

Xcode 项目的 Info.plist 中的 Bundle 标识符可以有多种形式,例如

  1. com.company.$(PRODUCT_NAME:rfc1034identifier)
  2. $(PRODUCT_BUNDLE_IDENTIFIER)
  3. 有人可以设计自己的产品包标识符用于调试、发布等类型的构建,并根据包标识符编写一个变量,例如 com.company.$(PRODUCT_NAME:rfc1034identifier).$(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
}
Run Code Online (Sandbox Code Playgroud)

这是我写的,但它并没有涵盖所有情况。

小智 6

这很简单,只需运行以下命令:

BUNDLE_ID=`xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER`

echo $BUNDLE_ID
Run Code Online (Sandbox Code Playgroud)