發表日期:2018-12 文章編輯:小燈 瀏覽次數:2486
前段時間公司重構了一個flutter項目,自動化打包用的是Jenkins,在這過程中頁遇到了一些坑,借此寫一篇文章來,讓大家少走些彎路。
先看一下打包完成的效果圖:
我實現的效果是打包成功后顯示工程名+打包模式+分支名,并顯示fir掃碼安裝的地址,這些都是通過插件來完成的,下面會詳細介紹到。
在打包之前首先要做一些環境配置的工作,比如:
Jenkins 運行依賴于java環境 ,沒有安裝的請去官網自行下載安裝
千萬別用官網下載的pkg包進行安裝,它會默認將 Jenkins安裝在/Users/Shared目錄下,在打包的時候會遇到權限問題, 所以強烈建議大家用brew來安裝Jenkins.
安裝Jenkins
brew install jenkins
命令行啟動Jenkins
java -jar /usr/local/Cellar/jenkins/${你的Jenkins版本}/libexec/jenkins.war --httpPort=8080 或 Jenkins
打開瀏覽器,輸入 localhost:8080 就可看到Jenkins的web界面
Jenkins開機啟動
命令行安裝的jenkins不自備開機啟動功能,每次重啟后都要命令行執行啟動,非常麻煩,使用以下步驟可以在每次開機后自動拉起一個jenkins的命令行。
創建開機啟動腳本 jenkinsBoot.sh
加入啟動jenkins代碼
設置腳本權限
sudo chmod 777 xxxx/jenkinsBoot.sh
設置腳本打開方式
設置腳本引用,使腳本可執行
chmod +x xxxx/jenkinsBoot.sh
加入用戶的登錄項
重新啟動計算機,會發現自動執行了jenkinsBoot.sh這個腳本。
第一次打開Jenkins時需要解鎖Jenkins,你看到的頁面是這樣的
進入紅色字體路徑下將密碼拷貝到輸入框,點擊continue
然后點擊左側一個模塊進入下載頁面,時間可能會很久,耐心等待
image.png image.png自定義設置用戶名及密碼,點擊保存并完成按鈕,進入下圖頁面。
image.png安裝插件flutter打包所需要的插件,點擊系統管理->插件設置
打包類型(注意:AdHoc需要在你項目中配置configuration,自行google)
image.png打包分支
image.png源代碼管理
SSH私鑰添加
證書和描述文件配置
iOS證書和描述文件首先要在系統管理->Keychains and Provisioning Profiles Management中設置和上傳后才能在你的項目中選擇添加,iOS證書和描述文件的制作我就不多說了,自行Google
這里的login.keychain文件可能需要自己copy到桌面并改下文件后綴,因為它是隱藏文件
這里的描述文件都要上傳,其實路徑就可以寫/Users/xxxx/Library/MobileDevice/Provisioning Profiles路徑,這是Xcode保存描述文件的路徑,上傳的時候也可以去這個路徑下去上傳
一切準備好后就可以在項目配置中選擇證書和描述文件了,這時我們第一次add keychain可能不能去選擇Code Signing Identity,需要我們保存一下后就能選擇了
image.png在這里我們使用shell腳本來構建,以便我們構建完成能夠上傳到fir上。
腳本代碼
security set-key-partition-list -S apple-tool:,apple: -s -k "開機密碼" ~/Library/Keychains/login.keychain-db #假設腳本放置在與項目相同的路徑下 project_path=$(pwd) # flutter環境變量設置 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 #取當前時間字符串添加到文件結尾 now=$(date +"%Y_%m_%d_%H:%M") #指定項目的scheme名稱 scheme="Runner" #指定要打包的配置名 configuration=${BUILD_TYPE} #指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method參數 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" #輸出設定的變量值 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
這里有個地方需要注意的點就是當出現打包失敗是由于運行flutter腳本錯誤造成的時候,這個原因可能是你當前的flutter版本運行flutter build iOS時,在Generated.xcconfig中并沒有生成FLUTTER_BUILD_MODE參數,這個是運行flutter腳本所需要的參數,不過沒事,你只需要在你的工程文件再添加一個腳本就行了。
image.png最后還要在你的工程中設置描述文件(制作相應環境的描述文件,下載并打開,debug對應開發證書,adhoc和release對應生產證書),到了這里大家可能有個疑問,就是前面我都上傳了證書了,為什么這里還要填寫,原因是前面上傳的證書只是為了保存Code Signing Identity以便在login.keychain去訪問他,而不是去保存它,我想描述文件也同樣如此,所以我們需要設置描述文件的路徑
image.png構建名稱設置工程名+打包模式+分支名
image.png最后一步,在編譯歷史中成功顯示fir地址,先要設置Html顯示
這時候你就能打出iOS包了并顯示了
安卓打包相對于iOS來說就簡單很多了
新建項目
項目構建配置
日期:2018-10 瀏覽次數:7251
日期:2018-12 瀏覽次數:4325
日期:2018-07 瀏覽次數:4872
日期:2018-12 瀏覽次數:4172
日期:2018-09 瀏覽次數:5499
日期:2018-12 瀏覽次數:9919
日期:2018-11 瀏覽次數:4802
日期:2018-07 瀏覽次數:4576
日期:2018-05 瀏覽次數:4856
日期:2018-12 瀏覽次數:4324
日期:2018-10 瀏覽次數:5136
日期:2018-12 瀏覽次數:6210
日期:2018-11 瀏覽次數:4460
日期:2018-08 瀏覽次數:4590
日期:2018-11 瀏覽次數:12629
日期:2018-09 瀏覽次數:5578
日期:2018-12 瀏覽次數:4829
日期:2018-10 瀏覽次數:4185
日期:2018-11 瀏覽次數:4526
日期:2018-12 瀏覽次數:6061
日期:2018-06 瀏覽次數:4006
日期:2018-08 瀏覽次數:5434
日期:2018-10 瀏覽次數:4456
日期:2018-12 瀏覽次數:4522
日期:2018-07 瀏覽次數:4360
日期:2018-12 瀏覽次數:4499
日期:2018-06 瀏覽次數:4381
日期:2018-11 瀏覽次數:4373
日期:2018-12 瀏覽次數:4248
日期:2018-12 瀏覽次數:5279
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.