移動端自動打包平台


 

記錄之前做過的一些東西,避免忘了。。。

自動打包的流程

 

 
 

 

Jenkins配置項目

源碼管理

 

 
 

 

構建觸發器

查詢Git服務器的代碼是否有提交

 

 
 

 

Android Gradle編譯

-Plog_enable_cmd='true'    是否開啟log開關(線上設置的false)
-Pserver_environment_cmd='測試'    傳一個全局屬性,編譯指定的環境
-q config    執行config任務,使上面兩個全局屬性生效
 
 
 

 

iOS xcodebuild編譯

xcodebuild先編譯成.app文件
-workspace  工程的.xcworkspace路徑
-scheme  在工程目錄下,xcodebuild -list查詢
-configuration  在xcode新建三個configuration,用以區分測試、仿真、線上環境
-derivedDataPath build目錄

xcrun把.app文件編譯成.ipa文件
-sdk  iOS sdk,iphoneos是真機
-v 要編譯的.app文件路徑
-o .ipa輸出路口 
 
 

構建后操作

執行Python腳本,做以下的事情:

1. 拿到此次編譯的環境和版本號(到項目文件查詢)
2. 修改安裝包名字,格式:項目名_版本號_環境_時間戳.apk
3. 生成下載地址二維碼和下載頁(每個app都有自己的二維碼下載地址和下載頁,類似蒲公英,掃描二維碼跳轉app下載頁)
4. iOS每個安裝包需要配置一個plist文件,配置app信息,用於下載 (下面有模板)
5. 上傳二維碼圖片、下載頁和安裝包到下載服務器
6. 保存安裝包數據到數據庫

 

 
 

 

iOS的安裝命令(在下載頁的“下載安裝”按鈕里配置的此命令)

下面的命令可以在線安裝iOS的ipa安裝包,url后面跟plist文件地址
plist文件里面要配置你的安裝包的一些信息,下面有模板。
每次執行python腳本的時候生成一個plist文件用於下載

itms-services://?action=download-manifest&url=plist文件url

plist文件模板

<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文件的下載地址,如http://xxx.xxx/xxxx.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>此處填寫工程的bundle-identifier</string>
                <key>bundle-version</key>
                <string>此處填寫工程的版本號</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>&#24471;</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

 

生成二維碼

def gen_qrcode(install_app, config_info, file_name, ftp_url, project_path):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=4,
        border=1
    )

    image_name = file_name.replace(".ipa", "") + ".png"
    qr.add_data(install_app)
    qr.make(fit=True)
    img = qr.make_image()
    img.save(project_path + image_name)

 

編譯失敗發送報警郵件

用的Editable Email Notification插件

 
 

 

下載頁面

數據庫表

CREATE TABLE `app_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(150) DEFAULT NULL COMMENT '安裝包名稱',
  `os_name` varchar(50) DEFAULT NULL COMMENT '手機系統(Android, IOS)',
  `config` varchar(50) DEFAULT NULL COMMENT '環境(測試-1,仿真-2,線上-3)',
  `versions` varchar(50) DEFAULT NULL COMMENT '版本號',
  `app_path` varchar(200) DEFAULT NULL COMMENT '安裝包地址',
  `qrcode_path` varchar(150) DEFAULT NULL COMMENT '二維碼圖片地址',
  `app_time` datetime DEFAULT NULL COMMENT '安裝包生成時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1624 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

下載頁源碼
Eclipse可直接導入

APP下載主頁 

 

掃描二維碼下載頁

def create_html(file_path, html_name, install_app):

    print "生成html文件"
    file = open(file_path + "html/" + html_name, 'w')
    file.write(u'\
        <html lang=zh-cmn-Hans> \
        <head> \
            <meta charset="utf-8"> \
            <title>安裝APP</title> \
            <link href="index.css" rel="stylesheet" type="text/css" /> \
        </head> \
        <body> \
            <div id="" class="view row" style="margin-top:30px;"> \
                <div class="span12 margin-bottom-20" style="text-align:center;"> \
                    <div class="spinner"> \
                        <div id="showtext"><font size="7" color="red">請用瀏覽器打開</font></div> \
                        <div id="showtext"><font size="7" color="red">點擊安裝后,請按 Home 鍵在桌面查看</font></div> \
                        <a href="' + 
                        install_app + 
                        '" id="down_load" class="btn-u btn-u-lg btn-u-green"><i class="fa fa-download"></i> 點擊安裝</a> \
                   </div> \
                </div> \
            </div> \
        </body> \
        </html> \
    ')

    file.close()

 

 


免責聲明!

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



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