美文网首页iOS自我学习库
iOS Fastlane 使用文档

iOS Fastlane 使用文档

作者: marlonxlj | 来源:发表于2019-04-21 20:14 被阅读424次

更新时间:2019-4-8

一、开始使用前的准备工作检查环境配置:

1、检查ruby

命令:ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

如果没有安装请,移步这里

2、Xcode命令工具

命令:xcode-select -v
xcode-select version 2354.
如果没有安装,就安装命令:xcode-select --install

3、安装fastlane

sudo gem install fastlane --verbose

如果安装失败:

ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String

进行更新gem:

sudo gem update --system

安装成功:

➜  1.0 fastlane -v
Ignoring bigdecimal-1.3.5 because its extensions are not built.  Try: gem pristine bigdecimal --version 1.3.5
fastlane installation at path:
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.112.0/bin/fastlane
-----------------------------
[⠹] 🚀 Ignoring io-console-0.4.6 because its extensions are not built.  Try: gem pristine io-console --version 0.4.6
Ignoring nokogiri-1.8.4 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.4
Ignoring psych-3.0.2 because its extensions are not built.  Try: gem pristine psych --version 3.0.2
Ignoring sqlite3-1.3.13 because its extensions are not built.  Try: gem pristine sqlite3 --version 1.3.13
[✔] 🚀 
fastlane 2.112.0

二、项目初始化

fastlane init

出现如下信息:

[15:08:29]: What would you like to use fastlane for?
1. 📸  Automate screenshots
2. 👩‍✈️  Automate beta distribution to TestFlight
3. 🚀  Automate App Store distribution
4. 🛠  Manual setup - manually setup your project to automate your tasks
?  

翻译:
1. 自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话),我们这里不选择这个选项,因为我们的项目已经有图片了,不需要这里截屏。
2. 自动发布beta版本用于TestFlight,如果大家有对TestFlight不了解的,可以参考王巍写的这篇文章
3. 自动的App Store发布包。我们的目标是要提交审核到APP Store,按道理应该选这个,但这里我们先不选,因为选择了以后会需要输入用户名密码,以及下载meta信息,需要花费一定时间,这些数据我们可以后期进行配置。
4. 手动设置。

直接选择第4个对其进行手动配置后进入:

[15:17:15]: ------------------------------------------------------------
[15:17:15]: --- Setting up fastlane so you can manually configure it ---
[15:17:15]: ------------------------------------------------------------
[15:17:15]: Installing dependencies for you...
[15:17:15]: $ bundle update

等待时间较长.....
安装成功如下:

➜  1.0 fastlane init
Ignoring bigdecimal-1.3.5 because its extensions are not built.  Try: gem pristine bigdecimal --version 1.3.5
[⠹] 🚀 Ignoring io-console-0.4.6 because its extensions are not built.  Try: gem pristine io-console --version 0.4.6
Ignoring nokogiri-1.8.4 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.4
Ignoring psych-3.0.2 because its extensions are not built.  Try: gem pristine psych --version 3.0.2
Ignoring sqlite3-1.3.13 because its extensions are not built.  Try: gem pristine sqlite3 --version 1.3.13
[✔] 🚀 
[15:37:31]: ------------------------------
[15:37:31]: --- Step: default_platform ---
[15:37:31]: ------------------------------

--------- ios---------
----- fastlane ios custom_lane
Description of what the lane does

Execute using `fastlane [lane_name]`
[15:37:31]: ------------------
[15:37:31]: fastlane is already set up at path `./fastlane/`, see the available lanes above
[15:37:31]: 
[15:37:31]: ------------------------------
[15:37:31]: --- Where to go from here? ---
[15:37:31]: ------------------------------
[15:37:31]: 📸  Learn more about how to automatically generate localized App Store screenshots:
[15:37:31]:         https://docs.fastlane.tools/getting-started/ios/screenshots/
[15:37:31]: 👩‍✈️  Learn more about distribution to beta testing services:
[15:37:31]:         https://docs.fastlane.tools/getting-started/ios/beta-deployment/
[15:37:31]: 🚀  Learn more about how to automate the App Store release process:
[15:37:31]:         https://docs.fastlane.tools/getting-started/ios/appstore-deployment/
[15:37:31]: 👩‍⚕️  Learn more about how to setup code signing with fastlane
[15:37:31]:         https://docs.fastlane.tools/codesigning/getting-started/
➜  1.0 

其他命令:

fastlane actions:      列出所有可用fastlane活动
fastlane action [action_name]:   显示一个更详细的活动描述
fastlane lanes:      列出所有可用lanes (有描述)
fastlane list:       列出所有可用lanes (没有描述)
fastlane new_action:     在fastlane创建一个活动(集成)

