Xcode 4.2 및 iOS 5 SDK를 사용할 때 이전 iOS 버전을 타겟팅 할 수 있습니까?


103

최근에 iOS 5 SDK 패키지가 포함 된 Xcode 4.2를 다운로드했고, 디버깅을 위해 iOS 4.2.1에서 iPhone 3G를 사용할 수 없다는 것을 즉시 알았습니다. iOS 5가 설치된 iPhone 4에서만 디버깅하고 테스트 할 수 있습니다.

5.0 미만의 iOS를 실행하는 모든 장치의 경우 Xcode는 "iPhone3GS에서 실행 완료"라고 말하고 실행하지 않습니다. 3.0 이상의 앱에서 기능을 사용하지 않고 모든 버전 3.0 이상을 대상으로 할 수 있기 때문에 배포 대상을 3.0으로 설정했습니다. 모든 프로비저닝 프로파일이 설치되어 있고 최신 상태입니다.

xcode를 종료하고 다시 시작했으며 빌드를 여러 번 정리했습니다. 아키텍처 빌드 설정에서 armv6을 추가하려고 시도했지만 iOS 4.2.1이 설치된 이전 휴대폰에서 내 앱을 빌드하고 실행할 수있는 방법은 없습니다.

제 질문은 새로운 SDK를 사용하여 iOS 버전이 5 미만인 경우에도 여전히 작동하도록 할 수 있습니까? 이전 휴대폰에 앱을 설치할 수없는 경우 내 앱이 낮은 iOS 버전에서 계속 실행되는지 어떻게 확인할 수 있습니까?

편집 : 좋습니다. iOS SDK 5가 기본적으로 armv6에 대한 지원을 중단 한 것 같습니다. 해야 할 일은 타겟과 프로젝트 모두에 대한 빌드 설정 아래의 아키텍처 필드에 armv6을 추가하는 것입니다. 그러면 앱이 iPhone 3G 기기에서 실행될 수 있습니다. 답변은 여기에서 찾을 수 있습니다. iOS 5로 armv6 및 armv7 아키텍처를 구축하는 방법


편집은 아키텍처와 관련이 있으며 이는 iOS버전과 는 별개의 문제 입니다. 또한 찾은 솔루션을 수락하고이 질문을 답변으로 표시 할 수 있도록 편집을 답변으로 추가하십시오.

답변:


153

iPhone 3G 4.2.1에서 실행되는 새로 생성 된 Xcode 4.2 프로젝트를 얻으려고 시도하는 것과 동일한 문제가 발생했습니다. 여기에 내가 그것을 실행할 수 있었던 방법이 있습니다.

1) Target의 "Build Settings"==> "Architecture"를 "Standard (armv7)"에서 "other"로 변경하십시오. armv6 및 armv7을 추가합니다.

2) Target의 "Build Settings"==> "Valid Architecture"를 armv6 및 armv7로 변경합니다.

3) Target의 "Build Settings"==> "iOS Deployment Target"을 iOS 4.2로 변경합니다.

여기에 이미지 설명 입력

4) * -Info.plist 프로젝트를 열고 "필수 장치 기능"설정을 제거합니다 (armv7이 필요함을 참고하십시오). 여기에 이미지 설명 입력

btw 주최자를 통해 수동으로 앱을 추가하려고 할 때 이것을 알아 냈고 다음과 같이보고했습니다.

응용 프로그램을 설치할 수 없습니다

/Users/.../TestsDebug.app의 애플리케이션에 대한 Info.plist는 Dev iPhone 3G에서 충족되지 않는 장치 기능 요구 사항을 지정합니다.

그 후에는 모두 작동합니다. PITA에 대해 이야기하십시오.


대단히 감사합니다! 맥주 빚 졌어! 이것은 참으로 내 문제를 해결, 피타 참 : D
그렉 엘리스

4
감사합니다! 다른 곳에서 아키텍처 설정에 대해 읽었지만 "필수 장치 기능"설정에 대해 언급 한 사람은 아무도없는 것 같습니다.
bunnyhero

