通过Xcode中的运行脚本将bundle显示名称设置为版本字符串



如果满足特殊条件,我将尝试通过Xcode运行脚本更改捆绑包显示名称。到目前为止,我有这个:

if [ MY_CONDITION ]; then
BUNDLE_DISPLAY_NAME = ${BUNDLE_VERSION};
fi

我收到这个错误

第3行:BUNDLE_DISPLAY_NAME:找不到命令

我在哪里查找这些奇特的变量名?我想用脚本做的事情可能吗?

删除=符号(BUNDLE_DISPLAY_NAME=${BUNDLE_VERSION};)周围的空格,否则bash将BUNDLE_DISPLAY_NAME解释为单独的命令,并尝试执行BUNDLE_DISPLAY_NAME,但未找到此命令。但是bash将BUNDLE_DISPLAY_NAME=${BUNDLE_VERSION}解释为用变量BUNDLE_DISPLAY_NAME分配值${BUNDLE_VERSION}的操作。

为了清楚起见并正式将@trojanfoe的评论放在答案中,BUNDLE_DISPLAY_NAME不是一个构建变量。它是目标的Info.plist中的一个值。您需要在那里更改它。

为了保持源代码管理的清洁,您应该在复制捆绑包资源阶段之后放入以下脚本

if [ MY_CONDITION ]; then
  newDisplayName="${BUNDLE_VERSION}"
  command="Set :CFBundleDisplayName $newDisplayName"
  echo "Updating display name in app package to "$newDisplayName""
  /usr/libexec/PlistBuddy -c "$command" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
  filepath="${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
  if [ -f "$filepath" ]; then
    echo "Updating display name in dsym to "$newDisplayName""
    /usr/libexec/PlistBuddy -c "$command" "$filepath"
  fi;
fi

最新更新