Klasa PLBuildVersion jest zaimplementowana w obu ramach

225

Kompilacja iOS 10 / Xcode 8 GM jest poniżej, nigdy wcześniej nie miał tego na Xcode 7. Jakieś pomysły?

objc [25161]: Klasa PLBuildVersion jest zaimplementowana zarówno w /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices. 0x120/fr. i /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210). Jeden z dwóch będzie użyty. Który jest niezdefiniowany.

(UWAGA: Wydaje się, że dzieje się to tylko w symulatorze, nie pojawia się na prawdziwym urządzeniu).

FlatDog
źródło
1
Czy używasz w swoim projekcie Fabric lub innej trzeciej biblioteki Twittera?
Kevin,
3
Nie używam Twittera. może może to spowodować Firebase?
Icchak
1
@noellee jak Zac Używam tkaniny w swoim projekcie i mam również ten sam błąd
1019042
1
@Yitschak używam firebase i też to dostałem.
n3wbie
1
tak, używam Fabric i Crashlytics (v3.8.2)
FlatDog

Odpowiedzi:

144

Główny pomysł

Główna idea jest prosta:

Jeśli twoja aplikacja (lub zależności, takie jak Pods) używa frameworka, który używa jawnej (lub niejawnej) PhotoLibraryServices.frameworklub AssetsLibraryServices.frameworkjako zależności, Xcode ostrzeże Cię (nawet jeśli używasz tylko jednej z nich). To może być Photos/PhotosUI.frameworkalbo AssetsLibrary.framework, lub innego (nie mam pełną listę zależności, ale jest to możliwe).

Jaki jest problem?

Klasa o nazwie PLBuildVersionjest zdefiniowana zarówno w, jak PhotoLibraryServices.frameworki AssetsLibraryServices.framework. Nazwa klasy jest unikalna w Objective-C (nie można zdefiniować 2 klas o tej samej nazwie), więc nie jest zdefiniowane, która z nich będzie używana w czasie wykonywania.

Myślę jednak, że nie będzie to problemem, ponieważ obie klasy mają te same metody i pola (sprawdziłem to za pomocą deasemblera) i myślę, że obie zostały skompilowane z tego samego źródła.

Radar jest już wysłany.

Roman Ermolov
źródło
2
komunikat ostrzegawczy nadal tam jest.
Faiz Fareed
9
Odkryłem, że jeśli używam Webview w jednym VC, dostaję tego typu komunikat ostrzegawczy w oknie debugowania, gdy VC jest wyświetlane. Używam Xcode 8.1, szybki 3.
David.Chu.ca
1
używam xcode 8.2 i nie mam żadnego wykorzystania fotografii w moim projekcie i nadal otrzymuję to ostrzeżenie.
Himanshu Moradiya
1
Czy to tylko ja, czy prezentacja kontrolera widoku staje się wolna, która jest prezentowana i ma ten komunikat ostrzegawczy?
nr5
2
Otrzymuję również to ostrzeżenie, gdy ustawiam .attributedText. Nie mam dostępu do aparatu ani zdjęć. To ostrzeżenie powoduje również poważne opóźnienie w załadowaniu kontrolera widoku, nawet jeśli nie wymaga to pracochłonnych zadań (brak dostępu do sieci, brak operacji we / wy plików itp.).
R Moyer
53

Zgodnie z odpowiedzią pracownika Apple na Forum programistów Apple :

Nie kontrolujesz żadnego z wymienionych źródeł klas, więc nie możesz nic robić ani robić - oprócz zgłaszania błędu.

Raphael Oliveira
źródło
Chyba o to chodzi.
Fattie
2
Nawet jeśli nie jest to problemem, nadal generuje denerwujące i rozpraszające wyjście, to krzyczy „pluskwa” ...
Jakub Truhlář
46

Nie udało mi się znaleźć sposobu na usunięcie ostrzeżenia, ale jeśli chcesz zapobiec awarii aplikacji, musisz podać opis, dlaczego uzyskujesz dostęp do aparatu, biblioteki zdjęć itp. Jest to nowość w iOS10.

Wprowadź następujące dane do swojego Info.plistpliku.

Zdjęcie

Klucz: Privacy - Photo Library Usage Description Wartość: $(PRODUCT_NAME) photo use

Aparat fotograficzny

Klucz: Privacy - Camera Usage Description Wartość: $(PRODUCT_NAME) camera use

Więcej informacji można znaleźć tutaj: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

Nick Meehan
źródło
33
Komunikaty ostrzegawcze są nadal dostępne.
Kevin
6
moja aplikacja w ogóle nie korzysta z aparatu i dostaję wiadomość. Mimo to próbowałem dodać je do listy, jak sugerowałeś, ale to nadal nie rozwiązało.
FlatDog,
5
Ktoś to wymyślił? Nie korzystam z biblioteki zdjęć ani aparatu, jednak wciąż otrzymuję ostrzeżenie i awarię
MikeG
2
@MikeG Nie korzystam też z żadnej biblioteki i ciągle dochodzi do awarii, pozbyłem się ostrzeżeń, dodając do info.plistpliku szczegóły konfiguracji klucza / łańcucha . Najwyraźniej jest to potrzebne w IOS 10.x
David Morton,
2
Otrzymałem to ostrzeżenie po ustawieniu textView.attributionText na NSAttributString
mik.ro
12

Uważam, że możesz uzyskać ten błąd tylko za pomocą UIWebView. Moim rozwiązaniem było zastąpienie korzystania z UIWebView przez WKWebView.

matowy
źródło
5
Próbowałem WKWebView, ale ostrzeżenie wciąż się pojawia
muz ax
5

Miałem to po dodaniu odpowiedzi w usłudze Fabric do mojego projektu.

Usunięcie danych pochodnych załatwiło sprawę. (shift alt polecenie k w XCode)

Edytuj rok później:

Po usunięciu danych pochodnych zawsze wyjdź z XCode i uruchom go ponownie.

W niepowiązanych przypadkach mam wrażenie, że usunięcie danych pochodnych nie usuwa kodów XCode w pamięci podręcznej danych pochodnych.

Gerd Castan
źródło
ostrzeżenie wciąż tam jest, ALE aplikacja już się nie zawiesza. Używam xcode8.2.1
Dashrath
2

Zresetowanie symulatora iOS naprawiło to dla mnie. Symulator -> Resetuj zawartość i ustawienia.

Eric Mentele
źródło
Doszedłem do tego samego wniosku i dla mnie też zadziałało.
Franz
0

W moim przypadku to ostrzeżenie zaczęło pojawiać się po otwarciu drugiego projektu xcode i uruchomieniu drugiej aplikacji na symulatorze. Po przejściu z powrotem do pierwszej aplikacji zaczęło pojawiać się ostrzeżenie. Po prostu opuściłem Symulator i Xcode i ponownie otworzyłem swój projekt. Ostrzeżenie zniknęło potem. Jeśli to nie rozwiąże problemu, przejdź do innych odpowiedzi. Xcode może być czasem bardzo wybredny.

Alexander Luna
źródło