Wczoraj (10.03.14), kiedy wydano iOS 7.1, zaktualizowałem również do Xcode 5.1 i stwierdziłem, że mój projekt PhoneGap / Cordova nie będzie już kompilować się do mojego iPhone'a 5s. Zaktualizowałem również Cordovę do najnowszej wersji: v 3.4.0-0.1.3.
Przeczytałem wiele różnych rozwiązań na SO, które dotyczą tak zmieniających się aktywnych architektur i budujących tylko aktywne architektury, i żadne z nich nie działa. Oto co próbowałem i błędy, które otrzymuję. Początkowo otrzymałem błąd:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
Więc spróbowałem następujących rzeczy. W moim projekcie wybrałem podprojekt CordovaLib i zarówno w projekcie, jak i celu, przeszedłem do Ustawień kompilacji w obszarze Architektury i upewniłem się, że arm64
nie został uwzględniony w żadnej z architektur debugowania lub wydania. W tej chwili opcja Build Active Architecture Only jest ustawiona na „Yes”. Spowodowało to następujący błąd:
file was built for archive which is not the architecture being linked (armv7):
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7
Po ustawieniu opcji Build Active Architecture Only na „Nie” błąd ponownie wygląda następująco:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
Nie wiem, czego jeszcze spróbować. Ustawienia architektury projektu obejmują tylko klucz „Base SDK”, który jest ustawiony na iOS 7.1. Cel projektu nie ma ustawień architektury. W każdym razie jestem prawie pewien, że problem leży w osadzonym podprojekcie CordovaLib. Co mogę zrobić, aby pomyślnie skompilować to na moim urządzeniu?
Aktualizacja: ten sam problem w Jira Apache: https://issues.apache.org/jira/browse/CB-6223
Odpowiedzi:
@Shazron opublikował poprawkę na Apache JIRA - zauważa, że poprawka zostanie wydana w ramach Cordova 3.5:
Oto link do pełnego opisu tego problemu przez Shazron: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/
Jest już wydany, a krótka wersja tego, co należy zrobić, to:
Został wydany Cordova CLI 3.4.1-0.1.0, który obejmuje Cordova iOS 3.4.1, który zawiera wszystkie poprawki wymienione w tym poście na blogu. Zaktualizuj swój CLI Cordova, a jeśli masz już projekt, zrób „cordova platform update ios”.
źródło
Inne podejście, które działa:
źródło
Downgrade Xcode 5.1 do 5.0.2 działał dla mnie, nie mogłem się doczekać oficjalnej wersji Cordova 3.5 z poprawką.
Możesz pobrać kopię poprzedniej wersji tutaj: https://developer.apple.com/downloads/index.action
źródło
Właśnie wydali nową wersję 3.4.1, która rozwiązuje ten problem.
Dlatego aktualizuję pojedynczy plik, aby wskazywał na TAG 3.4.1:
/usr/local/lib/node_modules/cordova/platforms.js
wiersz 24 z:
version: '3.4.0'
do:
version: '3.4.1'
Następnie usuwasz folder iOS w swoim projekcie i uruchamiasz:
cordova platform add ios
Spowoduje to pobranie nowego szablonu opartego na 3.4.1 ze wszystkimi poprawkami.
źródło
Postępuj zgodnie z instrukcjami na tym filmie: https://www.youtube.com/watch?v=EIkJAKcz8DE
Po prostu dodaj arm64 do swoich projektów, poprawne architektury i usuń całą architekturę warunkową projektu Cordova.
źródło
Udało mi się zmusić moją aplikację do kompilacji w XCode 5.1, najpierw budując projekt CordovaLib oddzielnie z poziomu XCode, a następnie budując mój projekt.
źródło
Musisz tylko dodać architekturę arm64 do każdego oświadczenia i ustawienia budynku, to znaczy do bieżącego projektu i projektu cordova.
W Twoim projekcie:
na Cordovie:
I CO NAJWAŻNIEJSZE
-Poprawne architektury w ustawieniach kompilacji Cordova
Ta konfiguracja generuje wiele ostrzeżeń, ale wystarczy zmienić „% d” na „% ld” we wszystkich wierszach, o których mówi ostrzeżenie.
źródło
Chwyć ikonę xcode i przeciągnij ją do kosza!
Przejdź tutaj https://developer.apple.com/downloads/index.action?name=Xcode i pobierz 5.0.2 i zainstaluj.
Po instalacji uruchom xcode, a następnie wypróbuj emulator z terminala.
Pracowało dla mnie, chociaż denerwujące!
źródło