fastlane打包IOS
前言
公司准备搭建持续集成环境,ios方面选用fastlane作为打包工具,这里记录一下安装过程
fastlane 使用ruby编写,为自动化iOS和Android应用程序Beta部署和发布提供便捷方法
环境
- macOS Xcode 10.3
- ruby 2.6.5
安装fastlane
- 确保已安装xcode
xcode-select --install
如果已安装会提示
xcode-select: error: command line tools are already installed, use “Software Update” to install updates
- 安装fastlane
执行命令 二选一
# Using RubyGems
sudo gem install fastlane -NV
# Alternatively using Homebrew
brew cask install fastlane
设置环境变量
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
使用fastlane
- 在项目根目录执行
fastlane init
选择所有功能,会在项目中生成fastlane文件夹,文件夹中有Fastfile,Appfile 两个文件
Fastfile :定义fastlane配置
default_platform(:ios)
platform :ios do
lane :initpod do |options| # 使用了cocoapods,定义初始化cocoapods
cocoapods
carthage(
platform: "ios"
)
end
lane :beta do |options|
if is_ci? #是否在持续集成环境,由于以后要在持续集成环境(jenkins)中使用,需要初始化持续集成环境,options 操作可以传入参数,eg:fastlane beta kcpath:"" kcpwd:""
setup_jenkins(
keychain_path: options[:kcpath], #ci机器钥匙串路径
keychain_password: options[:kcpwd] #ci机器解锁钥匙串密码
)
end
changelog_from_git_commits( #设置上传testflight待测功能日志,取gitcommit最新10条记录
commits_count: 10,
pretty: "- (%ae) %s",
date_format: "short",
match_lightweight_tag: false,
merge_commit_filtering: "exclude_merges"
)
increment_build_number({
build_number: latest_testflight_build_number.to_i + 1 #设置上传testflight buildnumber 获取最新数字+1
})
build_ios_app(
scheme:"大学Stage",
workspace: "project.xcworkspace",
export_method: "app-store",#导出ipa类型
export_xcargs: "-allowProvisioningUpdates",
clean: true, #清除
output_directory:"./build",
output_name: "project.ipa",
sdk: "iphoneos",
configuration: ""
)
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t Aspera" #设置上传方式
pilot(
username: "", #apple id
ipa: "./build/project.ipa",
itc_provider: "",
app_identifier: ""
)
end
end
Appfile :定义apple id信息
app_identifier "" # The bundle identifier of your app
apple_id "" # Your Apple email address
team_id ""
itc_team_id ""
参考
https://docs.fastlane.tools/
遇到的问题
latest_testflight_build_number + 1 -> [!] no implicit conversion of Fixnum into String
官方给的获取testflight最新版本+1 例子是
increment_build_number({
build_number: latest_testflight_build_number + 1
})
改为
increment_build_number({
build_number: latest_testflight_build_number.to_i + 1
})
参考
https://github.com/fastlane/fastlane/issues/12097
证书问题
需要使用admin权限的账号登录下xcode同步一下证书
上传testflight慢
设置上传方式,这个方式需要开启防火墙,上传时会报错Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443 但是并不影响
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t Aspera"