따뜻한 대한민국 겨울만들기

AIR3.3 에서 눈에 띄는 특징중 하나가 바로 iOS Native Simulator 를 지원하는 기능이 추가된 것입니다.


기존에 Flash Builder 4.6 에서 지원하는 Simulator 를 사용하는 것에 비해 어떤 이점이 있는지는 아래에 설명해 놓았습니다.


1. Flash Builder 4.6 에서 Simulator 를 사용하여 테스트 하려면, Apple 개발자 등록이 되어 있어야 하고, 승인된 p12 인증서와 Provisioning Profile 이 있어야 가능했습니다.

하지만, Native Simulator 지원으로 이제 Apple 개발자 등록 없이, 개발자 승인되지 않은 p12 파일만 있으면 AIR 애플리케이션을 테스트 하는게 가능해진 것입니다.

쉽게말해, Apple 개발자 등록 없이 AIR 앱을 Simulator 에서 테스트 할 수 있게 되었다는 것입니다. (물론 기기 테스트는 Apple 개발자에 등록되어 있어야 가능합니다.)

(참고 : 개발자 승인되지 않은 p12 인증서 만들기 - http://dimdim.tistory.com/51)


2. Flash Builder 4.6 에서 Simulator에서는 Native Extension 을 포함하여 테스트 할 수 없습니다. 따라서  Native Extension 을 테스트 하기 위해선 기기 테스트밖엔 방법이 없는 것이죠.

하지만, Native Simulator 를 사용하면 Native Extension 을 포함하여 디버깅을 할 수 있습니다. 

(Native Extension 의 디버그 로그는 찍을 수 없습니다. 디버깅을 위해선 http://2rang.tistory.com/72 을 참고)


3. 아무래도 출처를 알 수 없는 Flash Builder 4.6 의 Simulator 를 사용하는 것 보단 Native Simulator 를 사용하는 것이 좀 더 믿음이 가지 않을까요.

(하지만 실제 앱 개발시에 Flash Builder 4.6 의 Simulator를 사용해도 별다른 큰 문제점은 느끼지 못했습니다.) 


이렇게 Native Simulator 를 사용하면 얻는 이점에 대해 알아 보았는데요.


그럼 실제 사용방법에 대해서도 정리 해 보겠습니다.


사실 AIR 3.3 Release Note 문서(Beta3) 에 가이드를 따라서 해 보시면, 무리 없이 할 수 있을 것입니다.

(하지만, Native Extension 을 포함하여 Simulator 를 동작하는 부분에서는 조금 애를 먹었습니다. : 이 포스팅에선 다루지 않습니다.)


0. 진행 순서


iOS Simulator 를 위한 ipa 컴파일 → Simulator 에 ipa Install → Simulator 에 Install 한 앱 Launch



1. iOS Simulator 를 위한 ipa 컴파일


iOS Simulator 를 사용하기 위해선 ipa 파일을 새로운 설정으로 컴파일 해야 합니다.


iOS Simulator 는 x86 architecture 를 기반으로 하고 있습니다. 따라서, ADT 에서 새로운 Compile Target 이 2가지가 추가 되었습니다.

ipa-test-interpreter-simulator : x86 architecture 로 Fast Mode 컴파일

ipa-debug-interpreter-simulator : 디버그를 위한 x86 architecture 로 Fast Mode 컴파일


- Interpreter Target

adt -package -target ipa-test-interpreter-simulator -storetype pkcs12 -keystore Certificates.p12 -storepass password Sample_ipa_name sample_ipa-app.xml sample_ipa.swf


- Debug Target

adt -package -target ipa-debug-interpreter-simulator -connect -storetype pkcs12 -keystore Certificates.p12 -storepass password Sample_ipa_name sample_ipa-app.xml sample_ipa.swf



2. Simulator 에 ipa Install


adt -installApp -platform ios -platformsdk (path to sdk like /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk) -device ios-simulator -package Sample_ipa_name.ipa



3. Simulator 에 Install 한 앱 Launch


adt -launchApp -platform ios -platformsdk (path to sdk like /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk) -device ios-simulator -appid Sample_ipa_name



이런 순서대로 하시면, 순조롭게 Native Simulator 에서 AIR Mobile App 을 테스트 하실 수 있을 것입니다.


참고로,

제가 사용했던 코드도 올려봅니다.


# IPA Compile for Native Simulator
/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -package -target ipa-debug-interpreter-simulator -connect -storetype pkcs12 -keystore /Users/FlowerGirl/FloweriPhone/my_certification.p12 -storepass xxxx BabyTest BabyTest-app.xml BabyTest.swf assets Default.png
echo "=== Compile .ipa ==="

# Uninstall App
/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -uninstallApp -platform ios -platformsdk /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk -device ios-simulator -appid net.daum.babytest.debug
echo "=== Uninstall App "

# Install App
/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -installApp -platform ios -platformsdk /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk -device ios-simulator -package BabyTest.ipa
echo "=== Install App "

# Launch App
/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0_AIR3.3_Beta_p3/bin/adt -launchApp -platform ios -platformsdk /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk -device ios-simulator -appid net.daum.babytest.debug
echo "=== Launch App "

하지만..

여기까진.. Native Extension 이 포함되지 않은 AIR 프로젝트라..
순조롭게 따라할 수 있었는데요..

Native Extension 이 포함된 AIR App 을 Native Simulator 에서 테스트하는 부분에서 상당한 삽질을 하였습니다. 의외로 간단한 데에서 문제가 해결 되었는데요.

이 부분은 다음 포스팅에서 다루도록 하겠습니다.