iOS - 一行命令自动打包发布到Fir和AppStore
前言
以往都是用繁琐的打包方式,虽然已经习惯的,但浪费时间这点是必然有的,索性今天就研究了下自动化打包,其实比我想象中的简单,之后简单,是因为有前者已经铺好了路。
常用的自动化打包有两种:Jenkins;或脚本shell,原理都差不多,但Jenkins必然是经过第三方的,配置相当麻烦,但可以支持直接Git打包。这边我推荐的是脚本shell打包方式。
关于自动化打包的,这篇已经写得非常清楚了,我就不窃取了。参考:https://www.jianshu.com/p/05dc9f925467
这边主要说下执行过程中错误和修改:
1、安装fir-cli时错误
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory
原因:对于Mac OS X 10.11 El Capitan以上用户,由于系统启用了SIP(System Integrity Protection), 导致root用户也没有权限修改/usr/bin目录。
解决方案有两种:
1)更换目录(推荐):
sudo gem install -n /usr/local/bin fir-cli
2)屏蔽方法:
重启Mac,按住command+R,进入recovery模式。选择打开Utilities下的终端,输入:csrutil disable并回车,然后正常重启Mac即可。
2、配置证书错误
error: exportArchive: "***.app" requires a provisioning profile.
Error Domain=IDEProvisioningErrorDomain Code=9 ""WaynetCloud.app" requires a provisioning profile." UserInfo={NSLocalizedDescription="WaynetCloud.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
** EXPORT FAILED **
原因:因为 Xcode 9 默认不允许访问钥匙串的内容,所以我们需要在plist里配置相关证书。
解决方案:在plist (exportAppstore / exportTest)添加配置证书
<key>provisioningProfiles</key>
<dict>
<key>%app_bundle_id%</key>
<string>%provisioning profiles name or uuid%</string>
</dict>
<key>signingCertificate</key>
<string>%codesign_identity%</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>%teamid%</string>
<key>method</key>
<string>development</string>
上面代码中的%***%需要替换为自己项目的实际内容,不要%%
%app_bundle_id% 是app的bundleid 一般是com.abc.abc 之类的
%provisioning profiles name or uuid% 这个是provisioning profiles 的名称或uuid
%codesign_identity% 这个是签名 可以是名称或uuid 如:"iPhone Developer:zhang san(FFFFFFFF)"
%teamid% 这个是10位的teamid
其中key:method 对应了导出ipa的方式:app-store,ad-hoc,package,enterprise,development,developer-id,and mac-application. 默认是development