cocoapods-packager编译动态库失败的解决

cocoapods-packager编译动态库失败的解决

由于近期在研究私有库打包,发现此问题。

起因

一开始运行此段代码pod package *******.podspec --force --no-mangle毫无问题。
然后就开始尝试生成一个动态库,于是加上了--dynamic,此时出现了下面一大串代码。

   CocoaPods : 1.9.3
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
    RubyGems : 3.0.3
        Host : Mac OS X 10.15 (19A582a)
       Xcode : 11.3.1 (11C504)
         Git : git version 2.21.1 (Apple Git-122.3)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : ARSpecRepo - git - git@gitlab.allride-ai.cn:infra/ios-common.git @ b1f3805d2a766c9509bde74f4574270917dce669

               cocoa-local - file system
               master - git - https://github.com/CocoaPods/Specs.git @ 163b8a8c3e6980b42c623bc76f6b136f8c68d19c

               trunk - CDN - https://cdn.cocoapods.org/
cocoapods-art         : 1.0.4
cocoapods-deintegrate : 1.0.4
cocoapods-packager    : 1.5.0
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.4.1
cocoapods-try         : 1.1.0
ArgumentError - wrong number of arguments (given 3, expected 7..10)
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-1.9.3/lib/cocoapods/target/pod_target.rb:137:in `initialize'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/cocoapods-packager/pod_utils.rb:161:in `new'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/cocoapods-packager/pod_utils.rb:161:in `build_dynamic_target'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/cocoapods-packager/pod_utils.rb:131:in `install_dynamic_pod'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/pod/command/package.rb:83:in `build_in_sandbox'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/pod/command/package.rb:100:in `block in build_package'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/pod/command/package.rb:99:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/pod/command/package.rb:99:in `build_package'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/pod/command/package.rb:66:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-1.9.3/lib/cocoapods/command.rb:52:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-1.9.3/bin/pod:55:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/bin/pod:24:in `load'
/usr/local/lib/ruby/gems/2.6.0/bin/pod:24:in `<main>'

然后同事的电脑可以正常打包,我查看了他的电脑环境,发现ruby是2.3.7,我以为是此处发生问题,于是开始了降级Ruby,然而。。。。。。事情并没有这么简单。

我以为降级就会成功

因为我的系统已经更新到了10.15 Catalina,默认的Ruby版本就是2.6.3。

降级Ruby就得降级系统,但是降级系统到10.14总是不成功,总是提示

更新固件时发生错误。退出安装器以重新启动电脑,然后再次尝试。

然后我想起来这可能是联网验证的结果,于是我关闭wifi,调整时间到15年,然而。。。。。。。。。。还是会出现

更新固件时发生错误。退出安装器以重新启动电脑,然后再次尝试。

看来断了wifi还是没有用,最后发现安装过程中会重启几次,重启的时候wifi会自动开启然后连上我的路由器,于是我就把路由器的网线拔了,wifi让你连有网算我输!

然后。。。。。。。。居然成功了。哎。我太难了。

进入系统后一顿初始化,

* 下载Xcode
* 安装cocoapods
* 安装cocoapods-packager
* 拉代码

等啊等,个把小时搞定这些事。

pod package *******.podspec --force --dynamic --no-mangle打包ing

然后。。。。。。啊。。。。。。。还是报错啊!!!!!!!!!!!

和之前除了工具版本不一致。其他基本一模一样。

看来不是Ruby版本的问题。

刚才方向不对,再来

于是我就想是不是cocoapods-packager自己的锅。

迅速去Github上的cocoapods-packager项目看issues。

发现了一个问题: issues#257 Fail to build a pod into dynamic framework

细心的我发现了一句话
Look at the master branch, the calling to Pod::PodTarget.new has changed.

我马不停蹄的查看了cocoapods-packager本机的代码,目录在这
cocoapods-packager/lib/cocoapods-packager/pod_utils.rb

        file_accessors = create_file_accessors(static_target, dynamic_sandbox)

        archs = []
        dynamic_target = Pod::PodTarget.new(dynamic_sandbox, true, static_target.user_build_configurations, archs, platform, static_target.specs, static_target.target_definitions, file_accessors)
        dynamic_target
        end

Githu上现存的master分支

        dynamic_target = Pod::PodTarget.new(static_target.specs, static_target.target_definitions, dynamic_sandbox)
        dynamic_target.host_requires_frameworks = true
        dynamic_target.user_build_configurations = static_target.user_build_configurations
        dynamic_target
        end

对比发现这一段代码不一样,虽然我看不懂、、、、、、我是真的不会ruby。

问题到这里差不多就解决了一大半,因为我已经找到了原因。

发现解决方法

这个时候我sudo gem uninstall cocoapods-packager,卸载掉cocoapods-packager。

开始源码安装cocoapods-packager。

首先拉取源代码
git clone https://github.com/CocoaPods/cocoapods-packager.git

完毕之后进入目录 cocoapods-packager

  • 查看bundler是否安装gem list bundler (没有出现bundler的话就gem install bundler)

  • 安装依赖项bundler install

  • 执行sudo gem build cocoapods-packager.gemspec语句后会生成cocoapods-packager-1.5.0.gem文件

  • 将生成的cocoapods-packager-1.5.0.gem 文件执行本地安装sudo gem install cocoapods-packager-1.5.0.gem -l

为了更稳我重启了终端。

接着 pod package *******.podspec --force --dynamic --no-mangle打包ing

出现了
Building dynamic framework **** (****) with configuration Release

成功了。。。。。。
太难了。

此时我的编译环境是

* macOS 10.14.6
* Xcode 11.3

下面就想,新系统上行不行的通,现在验证之前又不能升级。。。。
emmmm。。。。。

我还有个blackApple。

最新编译环境验证

另外一个设备的编译环境是

* macOS 10.15.7
* Xcode 12.0.1

都是最新的。

卸载掉gem安装的cocoapods-packager。

源码安装cocoapods-packager。

接着 pod package *******.podspec --force --dynamic --no-mangle打包ing

出现了
Building dynamic framework **** (****) with configuration Release

哎。又成功了。Happy。。。。

马上把我笔记本的东西都升级了。美滋滋。。。

特此记录。。。。。。。。。。。

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