背景:原来公司Jenkins打包后的ipa和apk都是通过第三方的平台托管,手动上传,然后去扫二维码下载。虽然第三方平台有Jenkins插件来直接上传到该平台,但是想自己进行管理。所以就自己来做安装包的分发了。
(Android的比较好做,只要有下载链接就可以了,所以这里只将ios的分发)
 
一、存储plist文件,放在https的域名下
 
plist文件的格式如下:
<?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>安装包下载地址</string> 
                </dict> 
            </array> 
            <key>metadata</key> 
            <dict> 
                <key>bundle-identifier</key> 
                <string>com.xxx(包名)</string> 
                <key>bundle-version</key> 
                <string>1.6.0(版本号)</string> 
                <key>kind</key> 
                <string>software</string> 
                <key>title</key> 
                <string>xx(安装包名字)</string> 
            </dict> 
        </dict> 
    </array> 
</dict> 
</plist>
 
说明:
1.安装包下载地址只要能下载就可以,不需要放在https下
2.包名问开发也好,或者直接通过其他软件查看都可以找到
3.版本号一定要与安装包中的版本号一致
4.安装包的名字貌似没什么要求,就写自己的app的名字就可以
 
plist因为不涉及到代码,如果公司没有正式CA证书的https的服务器,可以放到码云(git.oschina.net)上,或者七牛。我是用的git.oschina.net上,因为可以用git命令直接上传。
 
注意:https的服务器一定要有正式CA证书。因为苹果做了限制,它只识别有正式CA证书的网址,否则会提示无法访问等各种问题。自己建的证书是无效的,我在这上面踩了太多坑了,还自己搭了一台https的服务器==
关于使用git命令上传到git.oschina.net上的方法在最后有详细讲。
 
二、使用苹果安装协议
 
苹果要求plist文件前必须加上苹果的协议“itms-services”才可以下载安装
itms-services://?action=download-manifest&url=https://git.oschina.net/用户名/Projects名/raw/master/xxx.plist
将上面的字符串复制到safra浏览器中就可以安装了,为了证明是可行的,我也截一下图~
 
 
三、通过git将plist文件上传到git.oschina.net上(如果plist不放在这个平台的可以忽略这步)
 
因为是要做持续集成,所以git上传的时候不能使用密码交互,下面是步骤
 
git不输入用户名和密码直接上传到git
方法:
1.在Jenkins执行job的机器上安装git2以上版本
2.生成密钥和公钥 ,生成时不要输入密码
ssh-keygen -t rsa -C "xx@xx.com"
3.将公钥内容copy到git的ssh管理里
4.在本地创建存储plist的文件夹,进入初始化git,添加ssh的远程仓库
git init
git remote add origin git@git.oschina.net:xxx/xxx.git
5.先将远程上代码拉取到本地,然后在本地添加plist文件到master,push到远程仓库上
git pull
git add xxx
git commit -m "xxx"
git push origin master
说明:使用fetch和merge从远程仓库下载并合并本地分支代码
 
将这个过程写成shell脚本如下
#!/bin/bash
rm -rf pliststore
mkdir pliststore
cd pliststore
git init
git remote add origin git@git.oschina.net:xxx/xxx.git
git fetch origin
git merge --no-commit origin/master

cp ../code/$1 ./

#cp的路径是我存放plist的相对路径,根据自己的路径修改
git add $1
git commit -m "$1"
git push origin master
rm -rf pliststore
 
说明:
1.$1是命令行参数,因为每次的plist文件名字是不固定的,可以去通过外部参数传递过来
2.创建一个文件夹pliststore是因为我不用去判断本地的文件和服务器的文件是否不一致,否则会提示我merge之类的,我git不好,如果大家有好的方法也可以交流一下~
3.使用这种不输入用户名密码的方法,一定要在本地先push一次,因为第一次会让输入git的密码。以后就不需要了。
 
 
分发还未解决的其他问题:因为我是将链接生成了二维码,使用二维码扫描工具可以提示安装,但是用微信或者UC的二维码去扫描就不可以安装了,所以需要继续解决一下这个问题。
 

ios实现分发下载

