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.jianshu.com/p/a04a6e055669

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容