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.