ios实现分发下载的更多相关文章

  1. 不通过App Store实现ios应用分发下载安装

    最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线,需要一种临时的方案解决应用分发下载问题,通常ios应用必须通过苹果应用商店才能下载安装,但是也可以看到 ...

  2. 【App】不通过App Store实现ios应用分发下载安装(转)

    转自:https://www.cnblogs.com/star91/p/5018995.html   最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线, ...

  3. 苹果TF上架的iOS应用怎么下载

    苹果TF上架的iOS应用怎么下载 苹果TF上架的iOS应用是无法通过App Store搜索到的,需要用户先从App Store中搜索下载testflight内测商店.当开发者进行苹果TF上架成功以后会 ...

  4. iOS多图片下载

    iOS多图片下载.在cell里面下载图片.做了缓存优化. (app.icon是图片地址) // 先从内存缓存中取出图片 UIImage *image = self.images[app.icon]; ...

  5. Jellycons – iOS 8 图标下载(PNG, SKETCH)

    Jellycons 这套由 LoveUI.co 设计图标包括30款扁平化,圆滑,丰富多彩的 iOS 8 应用程序图标,可以用于于个人和商业项目的使用.另外,PNG 格式包含11种尺寸(1024px, ...

  6. ios 网络数据下载和JSON解析

    ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载 ...

  7. iOS事件分发

    前段时间项目有一个需求,要在点击闪屏的时候做一些处理,刚接到这个需求觉得很简单啊,在原有的view上加个button或者手势识别啥的,后面实现的时候发现还是有点坑.无论我在闪屏上面加button还是手 ...

  8. IOS内测分发策略

    当苹果应用没有上交appstore审核,出于开始内侧阶段时,我们如何邀请别人测试和使用? plist苹果安装包实现 使用七牛云存储解决ios7.1的app部署问题 推荐两个现在比较流行的app内测辅助 ...

  9. IOS离线教程下载与Dash的使用

    都知道,苹果官网的IOS Developer Library是开发者最喜欢用的知识仓库,但由于有时打开它实在太慢了! 但是,我们可以手动下载离线版的!离线的文档,在这里,叫做DocSet,意指文档集合 ...

随机推荐

  1. gson-2.2.api简单

    使用gson的tojson和fromjson实现对象和json的转换 Gson gson = new Gson(); // Or use new GsonBuilder().create();     ...

  2. Java例子

    1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一个重要的命令javac ...

  3. Alpha阶段第1周 Scrum立会报告+燃尽图 07

    作业要求与https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246相同 一.小组介绍 组长:刘莹莹 组员:朱珅莹 孙韦男 祝玮琦 王玉潘 周 ...

  4. 【跟着stackoverflow学Pandas】 -Get list from pandas DataFrame column headers - Pandas 获取列名

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  5. WIN7下用笔记本创建无线网

    系统要求:WIN7  硬件要求:拥有无线网卡  网络要求:已经连接internet 1.启用并设定虚拟Wifi网卡:运行以下命令启用虚拟无线网卡(相当于打开路由器): netsh wlan set h ...

  6. Buildroot make网卡interfaces文件被修改

    /******************************************************************************** * Buildroot make网卡 ...

  7. [QT][SQLITE]学习记录一 querry 查询

    使用 QSqlQuery query ; query("SELECT id FROM TABLE1 WHERE id = '2017'); 的到的结果集就是query本身,此时需要使用 qu ...

  8. Loj 114 k大异或和

    Loj 114 k大异或和 构造线性基时有所变化.试图构造一个线性基,使得从高到低位走,异或上一个非 \(0\) 的数,总能变大. 构造时让任意两个 \(bas\) 上有值的 \(i,j\) ,满足 ...

  9. streamsets Processors 说明

    Processors 表示对于一种数据操作处理,在pipeline中可以应用多个Processors, 同时根据不同的执行模式,可以分为独立模式的,集群模式.边缘模式(agent),以及 帮助测试的测 ...

  10. 使用C#的两种方式OracleClient组件和OleDB组件连接ORACLE数据库

    一.使用OracleClient组件连接Oracle .Net框架的System.Data.OracleClient.dll组件(ADO.Net组件),为连接和使用Oracle数据库提供了很大的方便. ...