在上传应用之后,我收到了以下电子邮件:
我们发现您的应用程序 XXX 最近的上传存在一个或多个问题。请纠正以下问题,然后重新上传。
ITMS-90806: CFBundleIdentifier冲突 - 每个捆绑包必须具有唯一的捆绑标识符。捆绑标识符“org.cocoapods.CocoaLumberjack”在以下捆绑包中使用:'[CocoaLumberjack.framework, CocoaLumberjack.framework]'。
CocoaLumberjack是一个第三方库,我以前已经多次使用它而没有任何问题,我很困惑。
这与框架的.plist关键字CFBundlePackageType无关,如此问题/答案所指出的那样:Framework CFBundleIdentifier Collision。CocoaLumberjack捆绑包类型为“Framework”(CFBundlePackageType = FMWK)。CocoaLumberjack是一个广泛使用的第三方库,通过cocoapods添加到我的项目中。
这个问题可能与我的应用程序捆绑包中的watchOS目标有关。CocoaLumberjack库用于iOS应用和watchOS应用,并导致捆绑标识符重复的问题。
如果在iOS目标和Watch扩展之间共享框架,则Apple Connect服务器将检测到CFBundleIdentifier冲突。
target 'App' do
platform :ios, '9.0'
# Pods for App
...
pod 'CocoaLumberjack/Swift', '~> 3.5.3'
...
end
target 'AppWatch Extension' do
platform :watchos, '5.0'
# Pods for Watch Extension
...
pod 'CocoaLumberjack/Swift', '~> 3.5.3'
...
end
iOS应用程序正在使用该库,watchOS扩展程序也正在使用同一库。它们使用的是不同的库,但CocoaLumberjack是两者都包含的唯一一个库。
我已经多次使用相同的库配置发布了我的应用程序,并且之前从未出现任何问题。我猜测苹果在最近几天内更改了有关bundle identifier的某些限制。
使用Carthage也存在同样的问题。