前言:App的开发过程中,打包测试也是非常重要的一环,但是频繁的机械式操作反而阻塞我们的开发测试效率,我们希望通过自动打包上传到测试环境减少一些不必要的简单操作,所以自动打包开发工具就应运而生了,常见的主流工具有Jenkins、fastlane。Jenkins功能强大,但是需要的配置也比较多,团队较大的可以优先考虑,fastlane比较轻便,配置较为简单,使用起来也很方便。本文将基于fastlane自动化打包的功能,详细的介绍下fastlane安装到上传蒲公英的整个流程。
目录
<一>. fastlane的安装
<二>. fastlane的配置
<三>. fastlane打包并上传至蒲公英和fir.im
<一>. fastlane的安装
1.笔者配置fastlane的环境为 macOS Catalina v10.15.6版本。
2.fastlane是用Ruby语言编写的一套自动化工具集和框架,fastlane的Github地址,fastlane的官网,fastlane的文档。
3.fastlane的安装(在终端命令行操作):
--第一步:因为fastlane是用Ruby语言编写的工具,所以必须保证已经配置好了Ruby开发环境。可以使用如下命令行查看是否安装了Ruby:
ruby -v
如果有以下提示说明你已经安装了Ruby:
ruby 2.6.0p0(2018-12-25 revision 66547)[x86_64-darwin19]
如果没有安装也没关系,这里提供一个博主的方法。
--第二步:安装Xcode命令行工具
xcode-select--install
如果没有安装,命令会有提示框,根据提示一步一步安装即可。
如果出现以下命令提示,说明已经安装成功:
已经安装成功提示
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
--第三步:Ruby和Xcode环境都配置好之后,我们只需要执行以下命令来安装fastlane
sudo gem install -n /usr/local/bin fastlane
安装完成之后,输入以下命令查看是否安装成功:
fastlane --version
出现以下提示说明你已经安装成功了:
fastlane安装成功
如果没有以上提示也没关系,回看前面的步骤,再仔细检查下,祝君好运。
<二>. fastlane的配置
fastlane安装成功之后,接下来就是比较重要的fastlane的配置。
<1>首先需要我们cd到你的iOS项目下,执行初始化命令:
fastlane init
命令执行完成之后会给出我们如下几个提示:
fastlane init
命令执行到最后有What would you like to use fastlane for?提示,此时fastlane列出几个选项,需要我们告诉它使用fastlane需要执行哪种操作:
第一种获取App Store的App预览照片。
第二种打包上传至TestFlight工具上。
第三种打包上传到App Store。
第四种自定义打包方式。
以上四种方式大家可以根据自己的需要自行选择,本文主要介绍打包上传至第三方平台,所以选择4自定义打包方式。选择完成之后,fastlane会在我们项目中创建fastlane文件,这个过程大概需要两分钟等待。
出现以下截图说明已经创建成功:
此时只需要我们一直敲回车键即可,直到该命令运行结束,我们会看到如下创建的文件:
<2>创建好fastlane文件夹之后,Appfile是编辑我们相关App和开发者账号信息的,一般不需要我们去手动修改,在最后一步的打包过程中如果出现需要App ID的相关信息,我们在命令行中正常输入即可。Fastfile是我们对自动打包这个过程的完整配置,默认的Fastfile文件内容如下:
1.主要介绍lane的任务结构和蒲公英、fir.im的api配置。
笔者给出一个自己的例子来作为参考并讲解主要参数的含义:
关于上述的蒲公英api_key和user_key可以到蒲公英Api网站查看:
截屏2020-10-23 下午5.14.55.png
关于fir.im的相关信息可以到fir.imApi网站查看:
FIR_API
build_app 中主要是编译打包成ipa文件这个过程的相关操作,build_app中的相关参数介绍:
参数参数的意义默认值
workspaceiOS项目的workspace
project工程路径
schemeiOS项目的scheme
cleanfastlane自动打包之前知否clean项目false
output_directory编译App完成后ipa包的存放地址,默认在工程中.
output_nameipa包名称
silent编译过程中隐藏掉不必要的信息false
codesigning_identity描述文件
skip_package_ipa自动跳过ipa打包false
skip_package_pkg自动跳过pkg打包false
include_symbolsipa包包含symbols?
include_bitcodeipa包包含symbolsbitcode?
export_method打包导出方式: app-store, ad-hoc, package, enterprise, development, developer-id
export_options需要一个export_options plist 文件路径或者export_options ,用 'xcodebuild -help' 查看提供的 options
skip_build_archiveExport ipa from previously built xcarchive. Uses archive_path as source
skip_archive跳过打archive包过程
skip_codesigningBuild without codesigning
catalyst_platformcatalyst app的打包平台: ios, macos
build_pathThe directory in which the archive should be stored in
archive_pathThe path to the created archive
sdk应用支持的手机系统版本
套用fastlane官方的配置例子:
build_app( workspace: "MyApp.xcworkspace", configuration: "Debug", scheme: "MyApp", silent: true, clean: true, output_directory: "path/to/dir", # Destination directory. Defaults to current directory. output_name: "my-app.ipa", # specify the name of the .ipa file to generate (including file extension) sdk: "iOS 11.1" # use SDK as the name or path of the base SDK when building the project.)
gym 中主要是编译打包成功后,对导出的IPA包的操作,gym中的相关参数可参考build_app中的参数,因为两者的参数基本一致,最后用一个gym例子:
platform:iOSdodesc"打测试包上传到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")gym(workspace:"MyApp.xcworkspace",configuration:"Debug",scheme:"MyApp",silent:true,clean:true,output_directory:"path/to/dir",# Destination directory. Defaults to current directory.output_name:"my-app.ipa",# specify the name of the .ipa file to generate (including file extension)sdk:"iOS 11.1"# use SDK as the name or path of the base SDK when building the project.)endend
4 蒲公英和fir.im的插件配置
经过上面的相关配置,我们的配置就差一步:第三方平台的插件配置。
@1.蒲公英插件的配置:
执行以下命令来安装蒲公英插件:
fastlane add_plugin pgyer
出现以下结果表明安装成功:
@2.fir.im插件的配置:
执行以下命令来安装fir.im插件:
fastlane add_plugin firim
出现以下结果表明安装成功:
<三>. fastlane打包并上传至蒲公英和fir.im
经过上面的配置,我们就可以愉快的自动打包上传啦,不过最后还有几点跟大家说明一下,首先贴出来笔者打包的配置文件:
platform:iOSdodesc"打测试包上传到蒲公英"lane:pgydobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA")#蒲公英的配置 替换为自己的api_key和user_keypgyer(api_key:"蒲公英api_key",user_key:"蒲公英user_key",update_description:"该版本更新的内容")enddesc"打测试包上传到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")# 上传ipa到fir.im服务器,在fir.im获取firim_api_tokenfirim(firim_api_token:"firim_api_token")# token 在fir 上查看endend
首先lane作为一个单独的任务模块,它是可以自己定义的,例如笔者的例子中platform为iOS,下面有两个任务:pgy和fir,所以在我们只需要cd 到相关的iOS项目下执行以下命理即可:
(打包上传至fir.im ios为platform字段中的平台 fir为自己自定义的任务 当然这个名字可以任意取,在我们执行命令的时候对应上即可。)
fastlane ios fir
或者
fastlane ios pgy
出现下面的截图就代表你已经上传成功了:
附录:
<1> firim相关参数配置
参数参数的意义默认值
platform平台:ios , mac, android---
firim_api_urlhttps://www.betaqr.com/apps---
firim_api_tokenfirim网站的API token---
app_changelog更新日志---
firim_username用户名---
app_passwd安装密码---
ipaipa包---
apkapk包---
gradle_file------
icon------
file------
app_identifier------
app_name------
app_desc------
app_short------
app_is_opened------
app_is_show_plaza------
app_store_link_visible------
app_version------
app_build_version------
app_release_type------
app_info_to_file_path------
<2> 蒲公英相关参数配置
参数参数的意义默认值
api_keyhttps://www.pgyer.com/account/api---
user_keyhttps://www.pgyer.com/account/api---
ipaipa包---
apkapk包---
password安装包密码---
update_description更新日志---
install_type------
写在最后:fastlane的本地打包主题感受是相比之前手工操作省去了不少机械操作,笔者80M左右的项目上传成功大概用了9分左右,还是挺有效率的。当然这也只是开发测试中的一环,弊端就是必须要本地配置好才可以,关于后续的服务器自动化打包测试会继续更新,感谢大家的拜读,如果文中有错误或者理解不对的地方,欢迎大家的批评指正。
作者:coderGMQ111的笔记
链接:https://www.jianshu.com/p/81b78c53d171
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。