Ios 如何在Xcode中包含git提交哈希?
我有一个应用程序,人们可以直接从中报告bug,但我希望用户能够提交应用程序所基于的git哈希。Xcode是否公开了一个#定义了哪些将包含此信息,或者我必须将其包含在一些自定义构建脚本中?我已经根据gagarwal引用的答案编写了一个实现。在编译阶段之前,我已将此构建脚本添加到构建阶段: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_
/usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH `git rev-parse HEAD`" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
在我的代码中,我通过调用:
[[NSBundle mainBundle] infoDictionary][@"GIT_COMMIT_HASH"];
瞧,您最后的提交哈希值在运行时可用
/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_HASHGIT rev parse HEAD
”${PROJECT_DIR}/${INFOPLIST_FILE}“我将此脚本添加到构建阶段->运行脚本中,并在plist处添加了GIT_COMMIT_HASH条目,当我运行此代码时,得到的值是GIT rev parse HEAD,而不是真正的提交哈希。我还应该定义什么?重要的是在“复制捆绑资源”阶段之后的“构建阶段”中添加脚本。