三、对fastlane 文件的认识:

现在对Appfile,Fastfile,Gemfile,Deliverfile文件说明如下:

Appfile: 存储有关开发者账号相关信息
Fastfile: 核心文件,用于命令行调用和处理具体的流程,lane相对于一个action方法或函数 
Gemfile 类似于cocopods 的Podfile文件
.env 配置环境变量(在fastlane init进行初始化后并不会自动生成,如果需要可以自己创建
Deliverfile: deliver工具的配置文件,上传截图苹果和后台一些app信息  (默认不生成,需要sudo gem install deliver安装)然后在fastlane 目录下执行deliver init 即可)
要注意的点:
build_app命令等同于gym(别名)
deliver 命令相当于upload_to_app_store(别名)

四、添加插件

列出所有的插件

fastlane search_plugins

搜索指定名称的插件

fastlane search_plugins [query]

添加插件

fastlane add_plugin [name]

安装插件

fastlane install_plugins

添加蒲公英插件
fastlane add_plugin pgyer
fastlane add_plugin versioning

添加match全家桶

fastlane match init

五、配置相关文件信息

配置主文件:Fastfile
配置证书的存放路径

fastlane ios
[16:42:53]: $ bundle exec fastlane ios
[16:42:53]: 
[16:42:53]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile
+------------------------+---------+------------------------+
|                       Used plugins                        |
+------------------------+---------+------------------------+
| Plugin                 | Version | Action                 |
+------------------------+---------+------------------------+
| fastlane-plugin-pgyer  | 0.2.2   | pgyer                  |
| fastlane-plugin-versi  | 0.3.4   | get_version_number_fr  |
| oning                  |         | om_git_branch          |
|                        |         | get_version_number_fr  |
|                        |         | om_plist               |
|                        |         | get_build_number_from  |
|                        |         | _plist                 |
|                        |         | ci_build_number        |
|                        |         | increment_version_num  |
|                        |         | ber_in_plist           |
|                        |         | get_app_store_version  |
|                        |         | _number                |
|                        |         | get_info_plist_path    |
|                        |         | increment_build_numbe  |
|                        |         | r_in_plist             |
+------------------------+---------+------------------------+

[16:42:55]: ------------------------------
[16:42:55]: --- Step: default_platform ---
[16:42:55]: ------------------------------
[16:42:55]: Welcome to fastlane! Here's what your app is setup to do:
+--------+-----------------+----------------------+
|             Available lanes to run              |
+--------+-----------------+----------------------+
| Number | Lane Name       | Description          |
+--------+-----------------+----------------------+
| 1      | ios custom_lane | Description of what  |
|        |                 | the lane does        |
| 0      | cancel          | No selection, exit   |
|        |                 | fastlane!            |
+--------+-----------------+----------------------+
[16:42:55]: Which number would you like run?

六、遇到问题

出现错误:

[17:13:49]: ▸ ** ARCHIVE SUCCEEDED **
[17:13:49]: 
[17:13:49]: ⬆️  Check out the few lines of raw `xcodebuild` output above for potential hints on how to solve this error
[17:13:49]: 📋  For the complete and more detailed error log, check the full log at:
[17:13:49]: 📋  /Users/liujingxu/Library/Logs/gym/M-Pay-M-Pay.log
[17:13:49]: 
[17:13:49]: Looks like fastlane ran into a build/archive error with your project
[17:13:49]: It's hard to tell what's causing the error, so we wrote some guides on how
[17:13:49]: to troubleshoot build and signing issues: https://docs.fastlane.tools/codesigning/getting-started/
[17:13:49]: Before submitting an issue on GitHub, please follow the guide above and make
[17:13:49]: sure your project is set up correctly.
[17:13:49]: fastlane uses `xcodebuild` commands to generate your binary, you can see the
[17:13:49]: the full commands printed out in yellow in the above log.
[17:13:49]: Make sure to inspect the output above, as usually you'll find more error information there
[17:13:49]: 
[17:13:49]: Looks like no provisioning profile mapping was provided
[17:13:49]: Please check the complete output, in particular the very top
[17:13:49]: and see if you can find more information. You can also run fastlane
[17:13:49]: with the `--verbose` flag.
[17:13:49]: Alternatively you can provide the provisioning profile mapping manually
[17:13:49]: https://docs.fastlane.tools/codesigning/xcode-project/#xcode-9-and-up
+------------------+---------------+
|           Lane Context           |
+------------------+---------------+
| DEFAULT_PLATFORM | ios           |
| PLATFORM_NAME    | ios           |
| LANE_NAME        | ios adhoc_pgy |
| BUILD_NUMBER     | 2             |
+------------------+---------------+
[17:13:49]: Error packaging up the application

