傻瓜式打包ipa发布OTA

所谓OTA

OTA即Over-the-Air,是Apple在 iOS4中新加的一项技术,目的是让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。简单地说,就是用户只需要在Safari中点开一条链接,就能直接在主界面中安装App。
OTA方式安装,是通过Safari解析链接中的"itms-services://"来实现的。例如:

 Iphone Download

Safari会去读取installIPA.plist中的信息,如:iOS应用的ipa文件、版本、安装地址等。这里打包的ipa有几种方式:
1、通过企业证书签名打包发布(比如pp助手,同步推,迅雷等永远不能上架AppStore的应用厂商就是这么干的)
2、通过个人证书签名打包发布(Ad_hoc)
3、不签名直接打包,只能安装在越狱机器上
我们这里实现第二种,有企业证书的最好用第一种,注意在打包之前配置好证书(有企业证书的配置企业证书):


傻瓜式打包ipa发布OTA_第1张图片

实现步骤:
1、打包签名ipa
2、发布到webserver上面
3、Safari输入地址,直接点击安装

用打包工具打包

可以直接用Xcode自带的archivie工具打包,但是这种操作繁琐,archive完了之后还要各种点,不推荐。

傻瓜式打包ipa发布OTA_第2张图片

现在有很多现成的打包工具,比如 https://github.com/nomad/shenzhen,还有fir-cli等。这里采用fir的命令行工具fir-cli https://github.com/FIRHQ/fir-cli。
先安装:

sudo gem install fir-cli -v 1.5.0

安装完之后敲fir命令可能提示:

Unable to activate fir-cli-1.5.0, because CFPropertyList-3.0.0 conflicts with CFPropertyList (~> 2.3) (Gem::ConflictError)

执行下面命令修复:

sudo gem uninstall CFPropertyList -v 3.0
sudo gem install CFPropertyList -v 2.3.6

在工程根目录下执行打包命令:

fir build_ipa ./ -v -o ~/Desktop/ -B master -S TestAppRelease -n TestAppRelease

这里解释一下:
fir build_ipa是打包命令,-v是啰嗦模式,就是会把打包日志都打印出来,方便查看错误信息,-o后面的参数是输出ipa的路径,-B是branch分支,-S是scheme名称,-n是ipa的名称。还有其他的参数,具体可查看fir-cli的官方说明。
执行命令可能会提示这个错误:

xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

下载PackageApplication https://www.jianshu.com/p/88bb51cba34d,解压缩到目录:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
执行命令:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

重新执行上面的fir build_ipa命令,打包完成之后会看到ipa文件和符号文件:


傻瓜式打包ipa发布OTA_第3张图片

上传到webserver

1、上传到fir,或者蒲公英等第三方平台:直接去注册账号,上传。
2、上传到自己的webserver:由于OTA限制只能使用https而不是http,因此又有两种选择:1、发布到带域名的外网webserver;2、发布到内网IP地址webserver。第一种域名固定,客户端不用安装证书,第二种内网下载速度更快,但是现在多是动态分配ip,如果作为webserver的机器IP地址变换,需要下载客户端多次安装证书。下面说第二种方法。
有很多教程自己搭建本地内网webserver的,比如https://www.jianshu.com/p/35ca63ec0d8e,但是比较繁琐,需要自己配置ssl证书,自己配置plist文件等。这里使用工具
https://github.com/bumaociyuan/ios-ipa-server,省去上述繁琐步骤。安装ios-ipa-server:

sudo npm install -g ios-ipa-server

新建一个文件夹,将ipa文件拷贝进去


傻瓜式打包ipa发布OTA_第4张图片

到该文件夹下面开启服务:

ios-ipa-server

看到有下面的服务开启的提示:

Open download page https://192.168.0.107:1234/download

在safari上面输入https://192.168.0.107:1234/download,会看到下面的页面

傻瓜式打包ipa发布OTA_第5张图片

点击”显示详细信息“-”继续访问“
傻瓜式打包ipa发布OTA_第6张图片

点击安装证书,安装好证书之后,再点击下载,如果还是无法下载,说明你的系统是10.3以后的系统,进入设置 > 通用 > 关于本机 > 证书信任设置 > 打开对应证书的switch开关:
傻瓜式打包ipa发布OTA_第7张图片

再返回safari,点击下载。如果下载安装的app是灰色的不能用,应该是打包的证书设置有问题,去前面设置企业证书或者ad hoc证书重新打包。
此外建议webserver的机器设置为固定ip,避免ip变动,导致客户端又需要重新安装新的证书。

参考:
https://www.jianshu.com/p/35ca63ec0d8e
https://www.jianshu.com/p/88bb51cba34d
https://github.com/bumaociyuan/ios-ipa-server

你可能感兴趣的:(傻瓜式打包ipa发布OTA)