【iOS開發工程化——開發完畢】:自動打包

一、Fastlane環境搭建:http://www.lxweimin.com/p/703534031e42

二、Fastlane自動打包并發布:http://www.lxweimin.com/p/703534031e42

1、cd到項目,初始化fastlane

fastlane init
image.png

2、編輯AppFile信息

app_identifier "ineyee.TestApp"

apple_id "2487407179@qq.com"

3、編輯fastlane自動打包和發布腳本,Fastfile文件(沒什么特殊需要的話,下面只需要改一下project_name)

project_name = "CICDTestApp"

output_platform = "蒲公英"

default_platform(:ios)

platform :ios do

  # 描述一下Fastlane正在做什么

  desc "????????????Fastlane自動打包并發布#{project_name}到#{output_platform}????????????"

  # 將來執行fastlane beta命令來開始自動打包并發布,beta可以修改

  lane :beta do

    # add actions here: https://docs.fastlane.tools/actions

    gym(

    # 每次打包之前clean一下以前的編譯信息

    clean: true,

    # 工程的名字,不是App顯示的名字

    scheme: "#{project_name}",

    # 打包模式:Release、Debug、Profile

    configuration: "Release",

    # 什么包,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application

    export_method: "ad-hoc",

    # 輸出ipa的名稱

    output_name: "#{project_name}.ipa",

    # 輸出ipa的路徑

    output_directory: "/Users/yiyi/Desktop/#{project_name}_IPA_#{Time.new.strftime("%Y-%m-%-d-%H-%M")}",

    # 是否包含bitcode

    include_bitcode: false,

    # 是否包含symbols

    include_symbols: true,

    # 這個設置是為了設置Xcode自動配置證書和配置文件,當然也可以手動配置,可以參考文檔

    export_xcargs: "-allowProvisioningUpdates"

    )

    # mac上的通知彈窗,通知打包完畢

    notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自動打包成功,已導出ipa", message: "準備發布到#{output_platform}……")

    # 配置要上傳到的蒲公英賬號

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修復已知Bug;\n2、提升部分性能。")

  end

end

4、加入蒲公英插件,Gemfile文件里會加入插件

fastlane add_plugin pgyer

5、執行以下命令開始fastlane自動打包并發布(就算你蒲公英控制臺沒創建過這個項目,這個也會幫你自動創建)

fastlane beta

三、Jenkins環境搭建:http://www.lxweimin.com/p/531c959b8cf8

四、先保證能手動打包,然后再保證能用Fastlane打包,最后再Jenkins驅動Fastlane自動打包并發布(本質其實就是把我們單純使用Fastlane時需要往命令行敲命令的操作,搞成了Jenkins的可視化操作加腳本):http://www.lxweimin.com/p/c61eb3890704(自動構建,無參數配置、腳本精簡)、http://www.lxweimin.com/p/531c959b8cf8(有配置哪幾項參數,但是腳本不太精簡)、http://www.lxweimin.com/p/407b91d702b2(參考了一下怎么把Jenkins的配置參數應用在shell腳本里,然后shell腳本又怎么決定Fastlane腳本執行不同的代碼,Fastlane腳本如何拆分成不同的模式)

1、新建一個任務

image.png
image.png

2、General -> 參數化構建過程

image.png
image.png
image.png
image.png

2、源碼管理
image.png

3、Build Steps

image.png
image.png

shell腳本

#!/bin/bash

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

echo -e "=========安裝更新pod==========="

pod update

echo -e "=======打包上傳======="

## 這里的Configuration和ExportMethod是上面Jenkins配置的選項參數

## 這里的腳本給fastlane腳本傳參數就是beta后面連續的跟key:value即可

fastlane beta configuration:${Configuration} export_method:${ExportMethod}

當然上面的shell腳本是針對于iOS項目的,如果你想打Flutter項目里的iOS包,那我們得在前面進入到iOS目錄下,也就是加一行cd到ios目錄下(注意路徑要準確,否則會報錯,比如不能直接cd ios)

#!/bin/bash

cd /Users/yiyi/Desktop/AuditoryWorks/FlutterProject/nearhub-flutter/ios

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

echo -e "=========安裝更新pod==========="

pod update

echo -e "=======打包上傳======="

## 這里的Configuration和ExportMethod是上面Jenkins配置的選項參數

