因为公司目前的项目需要一个项目打多个包,打包实际上是一个纯体力活,所以为了提升效率,之前同事写了一个利用Fastlane自动打包的脚本,最近项目不忙,所以看看文档总结一下!
安装
确保安装了最新的 Xcode command line tools
1 |
|
安装Fastlane
只需要这两步,安装过程就大功告成,下面开始把玩fastlane
初始化Fastlane
进入到你的项目的根目录(与xcodeproj文件同级目录下)
1 |
|
期间会让你输入 Apple ID 和密码
确认信息
会自动下载现存的截图
初始化完成后的目录结构
至此 fastlane就初始化完成了,再接再厉!!!
截图
每次发布新版本的时候截图是一件比较恶心的事情(虽然16年更新之后我们只需要上传最大尺寸的机型就可以适配),fastlane也可以为我们解决这件事!
初始化
1 |
|
初始化成功之后 我们可以得到
导入文件
导入上一步生成的SnapshotHelper.swift文件到你的UITest目录下注意:
如果你是OC的项目这里要设置一下桥接
注意 对于 SnapshotHelper.swift
导入头文件
这个头文件是系统默认生成的,不用我们手动创建,我们在拖入Siwft文件之后,直接引用就可以。 没有智能提示,所以不必惊慌,保证#import’target名称-Swift.h’正确就可以了。
录制
1 |
|
添加截图代码
在setUp方法中添加
1 |
|
在在录制步骤产生的步骤代码中加入(testExample中)
1 |
|
修改Snapfile文件
1 |
|
生成截图
1 |
|
添加边框
安装ImageMagick
1 |
|
下载最新的边框
1 |
|
生成带边框的截图
1 |
|
pem 生成推送证书
命令
1 |
|
- 1、创建新的签名请求(signing request)
- 2、创建新的推送证书( push certification)
- 3、下载这个证书(certificate)
- 4、在当前工作目录创建新的 .pem 文件,你可以上传到你的服务器
pem不会revoke已经存在的证书,也不会下载已经存在的证书,因为私钥仅在创建的机器上可用
实用命令
如果你已经有一个可用的推送证书(certificate),而且有效期至少还有30天以上,pem就不会创建新的证书。如果你想要创建新的,使用force:
1 |
|
还可传参数,如:
1 |
|
生成开发证书:
1 |
|
给p12文件设置密码:
1 |
|
可以指定输出名字:
1 |
|
列出可用命令选项:
1 |
|
命令 | 描述 |
---|---|
–development | [VALUE] Renew the development push certificate instead of the production one (PEM_DEVELOPMENT) |
–generate_p12 | [VALUE] Generate a p12 file additionally to a PEM file (PEM_GENERATE_P12_FILE) |
–active_days_limit | STRING If the current certificate is active for less than this number of days, generate a new one. Default value is 30 days (PEM_ACTIVE_DAYS_LIMIT) |
–force | [VALUE] Create a new push certificate, even if the current one is active for 30 (or PEM_ACTIVE_DAYS_LIMIT) more days (PEM_FORCE) |
-s, –save_private_key | [VALUE] Set to save the private RSA key (PEM_SAVE_PRIVATEKEY) |
-a, –app_identifier | STRING The bundle identifier of your app (PEM_APP_IDENTIFIER) |
-u, –username | STRING Your Apple ID Username (PEM_USERNAME) |
-b, –team_id | STRING The ID of your Developer Portal team if you’re in multiple teams (PEM_TEAM_ID) |
-l, –team_name | STRING The name of your Developer Portal team if you’re in multiple teams (PEM_TEAM_NAME) |
-p, –p12_password | STRING The password that is used for your p12 file (PEM_P12_PASSWORD) |
签名
sign可以创建,更新,下载和修复 provisioning profiles(使用一个命令)。
它支持App Store,Ad Hoc,开发和企业配置文件,并支持好的特性,如自动添加所有测试设备。
1 |
|
进入工程目录后
1 |
|
命令 | 描述 |
---|---|
fastlane sigh | App Store profile 或 InHouse profile |
fastlane sigh -a com.krausefx.app -u username | 指定bundle identifier 和 username(apple id) |
fastlane sigh –adhoc | 生成Ad Hoc profile |
fastlane sigh –development | 生成 development profile |
fastlane sigh -o “./Certificates/“ | 指定输出文件夹 |
fastlane sigh download_all | 下载所有的 provisioning profiles |
fastlane sigh –help | 列出帮助 |
高级使用
命令 | 描述 |
---|---|
fastlane sigh –skip_install | 默认情况下,sigh将下载的配置文件安装在您的机器上。 如果只想生成配置文件并跳过安装,使用该命令 |
fastlane sigh -a com.krausefx.app -u username -q “myProfile.mobileprovision” | 用特定的名字保存,使用 -q |
fastlane sigh –skip_certificate_verification | 跳过验证安装在本机上的 code signing identity |
fastlane sigh –force | 如果您需要更新配置配置文件,而不管其状态如何,请使用–force选项。这给您一个具有最大生命周期的配置文件。 –force还会将所有可用的设备添加到此配置文件中。 |
fastlane sigh –help | 查看帮助:列出可用参数和命令 |
结合fastlane 使用
1 |
|
force:true将确保在每次运行时重新生成配置配置文件。 这将使得sign总是使用正确的签名证书(signing certificate),证书将会被安装到本机上。
所有参数
命令 | 描述 |
---|---|
–adhoc | [VALUE] Setting this flag will generate AdHoc profiles instead of App Store Profiles (SIGH_AD_HOC) |
–development | [VALUE] Renew the development certificate instead of the production one (SIGH_DEVELOPMENT) |
–skip_install | [VALUE] By default, the certificate will be added to your local machine. Setting this flag will skip this action (SIGH_SKIP_INSTALL) |
-f, –force | [VALUE] Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles (SIGH_FORCE) |
-a, –app_identifier | STRING The bundle identifier of your app (SIGH_APP_IDENTIFIER) |
-u, –username | STRING Your Apple ID Username (SIGH_USERNAME) |
-b, –team_id | STRING The ID of your Developer Portal team if you’re in multiple teams (SIGH_TEAM_ID) |
-l, –team_name | STRING The name of your Developer Portal team if you’re in multiple teams (SIGH_TEAM_NAME) |
-n, –provisioning_name | STRING The name of the profile that is used on the Apple Developer Portal (SIGH_PROVISIONING_PROFILE_NAME) |
–ignore_profiles_with_different_name | [VALUE] Use in combination with :provisioning_name - when true only profiles matching this exact name will be downloaded(SIGH_IGNORE_PROFILES_WITH_DIFFERENT_NAME) |
-o, –output_path | STRING Directory in which the profile should be stored(SIGH_OUTPUT_PATH) |
-i, –cert_id | STRING The ID of the code signing certificate to use (e.g. 78ADL6LVAA) (SIGH_CERTIFICATE_ID) |
-c, –cert_owner_name | STRING The certificate name to use for new profiles, or to renew with. (e.g. “Felix Krause”) (SIGH_CERTIFICATE) |
-q, –filename | STRING Filename to use for the generated provisioning profile (must include .mobileprovision) (SIGH_PROFILE_FILE_NAME) |
-w, –skip_fetch_profiles | [VALUE] Skips the verification of existing profiles which is useful if you have thousands of profiles (SIGH_SKIP_FETCH_PROFILES) |
-z, –skip_certificate_verification | [VALUE] Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine(SIGH_SKIP_CERTIFICATE_VERIFICATION) |
-p, –platform | [VALUE] Set the provisioning profile’s platform (i.e. ios, tvos) (SIGH_PLATFORM) |
–template_name | STRING The name of provisioning profile template. If the developer account has provisioning profile templates, template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile(SIGH_PROVISIONING_PROFILE_TEMPLATE_NAME) |
自动打包
用法:
1 |
|
当然可以增加一些配置:
1 |
|
选择Xcode:
1 |
|
列出可用参数列表:
1 |
|
运行遇到错误,使用verbose模式获取更多信息:
1 |
|
如果您没有上传到App Store或TestFlight,请设置正确的导出方法:
1 |
|
要使用bool参数,确保这么使用gym:
1 |
|
获取xcodebuild输出,请到~/Library/Logs/gym查看。
gym 的常用参数
Options for build:
命令 | 描述 |
---|---|
-w, –workspace | STRING Path to the workspace file (GYM_WORKSPACE) |
-p, –project | STRING Path to the project file (GYM_PROJECT) |
-s, –scheme | STRING The project’s scheme. Make sure it’s marked as Shared (GYM_SCHEME) |
-c, –clean | [VALUE] Should the project be cleaned before building it? (GYM_CLEAN) |
-o, –output_directory | STRING The directory in which the ipa file should be stored in (GYM_OUTPUT_DIRECTORY) |
-n, –output_name | STRING The name of the resulting ipa file (GYM_OUTPUT_NAME) |
-q, –configuration | STRING The configuration to use when building the app. Defaults to ‘Release’ (GYM_CONFIGURATION) |
-a, –silent | [VALUE] Hide all information that’s not necessary while building (GYM_SILENT) |
-i, –codesigning_identity | STRING The name of the code signing identity to use. It has to match the name exactly. e.g. ‘iPhone Distribution: SunApps GmbH’ (GYM_CODE_SIGNING_IDENTITY) |
–skip_package_ipa | [VALUE] Should we skip packaging the ipa? (GYM_SKIP_PACKAGE_IPA) |
-m, –include_symbols | [VALUE] Should the ipa file include symbols? (GYM_INCLUDE_SYMBOLS) |
-z, –include_bitcode | [VALUE] Should the ipa file include bitcode? (GYM_INCLUDE_BITCODE) |
-j, –export_method | STRING Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id (GYM_EXPORT_METHOD) |
–export_options | [VALUE] Specifies path to export options plist. Use ‘xcodebuild -help’ to print the full set of available options (GYM_EXPORT_OPTIONS) |
–export_xcargs | STRING Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS=”-ObjC -lstdc++” (GYM_EXPORT_XCARGS) |
–skip_build_archive | [VALUE] Export ipa from previously built xarchive. Uses archive_path as source (GYM_SKIP_BUILD_ARCHIVE) |
–build_path | STRING The directory in which the archive should be stored in (GYM_BUILD_PATH) |
-b, –archive_path | STRING The path to the created archive (GYM_ARCHIVE_PATH) |
-f, –derived_data_path | STRING The directory where built products and other derived data will go (GYM_DERIVED_DATA_PATH) |
-u, –result_bundle | [VALUE] Location of the Xcode result bundle (GYM_RESULT_BUNDLE) |
-l, –buildlog_path | STRING The directory where to store the build log (GYM_BUILDLOG_PATH) |
-k, –sdk STRING | The SDK that should be used for building the application (GYM_SDK) |
–toolchain | [VALUE] The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a) (GYM_TOOLCHAIN) |
-d, –destination | STRING Use a custom destination for building the app (GYM_DESTINATION) |
-g, –export_team_id | STRING Optional: Sometimes you need to specify a team id when exporting the ipa file (GYM_EXPORT_TEAM_ID) |
-x, –xcargs | STRING Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS=”-ObjC -lstdc++” (GYM_XCARGS) |
-y, –xcconfig | STRING Use an extra XCCONFIG file to build your app (GYM_XCCONFIG) |
-r, –suppress_xcode_output | [VALUE] Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path (SUPPRESS_OUTPUT) |
–disable_xcpretty | [VALUE] Disable xcpretty formatting of build output (DISABLE_XCPRETTY) |
–xcpretty_test_format | [VALUE] Use the test (RSpec style) format for build output (XCPRETTY_TEST_FORMAT) |
–xcpretty_formatter | STRING A custom xcpretty formatter to use (XCPRETTY_FORMATTER) |
–xcpretty_report_junit | STRING Have xcpretty create a JUnit-style XML report at the provided path (XCPRETTY_REPORT_JUNIT) |
–xcpretty_report_html | STRING Have xcpretty create a simple HTML report at the provided path (XCPRETTY_REPORT_HTML) |
–xcpretty_report_json | STRING Have xcpretty create a JSON compilation database at the provided path (XCPRETTY_REPORT_JSON) |
–analyze_build_time | [VALUE] Analyze the project build time and store the output in ‘culprits.txt’ file (GYM_ANALYZE_BUILD_TIME) |
–xcpretty_utf | [VALUE] Have xcpretty us |
至此打包基本完成!!!
参考文档
自动化工具Fastlane笔记三: snapshot自动截图基础+示例
无法录制
fastlane - snapshot 自动截图
小团队的自动化发布-Fastlane带来的全自动化发布
fastlane入门之snapshot
fastlane 之截图自动化
fastlane