如何像蒲公英一样,用Safari安装测试包,OTA

2018-06-01  本文已影响160人  田心甜心

前言

项目组刚开始的时候,用的蒲公英发的测试包,但是多账号的蒲公英不方便管理同一个地址的测试包,所以开始尝试自己的制作方法。

利用GitHub搭建

用web安装测试包,必须搭载具有HTTPS协议的服务器,所以想来想去,还是GitHub最方便。

创建仓库

登录你的GitHub,新建一个远程仓库,创建的时候,许可证、readme、忽略文件都不需要,直接开干。建完后拉倒本地,在本地随便找找张图片,在同步到远程,第一步就完成了。

获取GitHub文件地址

打开你的github创建的仓库,点开你的图片。


image.png

然后你会看见一个下载的按钮,点击。


image.png
接着你就会看到一个新的窗口,显示了该张图片(我的是safari,其他浏览器不知道什么效果),找到上方的地址,就会获取到图片所在的资源地址了。
image.png

你复制下来,等会会用到。

打包

当你项目Archive完后,不管你打下面2种的哪种包。

image.png
都会出现这个选项,把他勾选上。
image.png
勾选上的原因是,当你打包完后,会比原来多出来一个manifest.plist文件。然后会跳出来这个窗口
image.png
他会让你填3个URL地址,第一个是测试包的地址,下面2个是图片地址,图片地址不重要,感觉也没什么用。把你上一步得到的地址复制到3个框内,把第一个App URL最后的图片名字改成后缀为.ipa的文件名,名字随便取,后面我们打包完后可以改成相同的名字。
Name那行你也可以改,这个对应的是在你网页安装时,提示你的名字。
在下面就是你正常打包的过程了。

上传测试包

我打的是企业证书的包,把下面2个文件复制到你刚才的仓库里(ipa包和manifest.plist)

image.png

复制完后,记得把你ipa包名字改成上面你修改的名字一致,忘记的同学可以自己看下plist文件,当然,也可以修改plist文件里的名字,只要一致就行。
干完上面的事情后,你就可以提交到远程了,测试包大的话有点慢,耐心等下。

验证成果啦

提交到远程成功后,获取plist文件的URL,还是上面的图片地址,就是把链接最后面的图片名改成plist的文件名,我的是这样的:https://raw.githubusercontent.com/你的GitHub/WebInstall/master/manifest.plist
然后把这个链接嵌入到下面这个链接你就大功告成了:itms-services://?action=download-manifest&url=要嵌入的地址
最后,用iPhone的Safari打开这个链接就成功了。

如果你有web的小伙伴,可以让他写个网页,点击按钮跳转这个链接就可以了。

利用本地服务器安装

上面用的GitHub的服务器,总归是别人的,还不如用蒲公英呢,而且上传ipa包也很慢,所以想弄一个局域网服务器。
只想知道原理的同学,下面可以不用看了,因为这个我是边查资料边弄边写的,不一定能成功。

搭建Apache服务

首先要开启mac自带的Apache服务,这里就不多说了,附上我上篇的文章https://www.jianshu.com/p/b975c1d7c7cc
接下来要给服务器添加SSL证书了

创建证书

打开你的终端,选择一个文件夹,进入里面,用来放证书的,先附上代码

1.生成私钥,命令: sudo openssl genrsa -des3 -out app.key 1024

2.生成签署申请,命令: sudo openssl req -new -key app.key -out app.csr

3.生成服务器的私钥,命令: sudo openssl rsa -in app.key -out server.key

4.生成给网站服务器签署的证书,命令: sudo openssl req -new -x509 -days 3650 -key server.key -out server.crt

操作步骤中的Common Name请填写自己的服务器地址或者ip,需要注意的是Common Name一定要填对

在操作的过程中会遇到输入的地方,这边说下:

上面会有重复的填写,照填就行,当4步都成功后,你会看见4个文件。


image.png

其中server.crt和server.key就是要制作的签名证书。

配置Apache

在编辑之前先说下,最好在编辑文件之前都备份一份
编辑/etc/apache2/httpd.conf文件,去掉下面三行前面的#号

LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /etc/apache2/extra/httpd-ssl.conf
Include /etc/apache2/extra/httpd-vhosts.conf

上面是别人的,可能不一样,我的是这样的:

Include /private/etc/apache2/extra/httpd-ssl.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf

文件路径不一样,在全文搜索的时候复制后半段就行,后面不一样的我就不描述了,贴的代码都是我实际的路径。

编辑/etc/apache2/extra/httpd-ssl.conf文件,去掉下面两行前面的#号

SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"

这块描述的是证书的地址,我们把上面创建出来的证书拷贝到这个地址。

编辑/etc/apache2/extra/httpd-vhosts.conf文件,在NameVirtualHost*:80后面添加一段如下内容:

<VirtualHost *:443>
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/apache2/server.crt
    SSLCertificateKeyFile /etc/apache2/server.key
    ServerName 10.10.2.123 
    DocumentRoot "/Users/hyf/Sites"
</VirtualHost>

上面的配置按照实际的情况修改
运行sudo apachectl configtest命令,检查配置。
果然踩坑了,出现如下情况

image.png

112的那个问题解决方案是把/etc/apache2/extra/httpd-vhosts.conf文件中2个80的代码全注释了


image.png

526的解决方案是修改/etc/apache2/httpd.conf文件,去掉LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so的#号;

再次检查配置,发现还有问题。。。


image.png

只需要在apache安装目录/etc/apache2/httpd.conf文件中启用ServerName配置指令即可。

加上:ServerName localhost:80

apache的配置文件httpd.conf中默认是存在类似的指令的,不过在该指令前添加了#号,注释掉了该句,我们只需要模仿着增加一行。

再次检查配置,这次OK了,但是心情很忐忑,感觉已经走远。

测试过后发现,HTTPS好像成功了,但是用web安装还是失败了,显示无法连接。
对了,记得第一次浏览网页时安装证书。

后记

那天下班有点急,后来查了下,失败的原因猜测是自签的SSL证书苹果可能不信任。安装的证书后要记得信任:https://support.apple.com/zh-cn/HT204477,在然后就成功啦
不会安装证书的朋友可以看这篇:https://www.jianshu.com/p/bd016015efe7,是我在找失败原因的时候看到一遍不错的文章,虽然没有解决我的问题。

上一篇 下一篇

猜你喜欢

热点阅读