[AIR3.3] Using new Simulator Support feature for AIR Mobile iOS - 2.
Posted 2012. 6. 7. 07:52Native Extension 이 포함된 프로젝트를 iOS Simulator에서 돌릴 수 있는데요.
설명대로 따라 했는데도.. 무한 에러를 토해내더군요.
우선 Native Extension 이 포함된 프로젝트를 iOS Simulator 에서 돌리는 방법을 말해보겠습니다.
1. iOS Simulator 를 위한 ane 컴파일
기존에 ARM 기반 으로 컴파일 했었는데, iOS Simulator 는 x86 기반으로 돌아가므로
ane의 플랫폼 타겟도 iPhone-ARM 에서 iPhone-x86으로 바꿔서 ane 컴파일을 해야 합니다.
아래와 같이요.
com.cnative.extensions 1 /* iPhone-ARM 을 iPhone-x86 으로*/ library.a TestNativeExtensionsInitializer TestNativeExtensionsFinalizer
ADT에서 ane를 컴파일 하는 코드는 아래와 같습니다.
# XCode Debug iPhoneOS Home ios_device_native_home="/Users/FlowerGirl/Library/Developer/Xcode/DerivedData/NETestLibrary-dkmqtbzpqxkmwtfhqqxufkywuzrc/Build/Products/Debug-iphoneos" # Copy iOS Library # XCode 의 빌드된 .a 파일을 AIR 프로젝트의 .a 파일로 복사 cp $ios_device_native_home/library.a library.a # ANE Compile # 실행을 위해선 한 줄로 붙여 써야 함(가독성을 위해 문단 나눔) unzip -o ./NETestLibrary.swc /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -package -target ane NETestLibrary.ane NETestLibrary.xml -swc NETestLibrary.swc -platform iPhone-x86 library.swf library.a
위는 XCode 에 Native Extension 라이브러리의 .a 파일을 가져와 AIR 프로젝트에서 사용할 수 있는 ane 파일을 컴파일 하는 코드입니다.
2. ipa 컴파일 및 실행
ane를 컴파일 한 다음, Using new Simulator Support feature for AIR Mobile iOS 1편 의 내용과 같이
- ipa 컴파일 (ipa-test-interpreter-simulator/ipa-debug-interpreter-simulator)
- Simulator에 ipa 인스톨
- Simulator에서 ipa 실행
이런 순서로 진행하면 될 줄 알았습니다.
하지만, ADT Compile Error 라는 에러가 계속 발생하였습니다.
무한 삽질 끝에 알아낸 사실은,
# XCode Debug iPhoneOS Home ios_device_native_home="/Users/FlowerGirl/Library/Developer/Xcode/DerivedData/NETestLibrary-dkmqtbzpqxkmwtfhqqxufkywuzrc/Build/Products/Debug-iphoneos"
ane 를 컴파일 할때 사용하였던 .a 파일이 Debug-iphoneos 걸 가져와 사용하였더라구요.
문서에도 명확히 simulator 것을 사용하라고 적혀 있는데 말이죠. ㅜㅜ
# XCode Debug iPhoneOS Home ios_device_native_home="/Users/FlowerGirl/Library/Developer/Xcode/DerivedData/NETestLibrary-dkmqtbzpqxkmwtfhqqxufkywuzrc/Build/Products/Debug-iphoneos" ios_simulator_native_home="/Users/FlowerGirl/Library/Developer/Xcode/DerivedData/NEBabyLibrary-dkmqtbzpqxkmwtfhqqxufkywuzrc/Build/Products/Debug-iphonesimulator" # Copy iOS Library # XCode 의 빌드된 .a 파일을 AIR 프로젝트의 .a 파일로 복사 cp $ios_simulator_native_home/library.a library.a # ANE Compile # 실행을 위해선 한 줄로 붙여 써야 함(가독성을 위해 문단 나눔) unzip -o ./NETestLibrary.swc /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -package -target ane NETestLibrary.ane NETestLibrary.xml -swc NETestLibrary.swc -platform iPhone-x86 library.swf library.a
위와 같이 Debug-iphonesimulator 를 타겟으로 빌드된 .a 파일을 가져와 ane 컴파일을 하니..
문제 없이 잘 되었습니다.
Native Extension 포함 AIR 프로젝트를 iOS Simulator 에서 돌리기 위해 주의해야 할 점을 요약하자면,
1. extension.xml 의 플랫폼 타겟 iPhone-ARM 을 iPhone-x86 로 바꾼다.
2. XCode 에서 simulator 타겟으로 .a 파일을 빌드 한다.
3. /Debug-iphoneos 가 아닌 /Debug-iphonesimulator 폴더에서 .a 파일을 가져와 ane 파일을 빌드 한다.
이것만 잘 지키면 문제없이 동작시킬 수 있을 것입니다.
※ Reference
- Using the iOS Simulator to test and debug AIR applications : http://www.adobe.com/devnet/air/articles/ios-simulator.html
- http://blogs.adobe.com/airodynamics/2012/05/06/using-new-simulator-support-feature-for-ios/
'개발 > AIR Mobile' 카테고리의 다른 글
|
- Filed under : 개발/AIR Mobile