代码之家  ›  专栏  ›  技术社区  ›  CodeBrew

Xcode 10构建阶段外壳脚本

  •  3
  • CodeBrew  · 技术社区  · 7 年前

    在我们的项目中,我们从git tag等派生出发布版本,然后使用shell脚本将其写入内置文件夹的Info.plist中,如:

    GIT_RELEASE_VERSION=$(some git command) defaults write "${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH%.*}" "CFBundleShortVersionString" "${GIT_RELEASE_VERSION#*v}"

    这对于所有以前的Xcode版本都很有效,但是在Xcode 10的新构建系统中,这实际上无法更新info.list文件中的CFBundleShortVersionString。不过,该值是用Xcode 10的遗留构建系统正确更新的。

    我在脚本中添加了一些echo,并比较了新系统和旧系统上的构建日志,看不出有什么不同:

    echo "git release version:" ${GIT_RELEASE_VERSION} echo "info path:" ${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH%.*} echo "grv:" "${GIT_RELEASE_VERSION#*v}"

    3 回复  |  直到 7 年前
        1
  •  4
  •   David G.    7 年前

    似乎问题是有时候 Run Script Phase 将在Xcode创建 Info.plist

    例如,添加:

    $(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)

    信息列表 信息列表 .

        2
  •  0
  •   Evtim Georgiev    7 年前

    同样的问题。。。一种解决方法是清理并执行完整的构建。

    • 完整构建:在处理资源之后,在链接情节提要(链接)之前 步骤)
    • 增量:嵌入框架后,签名前。

    实际问题是作为生成步骤运行的脚本&会更新已处理的Info.plist文件,该文件需要始终在处理完该文件之后、签名之前运行。

        3
  •  0
  •   Yanga    7 年前

    与上面的答案类似(目前还不能评论),但略有变化。

    脚本输入文件:

    $(PROJECT_DIR)/$(INFOPLIST_FILE)      
    $(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)
    

    输出文件:

    $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
    

    https://gist.github.com/JoeMatt/aedd459c54a383373231719e508a2a36

        4
  •  0
  •   sam-w    6 年前

    (代码11.2)

    • 在新的生成系统中,任何自定义生成步骤都将运行 之前 Process .../Info.plist 步骤:

    enter image description here

    • 若要在Xcode完成生成后运行shell脚本,可以将其作为生成后操作添加到方案中:

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

    I stole this image from https://stackoverflow.com/a/54232034/969305

    • 如果要引用任何生成系统环境变量(例如。 BUILT_PRODUCTS_DIR INFOPLIST_PATH ),请确保更改 提供生成设置 选择。

    • Info.plist ),您需要重新为应用程序签名。将此添加到后期生成步骤:

    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}"
    
    推荐文章