W iOS5 Apple usuwa architekturę armv6 z ARCHS_STANDARD_32_BIT .
Aby zachować wsparcie dla iPhone3G , nadal chcę kompilować w armv6 nawet w iOS5.
Czy ktoś znalazł na to rozwiązanie?
Właśnie dzisiaj stworzyłem coś, określając cel wdrożenia iOS 4.0. Ponieważ w Architectures określono tylko armv7, Xcode ostrzegł mnie, że aby obsługiwać wszystko poniżej iOS4.2, muszę dołączyć armv6 do architektur. Po prostu edytuj to pole, kliknij przycisk „+”, gdy pojawi się okno dialogowe i wprowadź literał „armv6”.
W moim przypadku chcemy, aby nasza aplikacja działała pod iOS4 i iOS5. Musieliśmy wprowadzić pewne modyfikacje, aby działał poprawnie pod iOS5, ale wszystkie te zmiany zostały wprowadzone za pomocą zmian w kodzie przyjaznych dla iOS4.
Dodaliśmy również pewne funkcje specyficzne dla iOS5 w sposób, który pozwala aplikacji działać bez awarii pod iOS4. W szczególności przetestowaliśmy możliwości systemu iOS5 przed próbą ich użycia i połączyliśmy biblioteki tylko dla iOS5 jako opcjonalne.
Tak więc obsługa iPhone3G w świecie iOS5 może równie łatwo oznaczać „chcemy, aby nasza aplikacja działała na iOS4 i nowszych wersjach (bez względu na jakąkolwiek funkcję iOS5)”, a nie „chcemy się upewnić, że nasza aplikacja działa na starszym urządzeniu z systemem iOS5 ”. Tutaj jest różnica; Pomyśl o tym. :-)
W każdym razie dodanie obsługi armv6 z powrotem jest bardzo łatwe. I myślę, że chodzi o to: w pewnym momencie, gdy nie ma już urządzeń armv6, o które można się martwić (z jakiegokolwiek powodu), nie będziesz musiał ich budować. Apple uważa, że każdy powinien jak najszybciej zaktualizować sprzęt do najnowszego. Tak więc w tym świecie nie ma potrzeby, aby narzędzia domyślnie ustawiały się na cokolwiek poza najnowszymi i najlepszymi. :-) Na szczęście (lub nie) my, programiści, żyjemy w prawdziwym świecie i zdajemy sobie sprawę, że przez jakiś czas trzeba wspierać starsze rzeczy. Wydaje mi się, że zespół programistów Xcode też o tym wie, dlatego po prostu możesz dodać obsługę armv6 z powrotem.
Prosta odpowiedź jest taka, że musisz zmienić bieżące ustawienia z „Standard (armv7) - $ (ARCHS_STANDARD_32_BIT)” na „armv6” i „armv7”. Zobacz obrazek poniżej. Musisz usunąć linię z poprzednimi ustawieniami, aby działała.
źródło
upewnij się również, że ustawiłeś to w Project AND Targets ... kosztowało mnie to godzinę, aby to rozgryźć. ustawił to dla jednego, ale nie dla drugiego. mam nadzieję że to pomoże. GLTA
źródło
Myślę, że jest powód, dla którego Apple usunął armv6 ze standardowego ustawienia.
Skompilowałem armv7 / armv6 z iOS5 SDK, jednak kompilator armv6 wygenerował zły kod w trybie wydania. Po godzinach szukania obejścia (wypróbowanie llvm lub gcc z różnymi poziomami optymalizacji) poddaję się.
Więc wracam do iOS SDK 4.x, o ile obsługuję starsze urządzenia armv6.
Przykład kodu:
Może mam jakieś uszkodzenie pamięci, jednak na kompilatorze armv7 i na iOSSDK <5.0 zachowuje się zgodnie z oczekiwaniami.
Z poważaniem
źródło
Nie jestem pewien, czy jest to jeszcze rozwiązanie, ale odkryłem, że zastąpienie zdefiniowanego ciągu znaków w „architekturach”, czyli $ (ARCHS_STANDARD_32_BIT), na „armv6 armv7”, pozwoliło mi skompilować się z iOS5 jako bazą i iOS4 jako wdrożeniem docelowy i pozytywny.
Nie używam żadnych bibliotek ani wywołań wyłącznie dla IOS5, ale zamierzam to zrobić w mojej następnej wersji.
źródło
Nie musiałem zamieniać $ (ARCHS_STANDARD_32_BIT) tylko na armv7, aby aplikacja mogła się skompilować i przesłać do App Store.
Jak zasugerował MarkGranoff, po prostu dodałem armv6 jako zwykły tekst, naciskając plus i po prostu wpisując go w drugim wierszu.
źródło