Ios 如何在Xcode中包含git提交哈希?

Ios 如何在Xcode中包含git提交哈希?,ios,xcode,Ios,Xcode,我有一个应用程序,人们可以直接从中报告bug,但我希望用户能够提交应用程序所基于的git哈希。Xcode是否公开了一个#定义了哪些将包含此信息,或者我必须将其包含在一些自定义构建脚本中?我已经根据gagarwal引用的答案编写了一个实现。在编译阶段之前,我已将此构建脚本添加到构建阶段: /usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH `git rev-parse HEAD`" "${TARGET_BUILD_DIR}"/"${INFOPLIST_

我有一个应用程序,人们可以直接从中报告bug,但我希望用户能够提交应用程序所基于的git哈希。Xcode是否公开了一个#定义了哪些将包含此信息,或者我必须将其包含在一些自定义构建脚本中?

我已经根据gagarwal引用的答案编写了一个实现。在编译阶段之前,我已将此构建脚本添加到构建阶段:

/usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH `git rev-parse HEAD`" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
在我的代码中,我通过调用:

[[NSBundle mainBundle] infoDictionary][@"GIT_COMMIT_HASH"];
瞧,您最后的提交哈希值在运行时可用

  • 添加目标的info.plist GIT\u COMMIT\u散列键

  • 编译阶段之前的构建阶段:

    /usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH `git rev-parse HEAD`" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
    

  • /usr/libexec/PlistBuddy-c“Set:GIT_COMMIT_HASH'
    GIT rev parse--short HEAD'
    “${PROJECT_DIR}/${INFOPLIST_FILE}”

    这对我来说在Xcode 12上不起作用。在将
    Info.plist
    文件中的
    GIT\u COMMIT\u HASH
    放入后,我将以下内容放入构建阶段步骤中,如上所述:

    COMMIT_HASH=`git rev-parse --short HEAD`
    /usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH $COMMIT_HASH" "${INFOPLIST_FILE}"
    
    然后,您可以通过以下方式在Swift中访问它:

    Bundle.main.object(forInfoDictionaryKey: "GIT_COMMIT_HASH")
    

    这将有助于:我正在获取
    Set:Entry,“:GIT\u COMMIT\u HASH”不存在
    @DavidH您必须在您的信息列表中已有该条目,因此在构建之前,我在plist中有
    GIT\u COMMIT\u HASH
    ,并在构建时填充它。看起来对于XCode 7来说,这不再有效。修复了这个问题:usr/libexec/PlistBuddy-c“Set:GIT_COMMIT_HASH
    GIT rev parse HEAD
    ”${PROJECT_DIR}/${INFOPLIST_FILE}“我将此脚本添加到构建阶段->运行脚本中,并在plist处添加了GIT_COMMIT_HASH条目,当我运行此代码时,得到的值是GIT rev parse HEAD,而不是真正的提交哈希。我还应该定义什么?重要的是在“复制捆绑资源”阶段之后的“构建阶段”中添加脚本。