将git commit SHA添加到iOS应用程序

xj3cbfub  于 11个月前  发布在  Git
关注(0)|答案(6)|浏览(150)

我想在我的App中显示我的项目构建时的当前git SHA。在iOS项目中以最小的努力完成这一任务的好方法是什么?

sqxo8psd

sqxo8psd1#

版本号:2.17,版本号:a85b242。

如果你想添加一个像上面这样的漂亮版本,只需按照以下步骤操作:
1.在Xcode中打开Build Phases
1.按下Add Build Phase
1.按Add Run Script Build Phase。您可以在顶部菜单编辑器中找到它。将脚本行拖到Target Dependencies之后的位置。
1.将Shell行设置为/bin/sh
1.将下面的脚本设置为脚本字段,不要忘记将Sources修改为您的文件路径,GitVersion.h应该在这里。例如:

version=$(git rev-parse --verify HEAD | cut -c 1-7)
curdate=$(date +"%d.%m.%y")

filesource="//\n//  GitVersion.h\n//\n//  Created by sig on $curdate.\n//\n\n#ifndef GitVersion_h\n#define GitVersion_h\n\n#define GIT_SHA_VERSION @\"$version\"\n\n#endif"

cd ${SOURCE_ROOT}/${PROJECT_NAME}
echo -e "$filesource" > Sources/GitVersion.h

touch Sources/GitVersion.h

字符串
1.将GitVersion.h文件导入Xcode项目
1.粘贴这些行:

NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [info objectForKey:@"CFBundleShortVersionString"];
NSString *app_version = [NSString stringWithFormat:@"Version %@. Build %@.", version, GIT_SHA_VERSION];

NSLog(@"app_version : %@", app_version);


可以在here中找到带有图像和描述优势的完整记录的答案。

mzsu5hc0

mzsu5hc02#

你可以在Schemes中完成它。打开你的scheme(编辑),在scheme中展开Build,点击Pre-Actions,点击+按钮,选择New Run Script Action并编写一些脚本,获取SHA并修改一些头文件,你可以在其中放置SHA(最简单的方法是#define GIT_SHA @"...")并在你的应用程序中使用GIT_SHA在你可以显示它的地方。

vxqlmq5t

vxqlmq5t3#

答案很晚,但对于那些需要获得Git Commit SHA的人来说,这里有一个简单的解决方案:
选择要获取Git Commit SHA的目标。然后转到Build Phase
1-通过按+按钮创建新运行脚本阶段,然后添加以下脚本:

git_version=$(git log -1 --format="%h")

info_plist="${SRCROOT}/{THE_PATH_TO_PLIST_FILE}/Info.plist"
/usr/libexec/PlistBuddy -c "Set :GIT_VERSION '${git_version}'" "${info_plist}"

字符串
记住用plist文件的真实的路径替换{THE_PATH_TO_PLIST_FILE}
3-现在转到相同Target的Info.plist并添加一个新属性:GIT_VERSION。脚本将把GitVersion设置为这个属性。
4-在代码中从Info.plist读取GIT_VERSION

p3rjfoxz

p3rjfoxz4#

对于斯威夫特

Git log format link

其他Swift标志

运行脚本

version=$(git rev-parse --verify HEAD | cut -c 1-10)
commitDate=$(git log -n 1 HEAD --pretty=format:"%h - %cd" | cut -c 12-)

filesource="//\n//  GitVersion.swift\n//\n//  Commit Date:$commitDate\n//\n\n#if DEBUG\nlet gitVersion = \"$version\"\n#endif"
cd ${SOURCE_ROOT}/${PROJECT_NAME}

echo -e "$filesource" > GitVersion.swift

touch GitVersion.swift

字符串

GitVersion.swift

//
//  GitVersion.swift
//
//  Commit Date: Tue Jun 19 11:09:55 2018 +0900
//

#if DEBUG
let gitVersion = "2fd2f0315d"
#endif

ioekq8ef

ioekq8ef5#

对于Swift项目

来源:https://github.com/ankushkushwaha/AppVersionInXcode
1.添加构建脚本运行脚本

/bin/sh

version=$(git rev-parse --verify HEAD| cut -c 1-7)
fileContent="//不要编辑,//它是机器生成的文件
// AppInfo.swift // import Foundation class AppInfo { let version:String let build:String let gitCommitSHA:String = "$version\”init?(){ guard let version = Bundle.main.infoDictionary?[\“CFBundleShortVersionString"] as?String,let build = Bundle.main.infoDictionary?[\“CFBundleVersion"] as?String else { return nil } self.version = version self.build = build } }”echo“$fileContent”> AppInfo.swift
1.将运行脚本移动/拖动到“编译源代码”上方
1.现在构建你的项目,它将在项目的根文件夹中创建一个文件AppInfo.swift
1.将AppInfo.swift文件拖放到Xcode项目导航器中。
1.使用如下
guard let info = AppInfo()else { return } let infoText =“AppVersion:(info.version)\nBuild:(info.build)\nGit hash:(info.gitCommitSHA)”print(infoText)

mgdq6dx1

mgdq6dx16#

这个链接在我的例子中是有效的,但我想补充的是,添加项目路径和这个自动生成的类所在的文件夹是一件好事。所以在我的例子中,它是:

echo "$fileContent" > ${SRCROOT}/MyProject/Models/AppInfo.swift

字符串
下面是一篇关于相对路径的文章:
Relative paths on Xcode scripts

相关问题