La classe PLBuildVersion è implementata in entrambi i framework


225

iOS 10 / Xcode 8 GM build ottenendo il seguito, mai avuto prima su Xcode 7. Qualche idea?

objc [25161]: Class PLBuildVersion è implementata in entrambi /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/Assets.Service/Assets.Service0Assets e /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryS22xx1) 042 Verrà utilizzato uno dei due. Quale non è definito.

(NOTA: sembra accadere solo nel simulatore, non appare sul dispositivo reale).


1
Stai usando Fabric o un'altra terza libreria di Twitter nel tuo progetto?
Kevin,

3
Non sto usando Twitter. forse Firebase può causare anche questo?
Yitzchak,

1
@noellee come Zac Sto usando fabric nel mio progetto e ho anche lo stesso errore
user1019042

1
@Yitschak uso Firebase e ho capito anche questo.
n3wbie,

1
sì, sto usando Fabric and Crashlytics (v3.8.2)
FlatDog

Risposte:


144

Idea principale

L'idea principale è semplice:

Se la tua app (o dipendenze, come i pod) utilizza un framework, che utilizza esplicito (o implicito) PhotoLibraryServices.frameworko AssetsLibraryServices.frameworkcome dipendenza, Xcode ti avverte (anche se ne stai utilizzando solo una). Potrebbe essere Photos/PhotosUI.frameworko AssetsLibrary.framework, o un altro (non ho un elenco completo di dipendenze, ma è possibile).

Qual è il problema?

La classe con nome PLBuildVersionè definita in entrambi PhotoLibraryServices.frameworke AssetsLibraryServices.framework. Il nome della classe è univoco in Objective-C (non è possibile definire 2 classi con lo stesso nome), quindi non è definito quale verrà utilizzato in fase di esecuzione.

Tuttavia, penso che non sarà un problema, perché entrambe le classi hanno gli stessi metodi e campi (verificato con disassemblatore) e immagino che entrambi siano stati compilati dalla stessa fonte.

Il radar è già stato inviato.


2
il messaggio di avviso è ancora lì.
Faiz,

9
Ho scoperto che se utilizzo Webview in un VC, ho visualizzato questo tipo di messaggio di avviso nella finestra di debug quando viene mostrato il VC. Uso Xcode 8.1, swift 3.
David.Chu.ca

1
sto usando xcode 8.2 e non ho alcun uso fotolibare nel mio progetto e ricevo ancora questo avviso.
Himanshu Moradiya,

1
Sono solo io o la presentazione del viewcontroller diventa lenta, che viene presentata e presenta questo messaggio di avviso ???
nr5

2
Ricevo anche questo avviso quando ho impostato .attributedText. Non accedo alla fotocamera o alle foto. Questo avviso provoca anche un grave ritardo nel caricamento del View Controller, anche se non sono necessarie attività che richiedono molto tempo (nessun accesso alla rete, nessun I / O di file, ecc.).
R Moyer,


46

Non sono stato in grado di trovare un modo per eliminare l'avviso, ma se si desidera impedire il crash dell'app, è necessario fornire una descrizione del motivo per cui si accede alla fotocamera, alla libreria di foto, ecc. Questa è una novità di iOS10.

Inserisci quanto segue nel tuo Info.plistfile.

Foto

Chiave: Privacy - Photo Library Usage Description Valore: $(PRODUCT_NAME) photo use

telecamera

Chiave: Privacy - Camera Usage Description Valore: $(PRODUCT_NAME) camera use

Maggiori informazioni possono essere trovate qui: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html


33
I messaggi di avviso sono ancora lì.
Kevin,

6
la mia app non usa affatto la fotocamera e ricevo il messaggio. Tuttavia, ho provato ad aggiungerli a Plist come hai suggerito e che ancora non lo ha risolto ..
FlatDog

5
Qualcuno lo capisce? Non sto usando la libreria di foto né sto usando la fotocamera, tuttavia ricevo ancora l'avvertimento e l'incidente
MikeG

2
@MikeG Non sto nemmeno usando nessuna libreria e sto ancora ottenendo il crash, mi sono sbarazzato degli avvisi aggiungendo i dettagli di configurazione chiave / stringa al info.plistfile. Apparentemente è necessario in IOS 10.x
David Morton il

2
Ho ricevuto questo avviso dopo aver impostato textView.attributedText su NSAttributedString
mik.ro

12

Trovo che tu possa ottenere questo errore semplicemente usando un UIWebView. La mia soluzione era sostituire il mio uso di UIWebView con WKWebView.


5
Ho provato WKWebView ma l'avviso è ancora visualizzato
muz the ax

5

L'ho avuto dopo aver aggiunto Answers on Fabric al mio progetto.

L'eliminazione dei dati derivati ​​mi ha aiutato. (sposta il comando alt k in XCode)

Modifica un anno dopo:

Dopo aver eliminato i dati derivati, esci sempre da XCode e riavvialo.

In casi non correlati ho l'impressione che l'eliminazione dei dati derivati ​​non cancelli gli XCode nelle cache di memoria dei dati derivati.


l'avviso è ancora lì, ma l'app non si blocca più. Sto usando xcode8.2.1
Dashrath

2

Il ripristino del simulatore iOS ha risolto questo problema per me. Simulatore -> Ripristina contenuto e impostazioni.


Sono appena arrivato alla stessa conclusione e ha funzionato anche per me.
Franz

0

Nel mio caso questo avviso ha iniziato a comparire dopo aver aperto un secondo progetto xcode ed eseguito la seconda app sul simulatore. Dopo essere tornati alla prima app, è apparso l'avviso. Ho appena lasciato Simulator e Xcode e ho riaperto il mio progetto. L'avvertimento è scomparso dopo quello. Se ciò non lo risolve, procedi con le altre risposte. Xcode può essere davvero schizzinoso a volte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.