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

前言

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

利用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一定要填对

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

  • 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个文件。


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,是我在找失败原因的时候看到一遍不错的文章,虽然没有解决我的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容