## 這里的腳本給fastlane腳本傳參數就是beta后面連續的跟key:value即可

fastlane beta configuration:${Configuration} export_method:${ExportMethod}

為了根據配置打出不同模式的包,我們需要修改下Fastlane的腳本(沒什么特殊需要的話,下面只需要改一下project_name)

project_name = "Runner"

configuration = ""

export_method = “”

default_platform(:ios)

platform :ios do

  # 描述一下Fastlane正在做什么

  desc "????????????Fastlane自動打包并發布????????????"

  # 將來執行fastlane beta命令來開始自動打包并發布,beta可以修改

  # do后面固定跟一個|options|代表外界命令傳進來的參數

  lane :beta do |options|

    # add actions here: https://docs.fastlane.tools/actions

    configuration = options[:configuration]

    export_method = options[:export_method]

    gym(

    # 每次打包之前clean一下以前的編譯信息

    clean: true,

    # 工程的名字,不是App顯示的名字

    scheme: "#{project_name}",

    # 打包模式:Release、Debug、Profile

    configuration: "#{configuration}",

    # 什么包,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application

    export_method: "#{export_method}",

    # 輸出ipa的名稱

    output_name: "#{project_name}.ipa",

    # 輸出ipa的路徑

    output_directory: "/Users/yiyi/Desktop/#{project_name}_IPA_#{Time.new.strftime("%Y-%m-%-d-%H-%M")}",

    # 是否包含bitcode

    include_bitcode: false,

    # 是否包含symbols

    include_symbols: true,

    # 這個設置是為了設置Xcode自動配置證書和配置文件,當然也可以手動配置,可以參考文檔

    export_xcargs: "-allowProvisioningUpdates"

    )

    # ad-hoc包直接上傳到蒲公英;app-store包暫時自己上傳導出的ipa

    if (options[:export_method] == "ad-hoc")

      # mac上的通知彈窗,通知打包完畢

      notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自動打包成功", message: "準備發布到蒲公英……")

      # 配置要上傳到的蒲公英賬號

      pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修復已知Bug;\n2、提升部分性能。")

    else

      # mac上的通知彈窗,通知打包完畢

      notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自動打包成功,已導出ipa", message: "")

    end

  end

end

4、ok,接下來就可以發起自動打包了

(1)選中你想要打包的這個項目

image.png

(2)然后配置一下你要打什么分支、什么模式的包,開始構建即可

image.png

(3)開始構建即可

image.png
image.png
image.png

5、然后去蒲公英掃碼安裝就好了

image.png

6、然后關于Jenkins服務,當你啟動后不關掉或者不關電腦的話,它就是一直啟動的,Jenkins的網頁就一直能訪問,如果你想關掉就關掉,用的時候再打開,后面這個-lts看你安裝jenkins的時候是brew install jenkins-lts還是brew install jenkins,后者的話就不需要加這個-lts

啟動 jenkins: brew services start jenkins-lts

停止 jenkins:brew services stop jenkins-lts

重啟 Jenkins:brew services restart jenkins-lts

五、安卓端基本跟上面一樣的操作甚至更少的操作:http://www.lxweimin.com/p/6776d142aa9a,無非就是fastlane腳本文件里稍有區別而已

project_name = "Runner"

configuration = ""

default_platform(:android)

platform :android do

  lane:beta do

    puts “Debug版本開始打包"

    gradle(task:'clean')

    gradle(

        task: 'assemble',

        build_type: 'Debug',

      )

    puts "Debug版本打包成功”

    puts "開始上傳到蒲公英"

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修復已知Bug;\n2、提升部分性能。")

    puts "上傳到蒲公英成功”

    # 在上傳完apk后,打開apk的存放文件夾,起到提示上傳完成的作用

    system "open /Users/yiyi/Desktop/apk/debug”

  end

  lane:beta do

    puts “Debug版本開始打包"

    gradle(task:'clean')

    gradle(

        task: 'assemble',

        build_type: ‘Release',

      )

    puts "Debug版本打包成功”

    puts "開始上傳到蒲公英"

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修復已知Bug;\n2、提升部分性能。")

    puts "上傳到蒲公英成功”

    # 在上傳完apk后,打開apk的存放文件夾,起到提示上傳完成的作用

    system "open /Users/yiyi/Desktop/apk/debug”

  end

end

六、一些錯誤及解決辦法:

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容