Fastlane自動打包上傳iOS App

2017-09-13 10:25:37来源:https://ios.devdon.com/archives/746作者:陳董Don人点击

分享

每当开始出现一些重複性的工作时,我们就做一个工具来帮我们自动完成这些任务,比如写完code后操作git的commit/push/merge等等。


而 Fastlane 就是一个这样的自动化工具,而这个项目目前是被Google收购了。


关于Fastlane

Fastlane包含了打包、签名、测试、部署、发布等等移动开发中会涉及到的 工具 ,当然我们也是可以通过ruby来自己写Plugin的。


iOS方面初期应该会用到这些:


Scan – run tests.
Gym – build app.
Deliver – upload screenshots, metadata, app to App Store.
Snapshot – automate taking localized screenshots.
Pilot – Upload a new binary to iTunes Connect for TestFlight beta testing.
Sigh – 处理配置(Provisioning profiles)相关工作。

更多的工具可以看看 官方的Actions列表 。


持续集成中的重複工作

当我们完成一部分开发内容以后,会进行发布到Testflight上进行测试,而这过程可能是这样的:


在负责发布的电脑上执行git pull拿到最新的code。
执行pod install来安装/更新依赖包。
修改XCode中的Version/Build号。
通过XCode将code进行Archive编译和打包。
选择一个要上传的ipa文件(其实就是刚archive的ipad档案)
通过Xcode或者Application Loader上传ipa档案。
等待上传处理完成,登入itunes connet选择要测试的版本(只有第一次要设定的样子)
commit code(因为修改了xcode中version/build号码)

每一次打完一段code以后就要这样做一次,而这里都还包括测试的环节,这样重複性的工作真的佔用了不少时间。


安装&初始化Fastlane

可以通过Ruby Gem来安装Fastlane:


gem install fastlane

在Xcode项目中初始化Fastlane:


fastlane init

初始化的过程会要求填写iTunes Connect帐号等资讯,如果是全新的项目,会帮你在iTunes Connect中建立App。


设定完成后可以看到Xcode项目中会多一个faselane目录。



Appfile

这里放的是和App有关的资讯,包括app identifier,apple id、team id…等等。


需要注意的是,如果你的帐号同时有多个team,可以在这里直接设定itc_team_id或者itc_team_name,因为如果没有设定的话,在fastlane执行发布相关的任务时,会询问使用者要用哪一个team,这样就没办法自动化了。


可以在这里看更多有关 Appfile的设定 。


Deliverfile

可以在这里直接设定app identifier和user name(Apple user ID),如果你的帐号同时有多个team的话。


也可以在具体执行任务的时候加入,比如pilot(team_name: “Don Chen”)


可以在这里看更多有关 Deliverfile的设定 。


Fastfile

这里放的是具体要执行的命令,一个打包上传到TestFlight的例子:


desc "Submit a new Beta Build to Apple TestFlight"
desc "This will also make sure the profile is up to date"
lane :beta do
# match(type: "appstore") # more information: https://codesigning.guide
increment_build_number
gym(scheme: "Lab-Fastlane") # Build your app - more options available
pilot(team_name: "Tung Chen")
# sh "your_script.sh"
# You can also use other beta testing services here (run `fastlane actions`)
end

其中pilot指定了team_name是因为我的帐号有多个team。


而increment_build_number是自动让build号码增加1,这个需要搭配Xcode设定。



这个任务的lane取名叫做beta,于是在terminal中之行fastlane ios beta,就会开始自动执行任务了。


increment_build_number – build号码增加1
gym(scheme: “Lab-Fastlane”) – build项目
pilot(team_name: “Tung Chen”) – 上传到TestFlight(iTunes connect)上。
需要注意的是:

1、而目前iTunes Connect会要求App填写「出口合规证明」,似乎没有对code另外进行加密可以直接设定为no。



在info.plist中可以设定:



最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台