打包到 AppStore
上篇文章 我们已经成功的打包app到蒲公英了。那么我们也可以尝试将app上传到AppStore.
废话不多说,先简单的打包一个 ipa 到 AppStore 。
1 | desc "release" |
关于scheme
的设置请查看文档
调用
1 | fastlane release |
在项目无误的情况下,提交成功!
了解更多
在上篇文章的基础上,因为我们选择的是自定义,所以并没有创建 Deliverfile
,screenshots
和metadata
目录,也就没有app的更多的设置,比如提交的各种信息,截图等。我们可以使用如下命令进行创建
1 | deliver init |
此时会要求输入你的 Your Apple ID Username
和 password
,The Bundle Identifier of your App
.(因为我已经登录过了。所以并未出现要输入账号的密码,也可以在 Appfile
编辑你的账号和 Bundle Identifier)。
如果开发者账号上没有对应的bundle id的App,会提示是否创建一个新的App,这里我们选择否(n),因为这样快速创建的App设置的信息有限,只能设置App名称等一些基本信息,我们可以通过produce工具创建一个可以设置更多信息的App
编辑
我们可以通过编辑 Deliverfile
来设置app的相关属性:
1 | # Apple ID用户名,账号名称 |
更多 编辑内容
目录
等待初始化完成之后,工程目录下就多了一个 fastlane目录,其内容如下:
metadata
是包含应用在ITC上面的各种信息,可以使用它配置我们的ITC,配置项,宣传文本、app名称、关键字、隐私网址、app的logo, 但建议使用Deliverfile
,因为Deliverfile
会覆盖metadata
的设置
screenshots 屏幕截图数据。
咱们来看主要的,Appfile 和 Fastfile, Deliverfile。
Appfile
Appfile用来存放 app_identifier
,apple_id
和 team_id
。 了解详情,它的格式是这样的:
1 | app_identifier "com.xxx.xxx" # app的bundle identifier |
你也可以为每个lane(后面会讲到)提供不同的 app_identifier
, apple_id
和 team_id
,例如:
1 | app_identifier "com.aaa.aaa" |
配置好Appfile
,fastlane就不会每一次都询问你的账号和id了
Fastfile
Fastfile 管理你所创建的 lane ,了解详情
。它的格式是这样的:
1 | ··· |
系统级lane
执行顺序 | 方法名 | 说明 |
---|---|---|
1 | before_all | 在执行 lane 之前只执行一次。 |
2 | before_each | 每次执行 lane 之前都会执行一次。 |
3 | lane | 自定义的任务。 |
4 | after_each | 每次执行 lane 之后都会执行一次。 |
5 | after_all | 在执行 lane 成功结束之后执行一次。 |
6 | error | 在执行上述情况任意环境报错都会中止并执行一次。 |
我们也可以定义一个自己的lane:
1 | desc "企业版" |
其中一个lane就是一个任务,里面是一个个的action组成的工作流。
利用目前支持的工具可以做所有包含自动化和可持续化构建的每个环节,详情请查看上篇文章的工具类
Deliverfile
交付文件。在这个文件里面可以设置iTunes connect的所有配置项,例如:
release_notes
,此版本新增内容。
copyright
,版权信息。
submit_for_review
,上传完成后是否直接提交新版本进行审查。
force
,跳过HTML报告文件验证。
…
请在设置 release_nores
、support_url
、private_url
等配置的时候,采用 hash 的方式写,国家代码,例如:
1 | release_notes( |
具体的配置可以在文章最后查看.
工具使用
使用produce,在iTunes Connect或者Apple Developer Center上创建新的iOS应用程序
进入项目根目录,找到fastlane文件夹下的Fastfile文件, 编辑文件,内容如下:
1 | platform :ios do |
备注:language这个选项不能直接写Chinese,语言选项如下
[“Brazilian Portuguese”, “Danish”, “Dutch”, “English”, “English_Australian”, “English_CA”, “English_UK”, “Finnish”, “French”, “French_CA”, “German”, “Greek”, “Indonesian”, “Italian”, “Japanese”, “Korean”, “Malay”, “Norwegian”, “Portuguese”, “Russian”, “Simplified Chinese”, “Spanish”, “Spanish_MX”, “Swedish”, “Thai”, “Traditional Chinese”, “Turkish”, “Vietnamese”]
在terminal中执行fastlane produce_app命令,创建成功提示如下:
使用cert创建签名证书(Certificates)
在Fastfile中添加以下内容
生成开发证书:
1 | lane :create_certificates do |
结果如下:
生成生产证书:
1 | lane :create_dcertificates do |
开发和生产证书,修改development的boolean值及output_path路径即可
使用sigh 生成描述文件(mobileprovision)
在Fastfile中
生成开发mobileprovision
1 | lane :get_dev_provisioningProfile do |
生成生产mobileprovision
1 | lane :get_provisioningProfile do |
找到 certs/development&&distribution
目录下的证书及.mobileprovision
文件,并安装到电脑上
使用gym来打包ipa
示例
1 | lane :inhouse do |
其他
- 这里是官方提供的一些 例子。
- 想了解 fastlane 命令的话可以执行
fastlane --help
- 查看可用任务的列表,可以执行命令
fastlane lanes
可以安装一些插件来辅助,查看插件
fastlane search_plugins
, 比如修改版本号的 versioning,以及 同样功能的fastlane-plugin-versioning
安装上面的插件,使用fastlane add_plugin [name] # 安装方法
比如1
fastlane add_plugin versioning
多个 lane 的话实际上是可以相互调用的,这个其实特别实用。例如:
1 | default_platform :ios |
我们可以在 Fastfile 文件中添加一个函数来设置version号和build号。
1 | default_platform :ios |
然后可以在一个lane中使用这个函数:
1 | lane :appstore do |options| |
然后执行这个lane的时候:
1 | fastlane appstore version:2.4.0 build:2.0 |
其他
Deliverfile 编辑示例
1 | # app_identifier |
fastlane工具 之 build_app 和 upload_to_app_store
最后,附上一个Fastfile脚本和一些自定义Actions:
https://github.com/thierryxing/Fastfiles
另外,Fastlane也提供了一些国外团队的Example:
https://github.com/fastlane/examples