Nieoczekiwany klucz CFBundleExecutable

98

Po jakimś czasie googlowania coś mi mówi, że problem jest nowy.

Mieliśmy w pełni funkcjonalny projekt wspierający iOS7-8. Oczywiście został on wielokrotnie pomyślnie przesłany do AppStore.

Używamy podów, wielu śledzenia i monitorowania, takich jak GA i Instabug.

Teraz zdecydowaliśmy się przesłać do TestFlight wersję aplikacji opartą na Xcode 7 na iOS 9.

Wyłączyliśmy kod bitcode, ponieważ wiele podów, takich jak Flurry i inne wstępnie zbudowane biblioteki, nie zawiera go.

Kompilacja przebiegła pomyślnie, po przesłaniu do iTunesConnect otrzymujemy to: wprowadź opis obrazu tutaj

Mieliśmy to samo dla biblioteki GoogleAppIndexing (również w podach), ale usunęliśmy ją, aby działała. Teraz - Instabug. To idzie za daleko, więc staram się zrozumieć, co się dzieje w iOS 9 i jakie zmiany sprawiły, że w pełni działający projekt zaczął rzucać takie błędy.

Wszelkie myśli i pomysły są mile widziane! Podziel się proszę swoimi doświadczeniami, a jeśli coś przeoczyłem, chętnie podzielę się swoimi krokami.

