iOS-一键打包发布
- 前言
- 特别说明
- 目的
- 步骤
- 问题集锦or注意事项
- end
前言: 在日常开发的过程中,有时候需要频繁的打包,特别是当项目开发改了一个小bug也需要重新打包安装,会比较慢,浪费时间与效率,曾经遇到线上线下问题不一致排除的时候需要频繁发布。电脑卡顿的时候,解决问题一分钟,打包就一小时。所以一件发布很有必要
特别说明: 如果项目没有采用Cocoapodsa管理,没有.xcworkspace,只有xcodeproj:只需要将脚本这句
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
替换成这句就可以了
xcodebuild \
archive -project ${project_path}/${project_name}.xcodeproj \
目的:
- 提交测试版本的ipa,或者下载地址给测试人员,配置到证书,appid跟描述文件,在produce-archive编译打包,在上传。需要专业人工操作并且耗费时间
- 提交到app store审核。审核就是一个坑。各种规则规范一大堆慢慢解决
步骤:</font>
一:准备工作
-
因为需要上传到Fir平台。需要先安装fir-cli。使用gem install fir-cli 准备fir平台的登陆token如果不想上传到fir则忽略.token在登陆后的个人列表选中api token生成
avatar - 注册蒲公英账号,获取蒲公英则需要akey和ukey,如果不上传则忽略
- 苹果开发者账号一枚.用于获取证书与描述文件等
二:配置打包的plist文件
说明:
- 在xcode9之前不需要provisionProfiles,在xcode9之后加入provisionProfiles才能打包通过.
- 打包方法method包含四种
app store (打包app store ipa 包)
ad hoc (打包测试上传到fir or 蒲公英包)
enterprise (企业开发中打包)
development (保存一个ipa 单独用于开发或者部署来使用)
在.xcodeproj或者.xcworkspace目录下配置
- 配置导出测试ad-hoc测试plist文件-exportTest.plist
<dict>
<key>method</key>
<string>ad-hoc</string>
<key>compileBitcode</key>
<false/>
<key>provisioningProfiles</key>
<dict>
<key>com.zhile.miyuan</key>
<string>miyuanAdHoc</string>
</dict>
</dict>
- 配置导出app store文件 - exportAppstore.plist
<dict>
<key>method</key>
<string>app-store</string>
<key>uploadBitcode</key>
<true/>
<key>uploadSymbols</key>
<true/>
</dict>
三:使用xcedebuild打包
说明:
-
工程绝对路径:project_path=0`; pwd)
-
工程名:project_name=XXX
-
scheme名:scheme_name=XXX
-
打包模式 Debug/Release development_mode=Release
-
build文件夹路径 build_path=${project_path}/build
-
plist文件所在路径exportOptionsPlistPath=${project_path}/exportTest.plist
-
导出.ipa文件所在路径exportIpaPath={development_mode}
打包:
- 清理一下版本缓存-configuration 等于 debug or release
xcodebuild \
clean -configuration release
- 编译工程
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive
- 导出ipa包
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
- 上传ipa包
上传fir
fir login -T XXX
fir publish $exportIpaPath/$scheme_name.ipa
上传到蒲公英
curl -F "file=@"${exportIpaPath}"/"${scheme_name}.ipa \
-F "uKey=275140e30b2044291ac695f1bd5c475e" \
-F "_api_key=08d597e3b51430760932c5157e4369c2" \
https://www.pgyer.com/apiv2/app/upload
问题集锦or注意事项
- 安装fir-cli失败报错
ERROR: Could not find a valid gem 'fir-cli' (>= 0), here is why:
Unable to download data from http://gems.ruby-china.org/ - bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz)
HuZhiYuandeMacBook-Pro:~ zyuan$ gem sources -l
说明镜像错误。最新的镜像为
http://gems.ruby-china.com/
注意后缀是com.而不是org
- 打包过程中遇到错误
error: exportArchive: No profiles for 'com.zhile.miyuan' were found
Error Domain=IDEProfileLocatorErrorDomain Code=1 "No profiles for 'com.zhile.miyuan' were found" UserInfo={NSLocalizedDescription=No profiles for 'com.zhile.miyuan' were found, NSLocalizedRecoverySuggestion=Xcode couldn't find any iOS Ad Hoc provisioning profiles matching 'com.zhile.miyuan'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.}
说明最新的导出plist文件需要添加描述文件的配置provisioningProfiles
provisioningProfiles = {
"com.zhile.miyuan" = miyuanAdHoc;
};
网友评论