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

// 此处plist文件 需进行 编码

将上面的字符串复制到safra浏览器中就可以安装了,为了证明是可行的,我也截一下图~

三、通过git将plist文件上传到git.oschina.net上(如果plist不放在这个平台的可以忽略这步)

因为是要做持续集成,所以git上传的时候不能使用密码交互,下面是步骤

git不输入用户名和密码直接上传到git

方法:

1.在Jenkins执行job的机器上安装git2以上版本

2.生成密钥和公钥 ,生成时不要输入密码

ssh-keygen -t rsa -C "[email protected]"

3.将公钥内容copy到git的ssh管理里

4.在本地创建存储plist的文件夹,进入初始化git,添加ssh的远程仓库

git init

git remote add origin [email protected]: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 [email protected]: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的密码。以后就不需要了。

猜你喜欢

转载自blog.csdn.net/Cris_are/article/details/106424361