추가해야합니다 : 새 프로젝트와 이전 프로젝트 모두 업그레이드에 영향을줍니다! 인터넷 검색을하기 전에 내 오래된 물건을 테스트 했는데도 작동하지 않았습니다! 나도 맥주 빚 졌어! :)
Eduardo Costa

1
나는 같은 문제가 있지만 프로젝트의 설정이 아키텍처에 대한 '표준 armv7'이더라도 Valid Architectures는 이미 'armv6 armv7'을 표시했습니다. 또한 Info.plist에 '필수 장치 기능'속성이 없습니다. 그럼에도 불구하고 트릭을 시도 할 것입니다.
rchampourlier 2011

"필요한 장치 기능은"너무 저를 얻었다
codecaffeine

12

Xcode> 환경 설정> 다운로드로 이동하여 이전 iOS 버전에 대한 디버깅 지원을 설치하십시오.


환경 설정으로 이동하여 이전 OS에 대한 디버깅 지원을 다운로드 및 설치하고 xcode를 종료하고 다시 연 xcode가 정리 및 빌드를 수행했지만 앱이 여전히 이전 장치에 설치되지 않습니다. 나는 당신의 응답을 보았을 때 나는 내 문제 :( 해결할 것이라고 확실히 생각으로 나는 지금 총 딱하다
그렉 엘리스

1
나도 맥주 빚 졌어! 이것은 Xcode 4 업그레이드 후 또 다른 문제를 해결했습니다! 이제 iOS 4.2 장치 (iPod Touch 2 세대)를 디버깅 할 수 있습니다!
Eduardo Costa

3

mmorris는 문제 해결에 가까워졌습니다. Info.plist에서 필수 장치 기능을 armv7이 아닌 armv6으로 설정해야했습니다. 이것이 다른 사람들에게도 도움이되기를 바랍니다.


1

전화를 연결 한 다음 주최자로 이동해야합니다. Xcode는 자동으로 이전 버전을 요청해야합니다.

자세한 내용은 개발자 페이지를 참조하세요. 4.2 베타에 대한 메모에 설명되어 있습니다.


이 작업을 수행하고 "개발 용으로이 장치 사용"을 클릭하면 원래대로 작동하는 것처럼 보였지만 여전히 xcode에서 이전 장치에서 실행할 앱을 가져올 수 없습니다.
Greg Ellis

1

이전 iPod Touch에서 내 앱을 실행하려고 할 때 비슷한 문제가 발생했습니다. Xcode 4.3.3으로 업그레이드했는데 앱이 더 이상 이전 하드웨어의 디버거에서 실행되지 않습니다.

여기에서 "아키텍처"및 "필수 장치 기능"에 대한 다른 의견은 올바르게 지정하기위한 중요한 세부 사항이라고 생각합니다. 불행히도 그들은 내 문제를 해결하기에 충분하지 않았습니다.

제 경우에는 빌드 계획이 범인이라는 것을 알았습니다. Xcode 4.3.3은 프로젝트를 업그레이드 할 때 GDB 디버거에서 LLDB로 전환하라는 메시지를 표시했습니다. 내 계획의 실행 작업을 다시 GDB로 변경 했을 때 Xcode의 이전 하드웨어에서 앱을 다시 실행할 수있었습니다.


1

armv6을 아키텍처에 추가해야했지만 여전히 작동하지 않는다는 것을 알았습니다. 이제 필수 기능에서 armv7을 제거했습니다. 작동했습니다!


0

이것은 나를 위해 일했으며 이전에 Xcode의 이전 버전을 사용했다면 작동합니다. 그렇지 않은 경우 다른 사람이 제공 한 조언에 따라 이전 버전의 SDK에서 SDK를 가져와야합니다.

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

이 명령은 다른 명령과 약간 다르지만 해당 명령은 SDK 폴더 자체에 파일을 삭제했습니다. 적절한 이름으로 하위 디렉토리를 만들려고합니다.


0

제 경우에는 필수 장치 기능에 중복 라인이있었습니다. 여기에 이미지 설명 입력

방금 제거했습니다 ...

여기에 이미지 설명 입력

다른 사람에게 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.