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實現分發下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM