关于 APP 提交应用商店后台提示 Invalid Bundle 的解决方法

参考苹果官方的链接.

1 问题描述

在提交 APP 到应用商店的时候, 出现如下错误:

Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.

APP 使用的是 Carthage 作为依赖管理工具.

2 尝试解决

参考本文开头提供的链接中 Inspecting A Binary's Linkage 一节, 按照如下步骤检查二进制包的链接问题:

  1. 在 Xcode 的 Organizer 中找到无效的 APP 包, 在其上右键选择 Show Package Contents.
  2. 进入 Products/Applications 文件夹中的应用包上面再次右键选择 Show Package Contents.
  3. 在其中找到 APP 对应名称的二进制文件, 利用 otool -L 文件完整路径 命令查看该二进制文件的链接情况(其中的 完整路径 可直接把二进制文件拖入终端获得).
  4. 在上一个步骤得到的列表中, 找到以 @rpath 开头的, 且没有添加到 App 通用设置里 Embedded Binaries 的行;
  5. 将这些行对应的库从 APP 的 Linked Frameworks and Libraries 设置中删掉, 然后将它们添加到 Embedded Binaries 中.(对于Swift libraries, 即名字以 libSwift 开头的除外.)
  6. 重复上述步骤, 对每一个 Framework 或 Extension 进行检查.

对自己的 APP 进行检查, 仔细看了上面步骤中的输出...

发现在 Release 的时候仍然将 FLEX (一个Debug工具) 进行了链接, 而 Release 的时候 FLEX 不应出现在 Bundle 中的任何地方的, 故在使用方式上肯定出了问题.

先用 fastlane 分别在 debug 和 release 配置下对工程进行打包, 然后对比看是不是真是由 FLEX 的使用方式错误引起的.

3 额外问题(新版 fastlane 出现的)

这里又遇到一个 fastlane 出来的错误, 说 You passed invalid parameters to 'gym'. 查了查官方的 issue, 原来是多个版本的 fastlane 并存发生的冲突, 故按照 issue 里面提供的解决办法:
先执行如下三行, 删掉所有已安装的 fastlane 版本:

rvm @global do gem uninstall fastlane 
rvm all do gem uninstall fastlane
gem uninstall fastlane

再重新安装:

gem install fastlane

好了, 继续使用 fastlane 来打包一个 APP, 看里面是否带有 FLEX, 结果果然是带着的.

4 最终解决

这个问题也就清楚了, 在 Release 的时候没有拷贝 FLEX 对应的 Framework 文件到 Bundle 中, 但是却在工程中链接了它, 这里又由于在代码中没有使用它, 造成没有出现错误提示...

最后就造成之前的 Invalid Bundle 问题, 所以要解决的话, 就要指定只在 Debug 的时候才链接 FLEX, 实际这里就引出了 如何只在 Debug 的时候链接特定库 的问题.

限制指定的库只在 debug 时进行链接的配置也非常简单, 这里仅详细介绍使用 Carthage 的情况下的具体操作, 其他的情况详见 4.2 节中的链接.

具体的操作办法参考这个链接中的 Excluding FLEX from Release (App Store) Builds 一节.

最终结果

经过上面的操作, 该库就只在 debug 环境下被链接和使用了, 且在 Release 环境下不会被拷贝到 Bundle 中, 同时也不会被链接到程序中, 提交 APP 的时候也不会出现问题了...

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