人人做人人干-人人做人人看-人人做人人爽国产视-人人做人人爽人人爱-色屋视频-色屋网

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標 余先生:13699882642

網(wǎng)站百科

為您解碼網(wǎng)站建設(shè)的點點滴滴

Flutter Jenkins打包

發(fā)表日期:2018-12 文章編輯:小燈 瀏覽次數(shù):2674

前段時間公司重構(gòu)了一個flutter項目,自動化打包用的是Jenkins,在這過程中頁遇到了一些坑,借此寫一篇文章來,讓大家少走些彎路。
先看一下打包完成的效果圖:


image.png

我實現(xiàn)的效果是打包成功后顯示工程名+打包模式+分支名,并顯示fir掃碼安裝的地址,這些都是通過插件來完成的,下面會詳細介紹到。
在打包之前首先要做一些環(huán)境配置的工作,比如:

  • iOS需要單獨配一臺Mac來進行打包,因為需要Xcode,Docker是沒有Xcode環(huán)境
  • android最好也放在這臺Mac上打包,因為你要用Docker的話會遇到文件讀寫權(quán)限的問題
  • 搭建Flutter開發(fā)環(huán)境
  • 確保本地能打包成功,本地打包請參考iOS,Android

Jenkins環(huán)境配置

1. 安裝 JRE環(huán)境

Jenkins 運行依賴于java環(huán)境 ,沒有安裝的請去官網(wǎng)自行下載安裝

2. 安裝 Jenkins

千萬別用官網(wǎng)下載的pkg包進行安裝,它會默認將 Jenkins安裝在/Users/Shared目錄下,在打包的時候會遇到權(quán)限問題, 所以強烈建議大家用brew來安裝Jenkins.

  1. 安裝Jenkins

    brew install jenkins

  2. 命令行啟動Jenkins

    java -jar /usr/local/Cellar/jenkins/${你的Jenkins版本}/libexec/jenkins.war --httpPort=8080 或 Jenkins 
  3. 打開瀏覽器,輸入 localhost:8080 就可看到Jenkins的web界面

  4. Jenkins開機啟動

    命令行安裝的jenkins不自備開機啟動功能,每次重啟后都要命令行執(zhí)行啟動,非常麻煩,使用以下步驟可以在每次開機后自動拉起一個jenkins的命令行。

    1. 創(chuàng)建開機啟動腳本 jenkinsBoot.sh

    2. 加入啟動jenkins代碼


      image.png
    3. 設(shè)置腳本權(quán)限

      sudo chmod 777 xxxx/jenkinsBoot.sh

    4. 設(shè)置腳本打開方式


      image.png
    5. 設(shè)置腳本引用,使腳本可執(zhí)行
      chmod +x xxxx/jenkinsBoot.sh

    6. 加入用戶的登錄項


      image.png
    7. 重新啟動計算機,會發(fā)現(xiàn)自動執(zhí)行了jenkinsBoot.sh這個腳本。

3. Jenkins配置

第一次打開Jenkins時需要解鎖Jenkins,你看到的頁面是這樣的


image.png

進入紅色字體路徑下將密碼拷貝到輸入框,點擊continue

然后點擊左側(cè)一個模塊進入下載頁面,時間可能會很久,耐心等待

image.png image.png

自定義設(shè)置用戶名及密碼,點擊保存并完成按鈕,進入下圖頁面。

image.png

安裝插件flutter打包所需要的插件,點擊系統(tǒng)管理->插件設(shè)置

  1. Keychains and Provisioning Profiles Management(iOS證書管理)
  2. Xcode integration(iOS專用)
  3. Gradle plugin(Android專用)
  4. description setter plugin(根據(jù)構(gòu)建日志文件的RegEx,設(shè)置每個構(gòu)建的描述。比如fir的上傳地址)

4. 項目工程配置

iOS

  1. 新建項目
image.png
  1. 項目構(gòu)建配置
image.png

打包類型(注意:AdHoc需要在你項目中配置configuration,自行g(shù)oogle)

image.png

打包分支

image.png

源代碼管理


image.png

SSH私鑰添加


image.png

證書和描述文件配置


image.png image.png

iOS證書和描述文件首先要在系統(tǒng)管理->Keychains and Provisioning Profiles Management中設(shè)置和上傳后才能在你的項目中選擇添加,iOS證書和描述文件的制作我就不多說了,自行Google


image.png

這里的login.keychain文件可能需要自己copy到桌面并改下文件后綴,因為它是隱藏文件


image.png

這里的描述文件都要上傳,其實路徑就可以寫/Users/xxxx/Library/MobileDevice/Provisioning Profiles路徑,這是Xcode保存描述文件的路徑,上傳的時候也可以去這個路徑下去上傳


image.png

一切準備好后就可以在項目配置中選擇證書和描述文件了,這時我們第一次add keychain可能不能去選擇Code Signing Identity,需要我們保存一下后就能選擇了

image.png
image.png

在這里我們使用shell腳本來構(gòu)建,以便我們構(gòu)建完成能夠上傳到fir上。

