zoukankan      html  css  js  c++  java
  • ios实现分发下载

    背景:原来公司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实现分发下载

  • 相关阅读:
    mysql5.7编译安装
    web服务部署工具使用介绍
    Clang Static Analyzer
    MySQL中character set与collation
    Linux 编译运行查找头文件和库的顺序
    git入门及使用记录
    CentOS7通过yum安装gdb8 gcc8 g++8的方法
    win10子系统设置开机启动ssh服务
    STL中map的使用
    C++逆序输出字符串
  • 原文地址:https://www.cnblogs.com/meitian/p/5503076.html
Copyright © 2011-2022 走看看