Dumoko
źródło
2
Czy rozwiązałeś ten problem? Ja też mam do czynienia z tym problemem, ale to GoogleMaps.bundle ...
Johnny
1
Nie, jeszcze nie. Wygląda na to, że to ogólny problem.
Dumoko
To naprawdę irytujące :(, zapytałem na forum programistów Apple, zobacz, czy ktoś inny ma ten problem. Forums.developer.apple.com/message/42851#42851
Johnny
Widzimy to również w nowej integracji ze Startapp. Również iOS 9 i Xcode 7 beta 5.
Trey Bean
2
Moataz z Instabug tutaj. Czy możesz zamienić pakiet Instabug.bundle na ten dropbox.com/s/37zwhaqzatfnz3n/Instabug.bundle.zip?dl=0 , daj mi znać, jak to idzie
Moataz Soliman

Odpowiedzi:

112

Napotkałem dziś ten sam problem z tym samym dokładnym komunikatem o błędzie podczas próby przesłania naszej aplikacji (przy użyciu Xcode 7 beta 5), ​​ale zamiast instabug.bundletego był to dla mnie TencentOpenApi_IOS_Bundle.bundle.

Rozwiązałem problem, znajdując nazwany pakiet w projekcie, a następnie - tak jak sugeruje komunikat o błędzie - edytowałem ten, Info.plistktóry jest w pakiecie, usuwając CFBundleExecutableklucz. CFBundlePackageTypeKlucz został już ustawiony BNDL, więc nie dotykać.

Po tych zmianach zrobiłem Produkt> Wyczyść i nie miałem problemu z przesłaniem aplikacji do App Store.

Mam nadzieję, że to pomoże.

Sleiman
źródło
2
Dziękuję za podzielenie się swoimi doświadczeniami! Więc to jest problem autora biblioteki. Ale my, programiści, nie powinniśmy robić tych sztuczek ... Na przykład używam strąków i systemu CI. Nie mogę przejść do CI i za każdym razem po instalacji poda wykonaj tę ręczną zmianę. Ale przynajmniej sprawimy, że będzie działać. Na razie szukam generycznego rozwiązania. Jeśli to nie nadejdzie szybko, zaznaczę twoją odpowiedź jako tę, która pomoże. Jeszcze raz dziękuję!
Dumoko
Nie mogę tego zrobić. Jeśli próbuję otworzyć info.plist wewnątrz poda w Xcode, powiedział mi, że plik jest zablokowany i zmiany nie zostaną zapisane (i tak się nie dzieje). Jeśli używam zewnętrznego edytora tekstu, widzę, że zawartość pliku plist jest w jakiś sposób zakodowana, nie jest to zwykły tekst.
Mike Keskinov
@MikeKeskinov, czy ten link może być pomocny: [ apple.stackexchange.com/questions/68646/… ? Sugeruje znalezienie info.plist w Finderze i edycję uprawnień pliku, aby umożliwić edycję go w Xcode.
Sleiman
Ja też miałem podobny problem i zgłosiłem się do Apple. Twoje kroki są absolutnie poprawne, zgodnie z sugestią Apple. bugreport.apple.com/problem/viewproblem
Avinash,
Napisałem skrypt powłoki, aby usunąć to jako obejście. Dodajesz
Ying
52

Napotkałem to AviarySDKna Xcode 7 GM podczas przesyłania do App Store.

Najpierw sprawdzę, czy korzystasz z najnowszej wersji swojej biblioteki - sprzedawca mógł już to naprawić. Jeśli jednak nadal masz ten problem, jak opisuje Sleiman, musisz usunąć CFBundleExecutableklucz z pliku plist dla problematycznej biblioteki.

Cmd + Shift + O i wpisz „Info.plist”, wtedy możesz znaleźć odpowiedni plik:

wprowadź opis obrazu tutaj

Po edycji CFBundleExecutablepliku plist możesz zobaczyć opisowe nazwy (zamiast i innych kluczy. Nie mogłem edytować tego pliku w zewnętrznym edytorze, więc musiałem przełączyć się na wyświetlanie surowych kluczy / wartości, klikając prawym przyciskiem myszy listę):

wprowadź opis obrazu tutaj

Teraz możesz zobaczyć CFBundleExecutableklucz (z opisem „Plik wykonywalny”), który możesz usunąć.

W przypadku AviarySDK zrobiłem to dwukrotnie, raz dla każdego Info.plistwidocznego na powyższym obrazku, a następnie udało mi się pomyślnie przesłać.

Adam S.
źródło
Czy wiesz, jakie są tego skutki uboczne? Mam ten sam problem z pakietem Polljoy. Czy uważasz, że wpis jest błędnie umieszczony w plistie?
Stoff81
1
„Xcode automatycznie dodaje ten klucz do pliku listy właściwości informacji odpowiednich projektów”. Przykro mi, że nie mogę powiedzieć Ci efektów ubocznych, ale podejrzewam, że jest to spowodowane użyciem starszej biblioteki, która nie była dystrybuowana z obsługą Frameworks, a następnie Xcode próbuje traktować to tak samo, jak tę, która ma wsparcie dla ram.
Adam S
Niestety w przypadku niektórych bibliotek (np. AppIndexing itp.) Zawartość pliku plist wydaje się być zaszyfrowana. Umożliwia przeglądanie, ale nie zapisuje żadnych zmian. Podczas próby otwarcia pliku poza XCode jasne jest, że plik jest zaszyfrowany (bez zwykłego tekstu).
Mike Keskinov
zadziałało to przy logowaniu się do Google i pozwoliło mi przesłać do App Store
James
2
Właśnie napotkałem ten sam problem z Aviary i Cocoapods 0.39. Twoja sugerowana poprawka wydaje się działać. Wygląda na to, że nadszedł czas, aby ugryźć kulę i przejść na AdobeCreativeSDK :(
Keab42
11

Rozwiązuję ten problem w następujący sposób: Musimy usunąć wszystkie „pliki wykonywalne” z następujących pakietów:

  • GooglePlus.bundle
  • GPPCommonSharedResources.bundle
  • GPPShareboxSharedResources.bundle

Upewnij się, że „Kod typu pakietu” jest równy BNDL

Ważne: nie edytuj niczego w głównym projekcie info.plist.

Załączone ekrany, jak powinny być jego "info.plist" wymienione powyżej każdego pakietu.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Jonathan Nolasco Barrientos
źródło
9

Oto, co zadziałało dla mnie

  1. Apple-Shift-F, wyszukaj CFBundleExecutable
  2. Kliknij każdy z wyjątkiem „PODS” lub głównego celu
  3. Usuń to (usuń klucz)

wprowadź opis obrazu tutaj

William Entriken
źródło
Czy możesz mi w tym pomóc: stackoverflow.com/questions/39512387/…
NaXir
5

Jeśli kompilacja zostanie przesłana za pomocą Less than (<) Xcode 7.0 , zostanie przesłana, a także rozwiązałem to w następujący sposób dla Xcode 7 :

Wyszukane info.plistw projektach Project Navigator jak na poniższym obrazku:

wprowadź opis obrazu tutaj

Teraz otworzył te info.plistpliki jeden po drugim i usunął BundleExecutableklucz Z WYJĄTKIEM celuinfo.plist

Teraz wyczyszczono projekt, osiągnięto go i przesłano go bez problemu.

Manab Kumar Mal
źródło
4

Miałem ten sam problem w bibliotece Map Google i usunąłem CFBundleExecutableklucz wewnątrz GMSCoreResources.bundle( Info.plist), który jest czystym projektem pakietu SDK info.plist i załaduj go do Appstore.

Miłego programowania.

wprowadź opis obrazu tutaj

Umar Farooq
źródło
1

Po prostu sprawdź Ustawienia kompilacji => Włącz Bitcode i ustaw NIE

InitialC
źródło
0

Jedna dodatkowa uwaga: czasami, jeśli masz dodatkowe cele, będą dostępne właściwości celu, które mogą również zawierać klucz (w sekcji „Informacje”), więc upewnij się, że je sprawdziłeś i stamtąd też go usuń. Odkryłem to w jednym z pakietów, które próbowałem dołączyć. Usunąłem informacje z plist, ale nadal otrzymywałem błąd.

jimejim
źródło
0

Jeśli widzisz ten błąd w bibliotece zainstalowanej za pośrednictwem CocoaPods, wypróbuj plik pod update <OFFENDING POD NAME>

To rozwiązało problem.

Quentin
źródło
0

Właśnie dodałem słowo "BNDL" w odpowiednim miejscu w plist"Kodzie typu systemu operacyjnego twórcy pakietu".

To był problem

Oleksiy Dudarev
źródło
0

W moim przypadku po prostu przeciągam i upuszczam plik dołączony do SDKfolderu In info.plist, który nie jest używany. To tworzy dla mnie problem. Znajdź nieużywany info.plistplik i usuń go z kodu źródłowego.

Krunal Nagvadia
źródło