在我们的项目中,我们从git标记等派生发布版本,然后使用shell脚本将其写入构建文件夹的Info.plist,如下所示:
GIT_RELEASE_VERSION=$(some git command) defaults write "${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH%.*}" "CFBundleShortVersionString" "${GIT_RELEASE_VERSION#*v}"
这对于所有以前的Xcode版本都很有效,但是在Xcode 10的New系统中,这并没有真正更新info.list文件中的info.list。但是,Xcode 10‘的遗产构建系统正确地更新了该值。
我在脚本中添加了一些回声,并比较了New和Legacy系统上的构建日志,看不到任何不同之处:
echo "git release version:" ${GIT_RELEASE_VERSION} echo "info path:" ${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH%.*} echo "grv:" "${GIT_RELEASE_VERSION#*v}"
不确定是否有人在新构建系统中遇到了类似的问题?
发布于 2018-10-22 19:04:43
问题似乎是,在Xcode创建Info.plist之前,有时您的Info.plist会执行。如果希望确保脚本阶段在特定步骤之后运行,则需要使用输入来标记依赖项。
例如,添加:
$(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)
作为脚本阶段的输入,应该强制执行您正在寻找的顺序: Xcode将创建Info.plist,之后的某个时候,脚本将执行和修改Info.plist。
发布于 2019-12-10 06:40:11
(Xcode 11.2)
Process .../Info.plist步骤之前运行:

Product > Scheme > Edit Scheme... > Build > Post-actions

BUILT_PRODUCTS_DIR或INFOPLIST_PATH),请确保从选择中更改提供的构建设置。Info.plist),则需要重新签名该应用程序。将此添加到post生成步骤:export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
/usr/bin/codesign --force --sign - --entitlements "${TARGET_TEMP_DIR}/${FULL_PRODUCT_NAME}.xcent" --timestamp=none "${CODESIGNING_FOLDER_PATH}"发布于 2018-10-09 19:38:08
同样的问题..。其中一项工作是清理,然后执行完整的构建。
Xcode 10中的新构建系统在完整构建和增量构建中以不同的方式运行流程Info.plist步骤:
实际问题是作为构建步骤运行的脚本&更新处理过的Info.plist文件需要始终在文件处理后但在签名之前运行。
https://stackoverflow.com/questions/52524275
复制相似问题