Класс PLBuildVersion реализован в обеих платформах

225

iOS 10 / Xcode 8 GM build получает ниже, никогда не было раньше на Xcode 7. Есть идеи?

objc [25161]: класс PLBuildVersion реализован в обоих файлах /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibrarySerле и /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x120242). Один из двух будет использован. Какой из них не определен.

(ПРИМЕЧАНИЕ: только кажется, что происходит в симуляторе, не отображается на реальном устройстве).

FlatDog
источник
1
Вы используете в своем проекте Fabric или другую третью библиотеку Twitter?
Кевин
3
Я не использую твиттер. может быть, Firebase может вызвать это тоже?
Ицхак
1
@noellee, как Зак Я использую ткань в моем проекте, и у меня также есть та же ошибка
user1019042
1
@ Yitschak Я использую FireBase и получил это тоже.
n3wbie
1
да, я использую Fabric и Crashlytics (v3.8.2)
FlatDog

Ответы:

144

Главная мысль

Основная идея проста:

Если ваше приложение (или зависимости, такие как Pod) использует framework, который использует явные (или неявные) PhotoLibraryServices.frameworkили AssetsLibraryServices.frameworkкак зависимости, Xcode предупредит вас (даже если вы используете только один из них). Это может быть Photos/PhotosUI.frameworkили AssetsLibrary.framework, или другое (у меня нет полного списка зависимостей, но это возможно).

В чем проблема?

Класс с именем PLBuildVersionопределяется в обоих PhotoLibraryServices.frameworkи AssetsLibraryServices.framework. Имя класса уникально в Objective-C (вы не можете определить 2 класса с одинаковым именем), поэтому не определено, какой из них будет использоваться во время выполнения.

Тем не менее, я думаю, что это не будет проблемой, потому что оба класса имеют одинаковые методы и поля (проверил это с помощью дизассемблера), и я предполагаю, что оба были скомпилированы из одного и того же источника.

Радар уже отправлен.

Роман Ермолов
источник
2
предупреждающее сообщение все еще там.
Фаиз Фарид
9
Я обнаружил, что если я использую Webview в одном VC, я получаю предупреждающее сообщение такого типа в окне отладки, когда отображается VC. Я использую Xcode 8.1, swift 3.
David.Chu.ca
1
Я использую Xcode 8.2, и у меня нет никакого использования фотолибари в моем проекте, и я все еще получаю это предупреждение.
Химаншу Морадия
1
Это только у меня, или представление viewcontroller становится медленным, который представлен и имеет это предупреждение ???
№5
2
Я также получаю это предупреждение, когда я устанавливаю .attributedText. У меня нет доступа к камере или фотографиям. Это предупреждение также вызывает серьезную задержку загрузки View Controller, даже несмотря на то, что в этом случае не требуется выполнять много времени (нет доступа к сети, нет файлового ввода-вывода и т. Д.).
R Мойер
53

Согласно ответу сотрудника Apple на форуме разработчиков Apple :

Вы не контролируете ни один из перечисленных источников классов, поэтому вы ничего не можете и не должны делать - кроме сообщения об ошибке.

Рафаэль Оливейра
источник
Я думаю, что это так.
Толстяк
2
Даже если это не проблема, она все равно генерирует раздражающий и отвлекающий вывод, этот крик "ошибка" ...
Якуб Трухларж
46

Мне не удалось найти способ избавиться от предупреждения, но если вы хотите предотвратить сбой приложения, вам нужно предоставить описание того, почему вы обращаетесь к камере, библиотеке фотографий и т. Д. Это новое в 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

Ник михан
источник
33
Предупреждающие сообщения все еще там.
Кевин
6
мое приложение вообще не использует камеру, и я получаю сообщение. Тем не менее, я попытался добавить их в plist, как вы предложили, но это до сих пор не решило ..
FlatDog
5
Кто-нибудь выяснит это? Я не использую библиотеку фотографий и не использую камеру, однако я все еще получаю предупреждение и сбой
MikeG
2
@MikeG Я также не использую ни одну библиотеку и все еще получаю сбой, я избавился от предупреждений, добавив в info.plistфайл подробности конфигурации ключа / строки . Очевидно, это необходимо в IOS 10.x
Дэвид Мортон
2
Я получил это предупреждение после установки textView.attributedText в NSAttributedString
mik.ro
12

Я считаю, что вы можете получить эту ошибку просто с помощью UIWebView. Моим решением было заменить использование UIWebView на WKWebView.

матовый
источник
5
Я попробовал WKWebView, но предупреждение все еще появляется
муз топор
5

У меня было это после добавления Ответов на ткани в мой проект.

Удаление полученных данных помогло мне. (команда сдвига alt k в XCode)

Изменить год спустя:

После удаления производных данных всегда выходите из XCode и запускайте его снова.

В несвязанных случаях у меня складывается впечатление, что удаление производных данных не очищает XCode в кэш-памяти производных данных.

Герд Кастан
источник
предупреждение по - прежнему есть , но приложение не врезаться anymore.I я использую xcode8.2.1
Dashrath
2

Сброс симулятора iOS исправил это для меня. Симулятор -> Сбросить содержимое и настройки.

Эрик Ментеле
источник
Просто пришел к такому же выводу, и у меня это сработало.
Франц
0

В моем случае это предупреждение начало появляться после открытия второго проекта xcode и запуска второго приложения на симуляторе. После возврата к первому приложению начало появляться предупреждение. Я просто вышел из Simulator и Xcode и снова открыл свой проект. Предупреждение исчезло после этого. Если это не решает проблему, переходите к другим ответам. Иногда Xcode может быть очень разборчивым.

Александр Луна
источник