web-dev-qa-db-fra.com

La classe PLBuildVersion est implémentée dans les deux frameworks

la version iOS 10/Xcode 8 GM qui contient le texte ci-dessous n’a jamais été utilisée auparavant sur Xcode 7. Des idées?

objc [25161]: La classe PLBuildVersion est implémentée dans les deux /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x12049a910) et /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210). Un des deux sera utilisé. Lequel n'est pas défini.

(NOTE: Seulement semble se produire dans le simulateur, n'apparaît pas sur le périphérique réel).

224
FlatDog

Idée principale

L'idée principale est simple:

Si votre application (ou vos dépendances, telles que Pods) utilise un framework qui utilise explicitement (ou implicitement) PhotoLibraryServices.framework ou AssetsLibraryServices.framework en tant que dépendance, Xcode vous avertit (même si vous n'en utilisez qu'un seul). Il peut s'agir de Photos/PhotosUI.framework ou AssetsLibrary.framework, ou d'un autre (je n'ai pas la liste complète des dépendances, mais c'est possible).

Quel est le problème?

La classe nommée PLBuildVersion est définie à la fois dans PhotoLibraryServices.framework et AssetsLibraryServices.framework. Le nom de classe est unique dans Objective-C (vous ne pouvez pas définir 2 classes avec le même nom). Par conséquent, il n'est pas défini celle qui sera utilisée au moment de l'exécution.

Cependant, je pense que ce ne sera pas un problème, car les deux classes ont les mêmes méthodes et champs (vérifié avec désassembleur) et je suppose que les deux ont été compilées à partir de la même source.

Radar est déjà envoyé.

143
Roman Ermolov

Selon la réponse d'un employé d'Apple sur Forum des développeurs Apple :

Vous ne contrôlez aucune des sources de classe répertoriées, vous ne pouvez donc ni ne devriez rien faire à part signaler un bogue.

52
Raphael Oliveira

Je ne parvenais pas à supprimer cet avertissement, mais si vous souhaitez éviter le blocage de l'application, vous devez fournir une description de la raison de votre accès à l'appareil photo, à la bibliothèque de photos, etc. Ceci est nouveau dans iOS10.

Entrez ce qui suit dans votre fichier Info.plist.

Photo

Clé: Privacy - Photo Library Usage Description Valeur: $(PRODUCT_NAME) photo use

Caméra

Clé: Privacy - Camera Usage Description Valeur: $(PRODUCT_NAME) camera use

Plus d'informations peuvent être trouvées ici: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

46
Nick Meehan

Je trouve que vous pouvez obtenir cette erreur simplement en utilisant un UIWebView. Ma solution consistait à remplacer mon utilisation de UIWebView par WKWebView.

12
matt

J'avais ceci après avoir ajouté Answers on Fabric à mon projet.

La suppression des données dérivées a fait l'affaire pour moi. (Maj. commande k en Xcode)

Éditer un an plus tard:

Après avoir supprimé les données dérivées, quittez toujours XCode et redémarrez-le.

Dans des cas sans rapport, j’ai l’impression que la suppression des données dérivées n’efface pas les caches en mémoire de XCode des données dérivées.

5
Gerd Castan

Réinitialiser le simulateur iOS a résolu ce problème pour moi. Simulateur -> Réinitialiser le contenu et les paramètres.

2
Eric Mentele

Dans mon cas, cet avertissement a commencé à apparaître après l'ouverture d'un deuxième projet xcode et l'exécution de la deuxième application sur le simulateur. Après être revenu à la première application, l'avertissement a commencé à apparaître. Je viens de quitter le simulateur et Xcode et de rouvrir mon projet. L'avertissement a disparu après cela. Si cela ne résout pas le problème, passez aux autres réponses. Xcode peut être vraiment difficile parfois.

0
Alexander Luna