问题背景

在完成iOS APP持续集成打包的需求后,一直想实现APP扫码安装,方便开发和测试调试APP。但因为没有研发人员的配合,只能拖到新来的研发同事进场,我们一起克服各种问题实现了这个功能。

不想使用第三方的分发测试平台,总是有些担心安全的问题,但不可否认,使用第三方就是最简便快捷的。不过个人还是喜欢将一切尽可能控制在自己手里了。

总体说明

整个过程分为几个关键点:

  1. 二维码生成
  2. 下载二维码格式
  3. plist文件
  4. https服务器
  5. plist的URL
  6. 二维码显示插件
  7. 阻碍二维码显示的jenkins安全配置

二维码生成

参考:python之qrcode模块生成二维码
直接给脚本:

import qrcode
import argparseparser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('--urlPath', type=str, default = None)
parser.add_argument('--imagePath', type=str, default = None)
args = parser.parse_args()urlData = args.urlPath
img_path = args.imagePath# 实例化QRCode生成qr对象
qr = qrcode.QRCode(version=1,    error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=10,border=4
)
# 传入数据
qr.add_data(urlData)
qr.make(fit=True)
# 生成二维码
img = qr.make_image()
# 保存二维码
img.save(img_path)

下载二维码格式

itms-services://?action=download-manifest&url=<plist的URL>

这个就是上面脚本的第一个输入参数urlPath的值;

plist模板

如下模板,修改5个参数即可。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>items</key><array><dict><key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><string>ipa安装包的URL</string></dict><dict><key>kind</key><string>full-size-image</string><key>needs-shine</key><true/><key>url</key><string>安装包icon URL</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><string>APP标识,根据打包参数修改</string><key>bundle-version</key><string>APP版本,根据打包参数修改</string><key>kind</key><string>software</string><key>title</key><string>APP名称,根据打包参数修改</string></dict></dict></array></dict>
</plist>

https服务器

上述plist必须放到一个https服务器上,否则无法下载安装;
尝试了github,gitee,发现gitee可用,plist就放到gitee上了,以后自建https服务器,放在内网环境中。

我们实现中是将ipa包放在本地http服务器上了,只将plist配置文件和APP icon文件放到gitee服务器上。

plist的URL

就是第二步下载二维码中的URL地址,这里一定要填写plist的raw URL,就是打开该URL,能够直接看到文件内容的。

这个坑,失败了很多次才趟过去。

二维码显示插件

使用build discription插件吧,这个跟当前的jenkins兼容。

后来尝试另一个插件,直接把jenkins 搞惨了。参见之前的文章。

<img src='二维码图片的URL' height='120' width='120'/>

参数根据实际修改吧
二维码图片的URL地址跟第一个脚本的第二个参数有个对应关系,这里是URL,第一个脚本中是文件的路径,两者存在映射关系。

阻碍二维码显示的jenkins安全配置

有了上面的配置,job中还是不能显示URL,因为jenkins安全配置问题。

修改jenkins的配置后,才能显示:
系统管理–》全局安全配置–》标记格式器,将纯文本改为Safe HTML,保存设置。

总结

前前后后跟开发联调了接近一周,失败了上百次,才搞清楚全部细节。记录一下吧。

jenkins扫码安装iOS ipa包实现关键技术点相关推荐

  1. 苹果企业证书安装包,实现微信等软件的扫码安装

    企业证书打的包只能通过自带相机扫码或者第三方工具才能安装到手机,为了解决微信等工具扫码安装的问题,特写本文 实现原理是利用配置文件plist,生成二维码进行扫码安装 操作步骤: 拿到.ipa的包.并且 ...

  2. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

  3. ROS-noetic源码安装navigation功能包

    一.直接安装 sudo apt install ros-noetic-navigation 优势:简单,适合初级使用 缺点:只能调用,不能看.改代码. 二.源码安装 git clone https:/ ...

  4. 【转】借助第三方支持https协议的存储实现自己网站上扫描二维码安装IOS APP

    使用plist安装,一般是企业级开发者账号不需要登录到APP STORE的IOS设备应用发布时所用到的技巧. 准备: *一台运行着OSX的苹果电脑,最新版的XCODE,用于导出ipa和plist 一个 ...

  5. 针对不同手机终端扫码安装对应环境APP

    现在基本上移动互联网都有安卓和苹果端APP,目前大部分也都通过应用商店进行下载,但是也存在扫二维码下载.如果使用一个二维码即可针对安卓及苹果都可以下载安卓呢. 使用nginx判断user-agent是 ...

  6. IOS快捷安装ipa包、便于内部分发测试

    一.背景 大家使用ios的app测试就会发现,安装ios测试包很麻烦.  打包好的ipa包无法直接安装,需要借助 i4助手类似的工具,而且要在PC端安装.  当需要安装包的人多时,使用很不方便.  于 ...

  7. 通过添加设备UDID,打包iOS应用程序,ipa包安装。

    这两天因为工作需要,需要发包给发行测试,个别发行因为各种乱七八糟的原因没有越狱设备,只能提供UDID,需要我给他们输出一个可以直接安装的ipa包.我在网络上查看了一些其他人写的文档,不是Xcode版本 ...

  8. 通过扫码下载安卓和ios安装包

    背景:  手机端ios打包成为ipa文件,安卓打包成为apk文件.现在要求通过扫码完成ios和安卓的下载工作 要求: ios 下载需要https 可以不需要域名, 手机可以访问服务器 整体流程如下: ...

  9. iOS打包项目测试的ipa详细版本以及安装测试ipa流程

    公司的项目,求支持,如果发现什么问题,可以留言反应,感激不尽 虽然网上很多打包流程,但是也有很多有些时间了,还有的不是很详细,我就重新做一个详细流程 需要的东西:开发者账号(语文学的不好,请见谅) 1 ...

最新文章

  1. 在js中使用HashMap数据结构,在js中使用K,V数据结构
  2. Java调用python打包的程序.exe,包括获取exec()中打印的日志,亲测有效
  3. NB-IOT: Anchor Carrier 锚点载波
  4. unity3d 切换网络_Unity3d新网络请求方式UnityWebRequest详解
  5. isAlive()方法的作用
  6. cake-build -.Net Core 跨平台构建自动化系统。
  7. OSGI和Spring动态模块–简单的Hello World
  8. html和ascll有什么关联,什么是HTML ASCII(HTML ASCII)?
  9. springboot实战pdf_腾讯架构师Spring Boot实战篇(PDF文档)
  10. 前端JavaScript开发中需要注意的代码问题
  11. 亚马逊,应用网关_Amazon API网关
  12. 【CS229】代价函数与梯度下降
  13. usb3.0导入工具pe_BlackHat大会上,BlackBerry宣布开源逆向工具PE Tree
  14. python安装包————————百度网盘
  15. 屏幕画图工具Pointofix
  16. 虚拟现实的伦理问题----陈教授讲座听后感
  17. css重复,css3重复渐变效果
  18. 诗和远方其实并不遥远
  19. 空间后方交会编程c语言,C语言空间后方交会源代码.doc
  20. android电视视频播放器,智能电视如何播放本地视频?当贝市场分享几款播放器...

热门文章

  1. realme 拨号代码_苹果手机信号差?或许是英特尔的锅,这串代码自查
  2. 国产运维工具Commander
  3. Camera2 学习(一)概览
  4. IAR 使用中遇到的问题
  5. 2022java学习路线总结—纯干货分享
  6. Django项目的调试
  7. 实值函数相对于向量和矩阵的梯度
  8. linux下软件安装方法
  9. 测试创新——自动化数据清理方案
  10. Android MVP架构