这里主要记录下我自己在实现一键自动打包完整过程中遇到的一些问题,仅供参考
安装Fastlane及所需的其他工具
fastlane文档
1、安装ruby
2、安装xcode命令行工具,执行命令行
xcode-select --install
3、安装Fastlane,执行命令行
sudo gem install fastlane
我在这一步遇到了问题,报错无法安装Fastlane,提示ruby2.4之类的信息(当时忘了截图),我的ruby是很久以前安装的,看了下版本是2.3,于是乎升级到了2.4,可能我升级的方式不对,我升级之后mac里有两个ruby,一个2.3,一个新的2.4,然后把默认的ruby环境切到2.4版本这个,再安装Fastlane就可以了
查询已经安装的 ruby
rvm list
设置ruby的默认版本
rvm use 2.2.0 --default
4、安装Bundler,Bundler是管理Gem(管理Ruby库和程序的标准包)相依性的工具
sudo gem install bundler
这里需要注意一点的是,xcode的命令行工具,如果你电脑装了多个xcode,如果你需要用指定的xcode路径,要不用默认的xcode路径
可以切换路径 > sudo xcode-select -switch /Applications/Xcode10.1.app/其中“/Applications/Xcode10.1.app/”是xcode的路径,这里路径可以在xcode的偏好设置找到,如图所示:
Fastlane初始化
cd到你的工程目录,执行 fastlane init
会出现选择,这里选择4,手动管理,如图:
选择4之后就执行完了,工程目录里多了fastlane目录和Gemfile
配置Appfile文件和Fastfile文件,安装蒲公英插件
因为我是要上传到到蒲公英的,所以这里我们先安装蒲公英的插件,执行命令行 fastlane add_plugin pgyer
这里我遇到的问题是 大概意思是说我电脑的上某个依赖工具无法直接安装Fastlane的蒲公英插件(忘记截图了),然后会有提示告诉你怎么做,我记得有4个选项,我选择配置蒲公英插件git地址的这个,选择之后,直接输入插件的git地址:https://github.com/shishirui/fastlane-plugin-pgyer.git 确认,之后fastlane目录会多一个Pluginfile文件
这里其实只是先配置了插件的下载地址,还没真正下载,要等第一次执行脚本打包时,Fastlane会去检查如果还没插件才去自动下载
下面这些文件的配置,都要通过终端修改保存,用vim filename就可以,不要直接打开文件修改,否则执行脚本会有莫名其妙的报错(没有截图,报错的形式大概是说脚本运行到某一行出错了,但也没说具体为啥出错)
配置Appfile文件
设置app_identifier和apple_id,app_identifier就是你的APP的Bundle identifier,apple_id是你的开发者账号
配置Fastlane文件
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
lane :adhoc do
# add actions here: https://docs.fastlane.tools/actions
gym(
configuration:"Release",
clean:true,
scheme: "demoname", #工程下要打包的项目,如果一个工程有多个项目则用[项目1,项目2]
export_method: "ad-hoc", #打包的方式, development/adhoc/enterprise/appstore
output_directory: '/Users/yourname/Desktop/TestProject/ipa', #指定ipa最后输出的目录
)
pgyer(api_key: "883834jsjkkd9399349394323", user_key: "239329dhdjdjdjd399393", update_description: "update by fastlane")
end
end
复制上面的到fastlane文件,更改一下参数
lane :adhoc ---- adhoc名可以更改,最后用来执行打包脚本的命令;
scheme:"MyAPP" ---- MyAPP是你的项目名称,而不是APP名称;
export_method:"enterprise" ---- enterprise是打包的方式,我这里打的企业包,还有appstore, ad- hoc, package, enterprise, development, developer-id;
output_directory:"/Users/saj-king/Desktop/APP" ---- 这里是导出打包路径;
api_key ---- 蒲公英的api_key;
user_key ---- 蒲公英的user_key;
update_description ---- 蒲公英的api更新描述;
蒲公英的key要到你蒲公英的账户下查找
执行脚本打包
cd到你的工程目录下,执行 fastlane adhoc ,adhoc对应你Fastlane文件中配置的 lane: adhoc do
打包过程需要时间,终端不断在刷新文件数据,最终如图表示打包成功导出并上传蒲公英成功:
工程配置上遇到的问题:
我项目工程证书这块用的全自动模式,脚本打包选择的是adhoc,这样打包是日志会报错说因为找不到对应的证书,我是通过更改证书配置来解决的,Debug使用自动模式,Release是手动模式,默认选择了AdHoc的描述文件
温馨提示:如果有多个项目需要打包,直接拷贝 fastlane目录、Gemfile和Gemfile.lock文件 放在项目目录下,然后修改一下 Appfile和Fastfile文件 ,然后执行fastlane “XX”打包就行了,亲测有用!
到这里基本已经实现自动打包了,拉完代码,执行一行命令fastlane adhoc,但真正要实现一键打包,还得借助Jenkins,Jenkins做的事情是自动拉取代码并执行脚本
安装及配置Jenkins
安装Jenkins及Jenkins插件的步骤
偷个懒,大家直接见这个链接吧
我这里主要说下安装后的配置
1、首页点击新建,选择一个Freestyle的任务
2、点击刚创建的任务,然后再点击配置,然后看到如下图,Discard old builds这里默认是没有勾选的,可以勾上,参考我的配置,不是必要的
3、源码管理配置,选择Git,输入git远程仓库的地址,我的是HTTP的地址,选择要拉取代码的分支,这时下面会有红色报错
这里要配置下Credentials,点击“添加”按钮
默认是Username with password类型,输入你用来拉取代码的用户名密码然后点击添加即可
也可以选择SSH Username 类型,随便输入一个Username,填写Private Key,怎么找这个私钥,前往文件夹 ~/.ssh/id_rsa,打开这个文件,复制里面的所有内容到Private Key中
然后选择你刚创建的Credential,配置没问题的话报错就消失
提示:如果还是一直报错,看下是不是因为你的网络不能访问这个代码地址
4、构建
到构建下面点击“增加构建步骤”,选择“Execute shell”,cd到你工程目录下,执行fastlane打包命令
好了,终于都配置完了,开始构建任务......
如果顺利,过一会你收到蒲公英的邮件发布成功,你觉得终于舒服了......
.
.
.
.
.
.
然而当你高兴地从蒲公英下载之后,错愕地发现这个包的代码只是本地代码不是远程仓库的最新代码!!!
为什么???这时候去看构建任务的日志输出,拉取代码正常......看下我们前面的构建配置,先cd到你的工程目录下,然后执行打包命令,是的,这里出问题了,代码是拉取了但是我们cd的目录里的代码没更新,因为Jenkins拉取代码是把最新的分支代码拉取到Jenkins自己的目录下了,而不是把代码更新到我们本地工程目录下,Jenkins拉取的最新代码在这里 /Users/xiaoming/.jenkins/workspace/ProjectName,所以我们要把Jenkins构建命令改一下,cd到这个目录下
提示:这个目录是在Jenkins第一次任务触发后才自动创建的
我被这个问题搞了一天,去看别人的帖子,构建命令这里全都是cd到自己的工程目录,所以一直以为是拉取代码出问题了,贼TM坑......不知道是不是可以设置让Jenkins直接更新本地工程目录的代码,如果可以欢迎留言告诉我,不胜感谢
参考文章如下:
iOS+Jenkins+git+蒲公英
10分钟学会fastlane自动打包
Fastlane+Jenkins