fastlane 自動打包到 fir.im 的踩坑之路

之前一直使用 fir-cli 工具來對項目進行打包,看了《小團隊的自動化發布-Fastlane 帶來的全自動化發布》這篇文章,決定試一試 fastlane 自動打包并上傳到 fir.im。fastlane 參考文檔可以到其github上進行查看,這里僅記錄在使用 fastlane 自動打包到 fir.im 時踩過的坑。

安裝

確保 Xcode 命令行工具安裝了最新版本

xcode-select --install

接下來是安裝 fastlane ,官網給出了三種方法

6D91F873-D681-4024-B806-51EAA641484A.png

第一種是通過 Homebrew 軟件包管理器來進行安裝,第二種就是我們最熟悉的方式,下載安裝包來進行安裝,第三種是通過 RubyGems 來進行,RubyGems 是一個方便的 Ruby 程序包管理器,可以將一個 Ruby 應用程序打包到一個 Gem 里,作為一個安裝單元。 一個 Gem 就是一個封裝起來的應用程序或代碼庫。這里選擇了第三種方法。

sudo gem install fastlane

初始化

到項目的根目錄下,初始化 Fastlane

fastlane init

運行結束大概就是這個樣子


ADD21E70-2BBC-42B8-9279-B3BFE7911975.png.png

84D432DC-A035-4CEA-BF7A-BF08787CD956.png.png

會讓你輸入你的 Apple ID 之類的,會問你這個app是否需要在 iTunes Connect 等中創建,這里我選擇了 n ,此時初始化結束,在項目目錄下的 fastlane 文件夾下生成了兩個文件 Appfile 和 Fastfile,這里面的具體內容 《小團隊的自動化發布-Fastlane 帶來的全自動化發布》已經講解的很清楚了,就直接略過了,直接上 Fastfile 中用到的代碼,因打包使用的是企業證書,因此將 method 方法設置為 enterprise 。

 lane :to_firim do
  # 如果你用 pod install
  cocoapods
  # 如果你沒有申請adhoc證書,sigh會自動幫你申請,并且添加到Xcode里
  #sigh(adhoc: true)
  # 以下兩個action來自fastlane-plugin-versioning,
  # 第一個遞增 Build,第二個設定Version。
  # 如果你有多個target,就必須指定target的值,否則它會直接找找到的第一個plist修改
  # 在這里我建議每一個打的包的Build都要不一樣,這樣crash了拿到日志,可以對應到ipa上
  increment_build_number_in_plist(target: "XXXXX")
  increment_version_number_in_plist(
    target: "XXXXX",
    version_number: '1.9.0'
    )
  # gym用來編譯ipa
  gym(
    output_directory: './firim',
    export_options: {
      method: "enterprise", # 指定打包方式
      teamID: "XXXXX",
      thinning: "<none>"
    },
    scheme: "XXXXX"
    )
  # 上傳ipa到fir.im服務器,在fir.im獲取firim_api_token
  firim(firim_api_token: "XXXXXXXXXXXXXXXXXXXX")
end

要運行上端代碼,需要先添加兩個插件,不然會報錯

fastlane add_plugin versioning
fastlane add_plugin firim

踩坑之旅

接下來就可以執行以來命令來完成打包到 fir.im

fastlane to_firim

第一次執行到 cocopods 出錯 ??

43CBAA33-12D4-4724-944D-570D99D5BC0B.png

錯誤信息:

cocoapods is not part of the bundle, Add it to your Gemfile 

這里首先要介紹下 bundle ,在配置文件 Gemfile 里說明你的應用依賴哪些第三方包,它會自動幫助你下載安裝,并會下載這些包的依賴包。

于是到項目目錄文件下找到 Gemfile 文件,添加 cocoapods

# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!

source "https://rubygems.org"

gem 'fastlane'
gem 'cocoapods'

plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

執行

bundle install

重新執行

fastlane to_firim

結果執行到 cocoapods 又出錯了 ????


CFD949AB-56FB-4A7B-A044-3A064414A441.png.png

這次的錯誤信息是:

The 'Pods-XXXXXX' target has frameworks with conflicting names: ummobclick.framework