腳本代碼

 security set-key-partition-list -S apple-tool:,apple: -s -k "開機密碼" ~/Library/Keychains/login.keychain-db #假設(shè)腳本放置在與項目相同的路徑下 project_path=$(pwd) # flutter環(huán)境變量設(shè)置 export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn export PATH=/Users/yongjianhe/flutter/bin:$PATH flutter build ios cd $project_path/ios #取當前時間字符串添加到文件結(jié)尾 now=$(date +"%Y_%m_%d_%H:%M") #指定項目的scheme名稱 scheme="Runner" #指定要打包的配置名 configuration=${BUILD_TYPE} #指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method參數(shù) if [ $BUILD_TYPE == "Release" ] then export_method="app-store" elif [ $BUILD_TYPE == "AdHoc" ] then export_method="ad-hoc" else export_method="development" fi #指定項目地址 workspace_path="${project_path}/ios/Runner.xcodeproj" #指定輸出路徑 rm -rf "${project_path}/ipa" mkdir -p "${project_path}/ipa" output_path="${project_path}/ipa" #指定輸出歸檔文件地址 archive_path="$output_path/zaihui_crm_${export_method}_${now}.xcarchive" #指定輸出ipa地址 ipa_path="$output_path/zaihui_crm_${BUILD_TYPE}_${BUILD_BRANCH}_${BUILD_REPOSITORY}_${now}.ipa" #指定輸出ipa名稱 ipa_name="zaihui_crm_${BUILD_TYPE}_${BUILD_BRANCH}_${now}.ipa" commit_msg="$1" #輸出設(shè)定的變量值 echo "===workspace path: ${workspace_path}===" echo "===archive path: ${archive_path}===" echo "===ipa path: ${ipa_path}===" echo "===export method: ${export_method}===" echo "===commit msg: $1===" #先清空前一次build fastlane gym --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name} #上傳到fir if [ ${export_method} != "app-store" ] then fir publish ${ipa_path} -T "fir API token" -c $commit_msg fi 

因為我使用的是fastlane指令打包的,所以打包的電腦需要安裝fastlane

這里有個地方需要注意的點就是當出現(xiàn)打包失敗是由于運行flutter腳本錯誤造成的時候,這個原因可能是你當前的flutter版本運行flutter build iOS時,在Generated.xcconfig中并沒有生成FLUTTER_BUILD_MODE參數(shù),這個是運行flutter腳本所需要的參數(shù),不過沒事,你只需要在你的工程文件再添加一個腳本就行了。

image.png

最后還要在你的工程中設(shè)置描述文件(制作相應(yīng)環(huán)境的描述文件,下載并打開,debug對應(yīng)開發(fā)證書,adhoc和release對應(yīng)生產(chǎn)證書),到了這里大家可能有個疑問,就是前面我都上傳了證書了,為什么這里還要填寫,原因是前面上傳的證書只是為了保存Code Signing Identity以便在login.keychain去訪問他,而不是去保存它,我想描述文件也同樣如此,所以我們需要設(shè)置描述文件的路徑

image.png

構(gòu)建名稱設(shè)置工程名+打包模式+分支名

image.png

最后一步,在編譯歷史中成功顯示fir地址,先要設(shè)置Html顯示


WechatIMG4650.jpeg image.png

這時候你就能打出iOS包了并顯示了

Android

安卓打包相對于iOS來說就簡單很多了

  1. 新建項目


    image.png
  2. 項目構(gòu)建配置


    image.png
    image.png
    image.png
    image.png
    image.png
如果大家在iOS證書和描述文件以及安卓上有其它問題,可以參考一下以下兩篇文章:
  • React Native Jenkins 打包
  • 用Jenkins+Docker搭建Android持續(xù)集成平臺

本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權(quán),如您認為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請及時與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會在5工作日內(nèi)聯(lián)系您,一經(jīng)查實,本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.kwpm.com.cn/17670.html
相關(guān)APP開發(fā)
 八年  行業(yè)經(jīng)驗

多一份參考,總有益處

聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費獲得網(wǎng)站建設(shè)方案及報價

咨詢相關(guān)問題或預約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:余經(jīng)理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

主站蜘蛛池模板: 丁香天堂网 | 最近最新2019中文字幕1 | 成人午夜看片在线观看 | www日韩在线| 国产日产欧美一区二区三区 | 精品视频一区二区三区在线观看 | 亚洲免费小视频 | 欧美亚洲性色影视在线 | 久草手机视频在线观看 | 免费一级特黄a | 国内精品久久久久久西瓜色吧 | 色视频网站大全免费 | 日本高清中文字幕视频在线 | 2017天天爽夜夜爽精品视频 | 三级色网站 | 你懂的网站在线播放 | 午夜毛片视频高清不卡免费 | 夜夜夜夜曰天天天天拍国产 | 国产理伦 | 美女视频黄a视频全免费网站色窝 | 黄色在线看网站 | 456亚洲人成影院在线观 | 成熟女人50岁一级毛片不卡 | 国产精品自在线拍 | 国产成人精品免费视频大全软件 | 一级黄色国产片 | 久久亚洲不卡一区二区 | 日韩专区一区 | 亚洲欧美视频在线 | 色噜噜狠狠一区二区三区 | 久久亚洲私人国产精品va | 国产亚洲人成网站在线观看不卡 | 国产精品亚洲精品日韩动图 | 天天操国产 | 嘿嘿嘿视频免费网站在线观看 | 最新国产午夜精品视频不卡 | 在线免费观看黄色 | 欧美成在线观看 | 久久黄色一级片 | 国产成人精品久久一区二区三区 | 亚洲男女视频 |