PLBuildVersion 类在两个框架中都实现

Posted

技术标签:

【中文标题】PLBuildVersion 类在两个框架中都实现【英文标题】:Class PLBuildVersion is implemented in both frameworks 【发布时间】:2016-09-15 21:16:23 【问题描述】:

ios 10 / Xcode 8 GM 构建获得以下内容,以前从未在 Xcode 7 上使用过。有什么想法吗?

objc[25161]:PLBuildVersion 类在两者中都实现 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x12049a910) 和 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210)。将使用两者之一。哪一个是未定义的。

(注意:似乎只发生在模拟器中,不会出现在真实设备上)。

【问题讨论】:

您在项目中使用的是 Fabric 还是其他 Twitter 3rd 库? 我不使用推特。也许 Firebase 也会导致这种情况? @noellee like Zac 我在我的项目中使用了fabric,我也有同样的错误 @Yitschak 我使用 firebase 也得到了这个。 是的,我正在使用 Fabric 和 Crashlytics (v3.8.2) 【参考方案1】:

主要思想

主要思想很简单:

如果您的应用程序(或依赖项,例如 Pods)使用显式(或隐式)PhotoLibraryServices.frameworkAssetsLibraryServices.framework 作为依赖项的框架,Xcode 会警告您(即使您只使用其中一个)。可能是 Photos/PhotosUI.frameworkAssetsLibrary.framework,或其他(我没有完整的依赖项列表,但有可能)。

有什么问题?

名称为PLBuildVersion 的类在PhotoLibraryServices.frameworkAssetsLibraryServices.framework 中定义。类名在 Objective-C 中是唯一的(你不能定义 2 个同名的类),所以在运行时使用哪一个是不确定的。

但是,我认为这不会有问题,因为两个类都有相同的方法和字段(用反汇编程序检查过),而且我猜它们都是从同一个源编译的。

Radar 已发送。

【讨论】:

警告信息还在。 我发现如果我在一个 VC 中使用 Webview,当显示 VC 时,我会在调试窗口中收到此类警告消息。我使用 Xcode 8.1,swift 3。 我使用的是 xcode 8.2,我的项目中没有使用任何 photolibary,但我仍然收到此警告。 只有我还是viewcontroller呈现变慢,正在呈现并且有这个警告信息??? 当我设置.attributedText 时,我也会收到此警告。我没有访问相机或照片。此警告还会导致 View Controller 加载严重滞后,即使不涉及时间密集型任务(无网络访问、无文件 i/o 等)。【参考方案2】:

根据 Apple 员工在 Apple's Developer Forum 上的回答:

您无法控制列出的任何一个课程来源,因此您无法或应该做任何事情——除了报告错误。

【讨论】:

我猜就是这样。 即使没有问题,它仍然会产生令人讨厌和分散注意力的输出,这尖叫着“bug”......【参考方案3】:

我无法找到消除警告的方法,但如果您想防止应用崩溃,您需要说明您访问相机、照片库等的原因。这是新的在 iOS10 中。

将以下内容输入到您的Info.plist 文件中。

照片

密钥:Privacy - Photo Library Usage Description 值:$(PRODUCT_NAME) photo use

相机

密钥:Privacy - Camera Usage Description 值:$(PRODUCT_NAME) camera use

更多信息可以在这里找到:https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

【讨论】:

警告信息还在。 我的应用根本不使用相机,我收到了消息。不过,我尝试按照您的建议将这些添加到 plist 中,但仍然没有解决它.. 有人知道吗?我没有使用照片库,也没有使用相机,但是我仍然收到警告和崩溃 @MikeG 我也没有使用任何一个库并且仍然出现崩溃,我通过将键/字符串配置详细信息添加到 info.plist 文件来消除警告。显然它在 IOS 10.x 中需要 在将 textView.attributedText 设置为 NSAttributedString 后出现此警告【参考方案4】:

我发现你可以仅仅通过使用 UIWebView 来得到这个错误。我的解决方案是用 WKWebView 替换我对 UIWebView 的使用。

【讨论】:

我试过 WKWebView 但警告仍然出现【参考方案5】:

在我的项目中添加了关于 Fabric 的 Answers 后,我有了这个。

删除派生数据对我有用。 (XCode 中的 shift alt 命令 k)

一年后编辑:

删除派生数据后,始终退出 XCode 并重新启动它。

在不相关的情况下,我的印象是删除派生数据不会清除 XCode 在派生数据的内存缓存中。

【讨论】:

警告仍然存在但应用程序不再崩溃。我正在使用 xcode8.2.1【参考方案6】:

重置 iOS 模拟器为我解决了这个问题。模拟器 -> 重置内容和设置。

【讨论】:

刚刚得出了同样的结论,它也对我有用。【参考方案7】:

在我的情况下,此警告在打开第二个 xcode 项目并在模拟器上运行第二个应用程序后开始出现。改回第一个应用程序后,警告开始出现。我刚刚退出了模拟器和 Xcode 并重新打开了我的项目。之后警告消失了。如果这不能解决问题,请继续其他答案。 Xcode 有时真的很挑剔。

【讨论】:

以上是关于PLBuildVersion 类在两个框架中都实现的主要内容,如果未能解决你的问题,请参考以下文章

PLBuildVersion 类在两个框架中都实现

Cocoapod 错误:类在两者中都实现

objc[89368]:VCWeakObjectHolder 类在两者中都实现

JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的

ABC 类在 Py2app 应用程序和系统库中都实现了。将使用两者之一

我更新Xcode8时如何解决这个日志?