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.framework
或 AssetsLibraryServices.framework
作为依赖项的框架,Xcode 会警告您(即使您只使用其中一个)。可能是 Photos/PhotosUI.framework
或 AssetsLibrary.framework
,或其他(我没有完整的依赖项列表,但有可能)。
有什么问题?
名称为PLBuildVersion
的类在PhotoLibraryServices.framework
和AssetsLibraryServices.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 类在两个框架中都实现的主要内容,如果未能解决你的问题,请参考以下文章
objc[89368]:VCWeakObjectHolder 类在两者中都实现
JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的