意外的 CFBundleExecutable 键
Posted
技术标签:
【中文标题】意外的 CFBundleExecutable 键【英文标题】:Unexpected CFBundleExecutable key 【发布时间】:2015-08-19 12:55:21 【问题描述】:在谷歌上搜索了一段时间后,有些东西告诉我这个问题是新的。
我们有一个支持 ios7-8 的功能齐全的项目。当然是多次成功提交到AppStore。
我们使用 pod、大量跟踪和监控,例如 GA 和 Instabug。
现在我们决定将在 iOS 9 上基于 Xcode 7 构建的应用版本提交给 TestFlight。
我们禁用了 bitcode,因为许多 pod,如 Flurry 和其他预建库不包含它。
构建成功,提交到 iTunesConnect 后我们得到:
我们对 GoogleAppIndexing 库(也在 pod 中)具有相同的功能,但我们删除了它,只是为了让它工作。现在 - Instabug。它走得太远了,所以我试图了解 iOS 9 中发生了什么,以及使一个完全正常工作的项目开始抛出此类错误的变化。
欢迎任何想法和想法!请分享您的经验,如果我错过了什么,我会很乐意分享我的步骤。
【问题讨论】:
这个问题你解决了吗?我也面临这个问题,但它是 GoogleMaps.bundle... 不,还没有。看起来这是一个普遍的问题。 这真的很烦人:(,我在苹果开发者论坛上问过,看看有没有其他人遇到这个问题。forums.developer.apple.com/message/42851#42851 我们在与 Startapp 的新集成中也看到了这一点。还有 iOS 9 和 Xcode 7 beta 5。 来自 Instabug 的 Moataz。你能用这个dropbox.com/s/37zwhaqzatfnz3n/Instabug.bundle.zip?dl=0 替换你拥有的 Instabug.bundle,让我知道它是怎么回事 【参考方案1】:我今天在尝试提交我们的应用程序(使用 Xcode 7 beta 5)时遇到了同样的问题,并出现了完全相同的错误消息,但不是instabug.bundle
位,而是给我TencentOpenApi_IOS_Bundle.bundle
。
然后我通过在项目中找到命名的包解决了这个问题 - 正如错误消息所暗示的那样 - 通过删除 CFBundleExecutable
键来编辑包中的 Info.plist
。 CFBundlePackageType
键已经设置为 BNDL
,所以我没有触摸它。
在这些更改之后,我执行了 Product > Clean,然后将应用程序提交到 App Store 没有问题。
我希望这会有所帮助。
【讨论】:
感谢您分享您的经验!所以这是图书馆作者的问题。但是我们,开发人员,不应该做这些伎俩……例如,我使用 pod 和 CI 系统。我不能去 CI 并且每次在 pod install 之后都做这个手动更改。但至少我们会让它工作。到目前为止,我正在寻找一个通用的解决方案。如果它没有很快出现,您的我会将您的答案标记为有帮助的答案。再次感谢您! 我做不到。如果我尝试在 Xcode 中的 pod 中打开 info.plist,它会告诉我文件已锁定并且更改不会被保存(它不会)。如果我使用外部文本编辑器,我可以看到 plist 文件的内容以某种方式编码,它不是纯文本。 @MikeKeskinov,这个链接有帮助吗:[apple.stackexchange.com/questions/68646/…?它建议在 Finder 中找到 info.plist 并编辑文件的权限以允许您在 Xcode 中对其进行编辑。 我也有类似的问题,并报告给苹果。正如Apple建议的那样,您的步骤绝对正确。 bugreport.apple.com/problem/viewproblem 我写了一个 shell 脚本来删除它作为一种解决方法。您在项目的构建阶段将其添加为运行脚本:gist.github.com/brightredchilli/ca63430518f0daa4dfa9【参考方案2】:在提交到 App Store 时,在 Xcode 7 GM 上与 AviarySDK
遇到此问题。
首先,我会检查您是否使用最新版本的库 - 供应商可能已经修复了这个问题。但是,如果您仍然面临这个问题,正如 Sleiman 所述,您需要从 plist 文件中删除有问题的库的 CFBundleExecutable
键。
Cmd + Shift + O 并输入“Info.plist”,即可找到相应的文件:
编辑 plist 后,您可能会看到描述性名称(而不是 CFBundleExecutable
和其他键。我无法在外部编辑器中编辑此文件,因此我不得不切换到右侧查看原始键/值- 点击列表:
您现在可以看到可以删除的CFBundleExecutable
键(有“可执行文件”的描述)。
对于 AviarySDK,我做了两次,对上图中看到的每个 Info.plist
执行一次,然后能够成功提交。
【讨论】:
你知道这有什么副作用吗?我对 Polljoy 捆绑包也有同样的问题。您是否认为该条目只是错误地出现在 plist 中? "Xcode automatically adds this key to the information property list file of appropriate projects." 很抱歉我不能告诉你副作用,但是我怀疑这是由于使用了一个尚未分发的旧库,不支持框架,然后 Xcode 尝试将其视为确实支持框架。 不幸的是,对于某些库(即 AppIndexing 等),plist 文件内容似乎已被加密。它允许您查看但不保存任何更改。尝试在 XCode 之外打开文件时,很明显文件已加密(非纯文本)。 这适用于谷歌登录,并允许我上传到应用商店 我刚刚遇到了与 Aviary 和 Cocoapods 0.39 相同的问题。您建议的修复似乎有效。看来是时候硬着头皮改用 AdobeCreativeSDK 了 :(【参考方案3】:我解决这个问题如下: 我们必须删除以下包的所有“可执行文件”:
GooglePlus.bundle GPPCommonSharedResources.bundle GPPShareboxSharedResources.bundle确保“Bundle type code”等于BNDL
重要提示:不要在主项目的 info.plist 中编辑任何内容。
附加屏幕,因为它们应该是每个包上方列出的“info.plist”。
【讨论】:
【参考方案4】:这对我有用
-
Apple-Shift-F,搜索 CFBundleExecutable
点击除“PODS”或您的主要目标之外的每一个
删除它(删除键)
【讨论】:
你能帮我吗:***.com/questions/39512387/…【参考方案5】:如果构建是通过 Less than( 提交的,那么它将被提交,并且 我已经通过 Xcode 7 的以下方式解决了它:
在项目项目导航器中搜索info.plist
,如下图:
现在一一打开这些info.plist
文件并删除BundleExecutable
键EXCEPT目标的info.plist
现在清理项目并实现,并且提交没有问题。
【讨论】:
【参考方案6】:我在 Google 地图库中遇到了同样的问题,我删除了 GMSCoreResources.bundle
(Info.plist
) 中的 CFBundleExecutable
键,这是 SDK 的 info.plist 清理项目并上传到 appstore。
快乐编程。
【讨论】:
【参考方案7】:只需检查您的构建设置 => 启用 Bitcode,然后将其设置为 NO
【讨论】:
对我不起作用【参考方案8】:在我的情况下,我只是将SDK
拖放到文件夹中,包括info.plist
未使用的文件。这对我来说是个问题。因此,找到未使用的info.plist
文件并将其从源代码中删除。
【讨论】:
【参考方案9】:附加说明:有时,如果您有其他目标,则目标属性可能还包含键(在“信息”部分中),因此请务必检查这些属性并将其从那里删除。我在尝试包含的其中一个捆绑包中发现了这一点。我从 plist 中删除了信息,但一直收到错误消息。
【讨论】:
【参考方案10】:如果您在通过 CocoaPods 安装的库中看到此错误,请尝试 pod update <OFFENDING POD NAME>
这解决了我的问题。
【讨论】:
【参考方案11】:我刚刚在plist
“Bundle creator OS Type code”中的适当位置添加了单词“BNDL”。
【讨论】:
以上是关于意外的 CFBundleExecutable 键的主要内容,如果未能解决你的问题,请参考以下文章
ITMS-90535:意外的 CFBundleExecutable 键
错误 ITMS-90535:意外的 CFBundleExecutable 键。 Google Plus 和 Play 游戏 Xamarin 组件
由于来自广告商框架的意外 CFBundleExecutable 密钥,来自 Xcode 7.0.1 的二进制文件未上传