Podczas tworzenia aplikacji na iPhone'a pojawia się ten błąd:
ld: ostrzeżenie: w /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit, brak wymaganej architektury i386 w pliku
To samo dotyczy wszystkich frameworków w mojej aplikacji. To bardzo dziwne, ponieważ nie działo się to wcześniej.
iphone
cocoa-touch
Gabe Shahbazian
źródło
źródło
Odpowiedzi:
Dzieje się tak, gdy dodajesz platformę do projektu i nieumyślnie kopiujesz strukturę do katalogu projektu.
Poprawka polega na sprawdzeniu katalogu projektu (w którym przechowujesz projekt na dysku) pod kątem wszelkich plików iPhone SDK * .Framework i ich usunięcie.
Projekt będzie potem dobrze zbudowany.
źródło
Miałem ten sam problem, a rozwiązanie okazało się łatwe. Utwórz kopię zapasową, a następnie otwórz plik project.pbxproj (znajdujący się w pakiecie plików projektu) w TextMate lub TextEdit i wyszukaj sekcję zatytułowaną „/ * Rozpocznij sekcję XCBuildConfiguration * /”. Poszukaj klucza o nazwie FRAMEWORK_SEARCH_PATHS i usuń go oraz jego zawartość (raz na konfigurację kompilacji, więc usunąłem go w dwóch miejscach). Oto przykład tego, co usunąłem:
Mój projekt jest teraz kompilowany zarówno dla urządzenia iPhone, jak i dla iPhoneSimulator.
źródło
Zdarzyło się tutaj, że Xcode w tajemniczy sposób dodał wpis „Framework Search Paths”, który wskazuje na konkretny zestaw SDK urządzenia iPhone. Na przykład mój został niedawno ustawiony na:
Prowadzi to kompilator do znalezienia struktur o nieprawidłowej architekturze. Usunięcie jakichkolwiek wartości pod kluczem „Framework Search Paths” w ustawieniach kompilacji celu rozwiąże problem.
źródło
Chciałem tylko wspomnieć, że w XCode, jeśli przejdziesz do „Edytuj ustawienia projektu” i znajdziesz „Ścieżki wyszukiwania”, istnieje pole na „Ścieżki wyszukiwania struktury”. Zaktualizowanie tego powinno rozwiązać problem bez konieczności włamywania się do pliku projektu!
Twoje zdrowie!
Jesse
źródło
Sprawdź, czy nie skopiowałeś frameworka do projektu podczas dodawania. Jeśli go skopiowałeś, nie może znaleźć oryginalnych ścieżek. Aby rozwiązać ten problem. Usuń strukturę AVFoundation z folderu frameworków w projekcie, a następnie dodaj ją ponownie, ale tym razem upewnij się, że nie zaznaczono opcji sprawdzania kopii.
To naprawiło to dla mnie!
źródło
źródło
Jeśli Twoja aplikacja ma działać na urządzeniu, upewnij się, że nie próbujesz uruchomić w niej na symulatorze. Może wydawać się oczywiste, ale i tak sprawdź.
źródło
Chociaż możliwe jest, że coś zostało usunięte, z mojego doświadczenia wynika, że coś jest schrzanione w pliku projektu. Nie wiem jeszcze, czym jest to „coś”. Miałem podobne problemy, gdy instalacja SDK była w porządku. Jest kilka opcji.
Najpierw dodaj wszystkie swoje pliki do nowego projektu. Wydaje się, że to zwykle działa. Ale to trochę bolesne.
Po drugie, możesz kliknąć projekt prawym przyciskiem myszy w XCode / Get Info / Build / Library Search Paths. Dodaj nowe ścieżki podobne do /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib. Dodaj odpowiednie wersje tego ciągu dla każdej wersji (2.2.1 itd.) I platformy (symulator lub iPhoneOS). Wykonaj podobną akcję dla ścieżek wyszukiwania struktury, jeśli Twoim problemem są frameworki.
Po trzecie, co jest bardziej pracochłonne, ale bardziej niezawodne, to otwarcie pliku project.pbxproj z poziomu MyProject.xcodeproj (do tego nadaje się Textmate). Poszukaj „/ * Begin XCBuildConfiguration section * /”, a następnie „LIBRARY_SEARCH_PATHS” i „FRAMEWORK_SEARCH_PATHS”. Dodaj lub zmodyfikuj odpowiednio ścieżki i zapisz plik.
W każdym razie ból w tyłku i na pewno chciałbym wskazać przyczynę, ponieważ zdarzyło mi się to kilka razy. Projekt buduje się dobrze, a potem po prostu się uruchamia i nie chce tego zrobić z pozornie niewielkiego powodu.
źródło
„Edytuj ustawienia projektu” i znajdź „Ścieżki wyszukiwania” Jest pole na „Ścieżki wyszukiwania struktury”. Usuń wszystko!!
źródło
Po prostu mi się to przytrafiło. Dzięki świetnemu partnerowi znaleźliśmy odpowiedź. Twój Xcode może wskazywać na symulator ... zamiast tego zmień go na urządzenie z systemem IOS ...
źródło
Uruchom polecenie pliku na platformie z terminala:
Powinieneś otrzymać wiadomość z informacją, z którymi architekturami jest kompatybilny plik binarny UIKit. Jeśli nie widzisz na liście "i386", to w jakiś sposób udało ci się usunąć wersję UIKit i386, co oznacza, że nie możesz budować dla symulatora. Aby to naprawić, będziesz musiał ponownie zainstalować zestaw SDK.
Jeśli pojawi się inny błąd, miejmy nadzieję, że pomoże ci to ustalić, na czym polega rzeczywisty problem.
źródło
Chcę tylko powiedzieć, że w moim przypadku miałem ten sam problem, zdałem sobie sprawę, że mam starszy folder Xcode o nazwie Xcode3.1.3 Po prostu zmieniłem jego nazwę, ponieważ była to starsza wersja i to zrobiło dla mnie magię.
źródło
Sprawdź ścieżki wyszukiwania bibliotek w ustawieniach docelowych. Czasami wkraczają tam głupie biblioteki, co spowoduje podobny błąd.
Możesz usunąć wszystkie wpisy w tej sekcji.
źródło
Właśnie doświadczyłem czegoś nieco innego, ponieważ pracuję na własnej bibliotece (WM_GSRecognizerLib), ale błąd jest ten sam.
Co by się stało: z powodu pewnych aktualizacji ścieżka kierująca bibliotekę do dołączenia (.a) pochodziła z folderu „Debug-iphoneos” (gdzie jest generowana). Kompilacja dla Generic iOS Devices działała dobrze, ale nie dla symulatora, narzekając na brakującą architekturę i386.
To, co zrobiłem w tym przypadku, to również dołączenie plików binarnych z folderu „Debug-iphonesimulator”.
Może to pomóc w tym temacie, ponieważ wyjaśnienie jest tutaj: urządzenia wymagają plików binarnych dla arm64 / armv7 / armv7s, podczas gdy symulator potrzebuje i386.
źródło
Moim rozwiązaniem było ustawienie debugowania docelowego symulatora TAK, wystarczy spojrzeć na status git, aby zobaczyć nową linię dodaną jako architekturę tylko na .project. jeśli tego nie ustawisz, kompilacja będzie działać na wszystkich architekturach i pokaże brakującą architekturę, taką jak i386 lub inna. UWAGA, ŻE oczywiście głównym problemem jest użycie jakiegoś frameworka, który implementuje jakąś specyficzną architekturę.
źródło
Ja też dostałem ten sam błąd, używam xcode w wersji 4.0.2, więc wybrałem plik projektu xcode iz ich wybrałem opcję Target, mogłem zobaczyć aplikację mojego projektu, więc kliknąłem ją i przeszedłem do kompilacji opcja ustawień.
Ich w opcji wyszukiwania wpisałem ścieżkę wyszukiwania Framework i usunąłem wszystkie ustawienia, a następnie kliknąłem przycisk budowania i to działało dobrze,
Dziękuję i pozdrawiam
źródło