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)添加配置证书

provisioningProfiles
       
            %app_bundle_id%
            %provisioning profiles name or uuid%
       

 signingCertificate
 %codesign_identity%
 signingStyle
 manual
 teamID
 %teamid%
 method
 development

上面代码中的%***%需要替换为自己项目的实际内容,不要%%

%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

你可能感兴趣的:(iOS - 一行命令自动打包发布到Fir和AppStore)