#ipa打包、分发测试
##1.打包
###xcodebuild
Apple的命令行打包工具
#####下载xcodebuild(Command Line Tools Package) 或 命令行执行xcode-select --install
#####使用举例:导出ipa包
- xcodebuild clean install
- xcodebuild -project marathon.xcodeproj -scheme marathon archive -archivePath ./
- xcodebuild -exportArchive -exportFormat IPA -archivePath ../marathon.xcarchive -exportPath ./
###xctool
- xctool是Apple的xcodebuild基础上的封装;操作更简便
###shenzhen
- 命令行生成、分发ipa包到各平台(iTunes Connect、fir.im等)
- 支持命令行方式查看ipa信息
###gym
- Fastlane的部分工具之一;可以替代shenzhen
- 创建打包有签名的ipa包,支持TestFlight(iTunes Connect)方式分发测试
##2.分发平台
###蒲公英
- 支持命令行分发ipa
###fir.im
- 非企业账号安装app需要添加UDID
- 支持命令行生成、分发ipa
- 内部测试者:最多25个
- 外部测试者:最多1000个
- 不需要添加UDID,只需要提供邮箱
##3.分发 ###Fastlane
-
命令行打包、分发、邀请tester的工具链
-
支持TestFlight
-
支持多航线分发,可选择分发到不同平台:蒲公英、fir.im、TestFlight(iTunes Connect)
##4.方案 ###非TestFlight分发测试
###TestFlight分发测试
##5.举例(Fastlane) ###5.1 安装以下工具
###5.2 配置Xcode工程文件
- 选择TARGET下Build Settings中Code Signing选项
- Code Signing Identity 选为
iOS Distribution
;Provisioning Profile 选为Automatic
,值填$(PROFILE_UDID)
- 参照CodeSigning->Best Solution: Using environment variables
###5.3 运行Fastlane命令后,配置Fastfile
-
lane beta(TestFlight) 配置如下
lane :beta do sigh ENV["PROFILE_UDID"] = lane_context[SharedValues::SIGH_UDID] gym(scheme: "marathon") deliver(beta: true) end
-
lane pgyer(蒲公英) 配置如下
lane :pgyer do ENV["PROFILE_UDID"] = lane_context[SharedValues::SIGH_UDID] gym(scheme: "marathon",use_legacy_build_api: true) sh "../pgyer.sh" end
-
lane fir(fir.im) 配置如下
lane :fir do ENV["PROFILE_UDID"] = lane_context[SharedValues::SIGH_UDID] gym(scheme: "marathon",use_legacy_build_api: true) sh "../fir.sh" end
###5.4 配置渠道脚本
####pgyer.sh(蒲公英)
pwd
#切换到目标目录
cd ..
pwd
#替换ipa文件名
curl -F "file=@{$filePath}" \
#替换uKey(User Key)和_api_key(API Key)
-F "uKey={$uKey}" \
-F "_api_key={$apiKey}" \
http://www.pgyer.com/apiv1/app/upload
其中:
- {$filePath}是应用安装包文件的路径
- {$uKey}是开发者的用户 Key,在应用管理-API中查看
- {$apiKey}是开发者的 API Key,在应用管理-API中查看
见蒲公英
####fir.sh(fir.im)
pwd
#切换到目标目录
cd ..
pwd
#发布应用到fir.im(配置生成的ipa名和fir.im API Token)
fir p path/to/application -T YOUR_FIR_TOKEN
###5.5 工程目录结构
- projectName
- framework
- projectName
- projectName.xcodeproj
- projectNameTests
- fastlane
- Appfile
- Deliverfile
- Fastfile
- fir.sh
- pgyer.sh
##6.常见问题
###6.1 Ruby类库安装不了?选择RubyGems 镜像(淘宝网)
###6.2 fastlane配置文件中带自定义脚本,运行命令时出现 Permission denied - ../xx.sh
- 是脚本文件权限不够,修改脚本权限:
sudo chmod a+x ./xx.sh
###TODO
- deliver/fastlane分发ipa到iTunes Connect不支持TestFlight?
- fastlane已支持TestFlight
- 管理provision
- IPALane优化
- 支持多target配置
- 支持多Configuration配置