我有一个应用程序,人们可以直接从它报告错误,但我希望用户能够提交构建应用程序的git hash.Xcode是否公开了包含此信息的#define,或者我是否必须将其包含在某些自定义构建脚本中?
Rya*_*ard 12
我根据gagarwal引用的答案写了一个实现.我在编译阶段之前将此构建脚本添加到了构建阶段:
/usr/libexec/PlistBuddy -c "Set :GIT_COMMIT_HASH `git rev-parse HEAD`" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我通过调用它来引用它:
[[NSBundle mainBundle] infoDictionary][@"GIT_COMMIT_HASH"];
Run Code Online (Sandbox Code Playgroud)
瞧,您的上次提交哈希值在运行时可用!
注意:您可以避免手动修改Info.plist. 只需执行以下步骤:
New run script phaseINFO_PLIST="${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
# Query and save the value; suppress any error message, if key not found.
value=$(/usr/libexec/PlistBuddy -c 'print :GitCommitHash' "${INFO_PLIST}" 2>/dev/null)
# Check if value is empty
if [ -z "$value" ]
then
/usr/libexec/PlistBuddy -c "Add :GitCommitHash string" "${INFO_PLIST}"
fi
/usr/libexec/PlistBuddy -c "Set :GitCommitHash `git rev-parse --short HEAD`" "${INFO_PLIST}"
Run Code Online (Sandbox Code Playgroud)
$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH将和添加$TARGET_BUILD_DIR/$INFOPLIST_PATH到Input Files属性(重要!)Copy Bundle Resources阶段之后进行现在您可以访问提交哈希:
extension Bundle {
var commitHash: String? {
infoDictionary?["GitCommitHash"] as? String
}
}
print(Bundle.main.commitHash ?? "undefined")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1900 次 |
| 最近记录: |