大意是說和友盟有沖突,最終在這里找到了解決方法,參照里面的方法,現將友盟相關SDK注釋掉,執行 pod update, 然后去掉注釋,重新執行 pod update,重新執行打包命令,結果又出問題了(╯‵□′)╯︵┻━┻,不多說上圖

D86B2555-D5B2-462A-8E03-CC1197D00DB8.png.png

提示

'AFURLConnectionOperation.h' file not found

用 Xcode 打開項目一看,確實有報錯

2033E9EF-880A-4F18-B2C9-5404BC864E10.png.png

感覺奇怪,之前明明可以正常運行,難道是 pod update 更新之后引入的問題?
對比 pod update 之前 AFNetworking 中 UIKit 的代碼,發現更新之后多了個 UIAlertView+AFNetworking ,AFURLConnectionOperation.h not found 錯入的引入正是由于該文件。于是我參照了上面處理友盟沖突的方法,移除之后又重新添加,然后問題就解決了。

56D603B7-2A99-4040-8ED7-F0FA02933837.png.png
97AFBE44-3543-45B9-A3B4-D2760B9218A9.png.png

再一次運行打包命令,??,其實第一次設置 fastlane 中的 gym 時,并沒有設置 teamID,結果報錯

# gym用來編譯ipa
  gym(
    output_directory: './firim',
    export_options: {
      method: "enterprise", # 這可以不指定
      thinning: "<none>"
    },
    scheme: "XXXXXXX"
    )
E8826E04-79CA-440C-A852-FE2C83A7FF43.png.png

在 Fastlane 中添加 teamID 之后,再次運行打包命令,終于執行成功上傳到了 fir.im。

其實在執行的過程中,因為選擇了企業賬號,剛開始的時候 gym 中 method 選擇了 ad-hoc,出了差錯,具體錯誤可以看下圖,因此在打包的過程中一定要注意證書與 method 的選擇。

 Can't find any applicable signing identities for items: (
"<IDEDistributionItem: 0x7f9869b91370 'com.wenwen.group' '<DVTFilePath:0x7f9868bbe760:'/Users/jing/Library/Developer/Xcode/Archives/2017-06-07/GroupWenWen 2017-06-07 16.12.07.xcarchive/Products/Applications/GroupWenWen.app'>'>"
)
Errors={
"<DVTSigningCertificate: 0x7f9869a257c0; name='iPhone Distribution: Beijing Sogou Technology Development Co., Ltd.', hash='08556715143C5BD36F7B8F3AAF342495A701CA6C', serialNumber='6EAB97F1C9F31281', certificateKind='1.2.840.113635.100.6.1.4, issueDate='2016-05-10 06:43:09 +0000''>" =     {
"<IDEDistributionItem: 0x7f9869b91370 'com.wenwen.group' '<DVTFilePath:0x7f9868bbe760:'/Users/jing/Library/Developer/Xcode/Archives/2017-06-07/GroupWenWen 2017-06-07 16.12.07.xcarchive/Products/Applications/GroupWenWen.app'>'>" = "Error Domain=IDECodesignResolverErrorDomain Code=10 \"No matching provisioning profiles found\" UserInfo={NSLocalizedRecoverySuggestion=No valid 'ad-hoc' profiles were found., NSLocalizedDescription=No matching provisioning profiles found, IDECodesignResolverError_ResolutionInputsKey=<IDECodesignResolutionInputs: 0x7f9869a38270; portalTeamID='TUX63H4XEY', usingTeamBasedSigning='NO', bundleIdentifier='com.wenwen.group', targetName='(null)', provisioningProfilePurpose='2', requiresProvisioningProfile='YES', provisioningProfilePlatform='iOS', certificateKind='1.2.840.113635.100.6.1.4', requiredEntitlements='{\n    \"application-identifier\" = \"TUX63H4XEY.com.wenwen.group\";\n    \"keychain-access-groups\" =     (\n        \"TUX63H4XEY.com.wenwen.group\"\n    );\n}', requiredCodesignableDevices='(null)', requiredFeatures='(null)'>\n}";
};
}
...

參考文章

https://whlsxl.github.io/#to_firim
https://henter.me/post/ruby-rvm-gem-rake-bundle-rails.html
http://www.lxweimin.com/p/a04a6e055669

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

推薦閱讀更多精彩內容