前言
项目组刚开始的时候,用的蒲公英发的测试包,但是多账号的蒲公英不方便管理同一个地址的测试包,所以开始尝试自己的制作方法。
利用GitHub搭建
用web安装测试包,必须搭载具有HTTPS协议的服务器,所以想来想去,还是GitHub最方便。
创建仓库
登录你的GitHub,新建一个远程仓库,创建的时候,许可证、readme、忽略文件都不需要,直接开干。建完后拉倒本地,在本地随便找找张图片,在同步到远程,第一步就完成了。
获取GitHub文件地址
打开你的github创建的仓库,点开你的图片。
然后你会看见一个下载的按钮,点击。
接着你就会看到一个新的窗口,显示了该张图片(我的是safari,其他浏览器不知道什么效果),找到上方的地址,就会获取到图片所在的资源地址了。
你复制下来,等会会用到。
打包
当你项目Archive完后,不管你打下面2种的哪种包。
都会出现这个选项,把他勾选上。
勾选上的原因是,当你打包完后,会比原来多出来一个
manifest.plist
文件。然后会跳出来这个窗口他会让你填3个URL地址,第一个是测试包的地址,下面2个是图片地址,图片地址不重要,感觉也没什么用。把你上一步得到的地址复制到3个框内,把第一个App URL最后的图片名字改成后缀为.ipa的文件名,名字随便取,后面我们打包完后可以改成相同的名字。
Name那行你也可以改,这个对应的是在你网页安装时,提示你的名字。
在下面就是你正常打包的过程了。
上传测试包
我打的是企业证书的包,把下面2个文件复制到你刚才的仓库里(ipa包和manifest.plist)
复制完后,记得把你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一定要填对
在操作的过程中会遇到输入的地方,这边说下:
- Enter pass phrase for app.key:输入证书密码
- Verifying - Enter pass phrase for app.key:确认密码,后面出现密码的时候都输同一个密码就行
- Country Name (2 letter code) :输入国家名,中国填CN就行
- State or Province Name (full name) :省名,我填的Shanghai
- Locality Name (eg, city) :市县名,我还是Shanghai
- Organization Name (eg, company):公司名,我填的eastmoney ltd
- Organizational Unit Name:部门名字,我填的choice
- Common Name (eg, fully qualified host name):这个比较关键,一定要填对,这个写你服务器的名字或者你的ip地址,例如192.168.1.10
- Email Address:这个填邮箱,我就不示范了
- A challenge password:还是填上面的密码
上面会有重复的填写,照填就行,当4步都成功后,你会看见4个文件。
其中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
命令,检查配置。
果然踩坑了,出现如下情况
112的那个问题解决方案是把/etc/apache2/extra/httpd-vhosts.conf文件中2个80的代码全注释了
526的解决方案是修改/etc/apache2/httpd.conf文件,去掉LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
的#号;
再次检查配置,发现还有问题。。。
只需要在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,是我在找失败原因的时候看到一遍不错的文章,虽然没有解决我的问题。