+------+------------------------+-------------+
|              fastlane summary               |
+------+------------------------+-------------+
| Step | Action                 | Time (in s) |
+------+------------------------+-------------+
| 1    | default_platform       | 0           |
| 2    | cocoapods              | 3           |
| 3    | increment_build_numbe  | 1           |
|      | r                      |             |
| 💥   | build_app              | 84          |
+------+------------------------+-------------+

[17:13:49]: fastlane finished with errors

[!] Error packaging up the application

match文件配置

  1. 首页需要一个git仓库用来存放Cer证书
  2. git 仓库需要添加ssh公钥
生产密钥:ssh-keygen 
查看密钥:cat ~/.ssh/id_rsa.pub

2、错误信息

[16:19:23]: URL to the git repo containing all the certificates: https://gitee.com/mxlj/M-Pay-Cer.git
[16:19:33]: Cloning remote git repo...
[16:19:33]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
Cloning into '/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/d20190409-13299-1p3m5n2'...
fatal: could not read Username for 'https://gitee.com': terminal prompts disabled
[16:19:34]: Exit status: 128
[16:19:34]: Error cloning certificates repo, please make sure you have read access to the repository you want to use
[16:19:34]: Run the following command manually to make sure you're properly authenticated:
[16:19:34]: $ git clone https://gitee.com/mxlj/M-Pay-Cer.git /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/d20190409-13299-1p3m5n2

[!] Error cloning certificates git repo, please make sure you have access to the repository - see instructions above

解决方法:

注:出现这个问题是因为mac git终端没有读写的权限,问题。
未找到修改权限的方法来解决此问题,所有使用下面的方面来解决。

运行:

git clone https://gitee.com/mxlj/M-Pay-Cer.git /var/folders/xc/bzrxbntn1fq_fw53ks0_jbzc0000gn/T/d20190409-13848-156jw68

提示输入git的账号:xxx@.com
提示输入git的密码:xxxx

这样就进行了git仓库的关联。

运行:fastlane match adhoc,需要输入app账号的密码

然后需要确认使用哪个组织来进行证书下载,在打包的时候也是。

还有一个git仓库的密码:123456,这个密码在其他的电脑上会使用到,会去仓库里下载证书.

问题:

Couldn't find specified scheme 'scheme'. Please make sure that the scheme is shared, see https://developer.apple.com/library/content/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/ConfigureBots.html#//apple_ref/doc/uid/TP40013292-CH9-SW3

修改Fastlane文件的scheme:为项目名称

报satus 70错误

** EXPORT FAILED **
[17:28:29]: Exit status: 70

解决办法:
把xcode证书自动管理修改为手段管理,就可以解决此问题。
至于具体原因未找到。

问题

[09:50:03]: Could not find action, lane or variable 'pgyer'. Check out the documentation for more details: https://docs.fastlane.tools/actions

+------+------------------+-------------+
|           fastlane summary            |
+------+------------------+-------------+
| Step | Action           | Time (in s) |
+------+------------------+-------------+
| 1    | default_platform | 0           |
| 2    | sigh             | 17          |
| 3    | gym              | 67          |
+------+------------------+-------------+

[09:50:03]: fastlane finished with errors

[!] Could not find action, lane or variable 'pgyer'. Check out the documentation for more details: https://docs.fastlane.tools/actions

解决:

是因为无法找到蒲公英的插件,脚本里加了,但是命令没有加。

fastlane add_plugin pgyer
//版本管理
fastlane add_plugin versioning


完成上传成功

iOS打包命令

ios test

fastlane ios test

ios release

fastlane ios release

ios appstore

fastlane ios appstore

其他注意事项

当已经创建好了主的fastlane的证书,其他电脑上只获取就可以了:

fastlane match development readonly

fastlane match adhoc readonly

添加新设备后更新证书
fastlane match development --force_for_new_devices

fastlane match adhoc --force_for_new_devices


rom the Apple Dev Portal
    nuke development    Delete all certificates and provisioning profiles
from the Apple Dev Portal of the type development
    nuke distribution   Delete all certificates and provisioning profiles
from the Apple Dev Portal of the type distribution
    nuke enterprise     Delete all certificates and provisioning profiles
from the Apple Dev Portal of the type enterprise
    run               * Easily sync your certificates and profiles across
your team

分割线


xcode 多config配置

相关文章

网友评论

    本文标题:iOS Fastlane 使用文档

    本文链接:https://www.haomeiwen.com/subject/idzjgqtx.html