에서 iOS5를 애플 방울 의 ARMv6의 로부터 아키텍처 ARCHS_STANDARD_32_BIT을 .
iPhone3G에 대한 지원을 유지하기 위해 iOS5에서도 armv6 에서 컴파일하고 싶습니다 .
누구든지 이것에 대한 해결책을 찾았습니까?
답변:
나는 오늘 iOS 4.0의 배포 대상을 지정하는 무언가를 구축했습니다. 아키텍처에 armv7 만 지정되어있는 상태에서 Xcode는 iOS4.2 이하의 모든 항목을 지원하려면 아키텍처에 armv6을 포함해야한다고 경고했습니다. 해당 필드를 편집하고 대화 상자가 나타나면 "+"버튼을 클릭하고 리터럴 "armv6"을 입력하면됩니다.
제 경우에는 앱이 iOS4 및 iOS5에서 작동하기를 원합니다. iOS5에서 제대로 작동하도록 약간의 수정이 필요했지만 이러한 모든 변경은 iOS4 친화적 인 코드 변경으로 이루어졌습니다.
또한 앱이 iOS4에서 충돌하지 않고 실행될 수 있도록 몇 가지 iOS5 관련 기능을 추가했습니다. 특히 iOS5 기능을 사용하기 전에 테스트했으며 iOS5 전용 라이브러리를 옵션으로 연결했습니다.
따라서 iOS5 세계에서 iPhone3G를 지원한다는 것은 "앱이 iOS5를 실행하는 구형 기기에서 실행되도록하고 싶습니다. ". 여기에는 차이가 있습니다. 그것에 대해 생각하십시오. :-)
어쨌든 armv6 지원을 다시 추가하는 것은 매우 쉽습니다. 요점은 이것이라고 생각합니다. 어떤 시점에서 (어떤 이유로 든) 걱정할 armv6 장치가 더 이상 없을 때이를 위해 구축 할 필요가 없습니다. Apple의 견해는 모든 사람이 가능한 한 빨리 최신 하드웨어로 업그레이드해야한다는 것입니다. 따라서 그 세계에서는 도구가 최신 및 가장 위대한 도구로 기본 설정 될 필요가 없습니다. :-) 다행스럽게도 (아니면), 우리 개발자들은 현실 세계에 살고 있으며 한동안 오래된 것들을 지원해야한다는 것을 알고 있습니다. 그리고 Xcode 개발 팀도 이것을 알고 있다고 생각합니다. 그래서 armv6 지원을 아주 간단하게 다시 추가 할 수 있습니다.
또한 이것을 Project AND Targets에서 설정했는지 확인하십시오 ...이를 알아내는 데 한 시간이 걸립니다. 하나는 설정했지만 다른 하나는 설정하지 않았습니다. 도움이 되었기를 바랍니다. GLTA
Apple이 표준 설정에서 armv6를 삭제 한 이유가 있다고 생각합니다.
iOS5 SDK로 armv7 / armv6을 컴파일했지만 armv6 컴파일러가 릴리스 모드에서 잘못된 코드를 생성했습니다. 해결 방법을 찾은 후 (다른 최적화 수준으로 llvm 또는 gcc 시도) 포기합니다.
따라서 이전 armv6 장치를 지원하는 한 iOS SDK 4.x로 돌아갑니다.
코드 예 :
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
메모리 손상이있을 수 있지만 armv7 컴파일러와 iOSSDK <5.0에서는 예상대로 작동합니다.
친애하는