iPhone App is developed by Flex SDK

지난 9월 10일 한국에 아이폰4가 출시 하던 날 애플은 앱스토어 약관 중 서드파티 컴파일에 의한 앱에 관한 조항을 완하 하였습니다. (Flash 앱스토어에 올릴 수 있게 되는가?) 이에 지금까지 막혀왔던 플래시 어플의 앱스토어 입성이 가능하게 되었습니다.  사실 제 개인적으로는 어느정도 예상하던 일이였습니다. Adobe 도 바보가 아닌 이상 가망 없는 플랫폼을 위해서 지속적으로 지원을 해줄리가 없는데 끊임없이 iPhone 을 패키지를 업데이트 해왔으니까요. 그리고 Unity3D와 같은 3D 게임 엔진들의 움직임에서도 어느정도 짐작 할 수 있었습니다. 원래의 약관으로는 이쪽 앱도 앱스토어에 올릴 수 없게 되니까요. 애플이 게임을 위해서 약관을 완하해 줬는지 아니면 Adobe에 한발 물러 섰는지는 모르겠지만 중요한 건 이제 플래시를 앱스토어에 올릴 수 있게 되었다는 거겠지요.

이런 시점에서 Adobe Labs 에 Packager for iPhone 의 업데이트 되었습니다. 지금까지는 Flash CS5 를 이용해서만 앱을 만들 수 있었지만 이제는 Flash Builder 나 Flex SDK 를 사용하는 다른 툴에서 아이폰용 앱을 만들 수 있게 되었습니다. 그래서 Flash Bulider 에서 앱을 만들어보려고 Packager for iPhone 를 Flash Builder 의 SDK 에 넣었지만 당연하게도 탬플릿이 없어서 만들어 볼 수가 없었습니다. 제 기억에 Packager for Android 의 경우에는 xmp로 배포해서 Flash Builder 에 바로 설치 했던 것 같은데 말이죠. 그래서 일단 다른 템플릿을 찾아봤는데 다행히도 FlashDevelope용 템플릿을 벌써 누군가 만들어 놨더군요. 아마 다음버전에는 템플릿이 포함될 것 같습니다. 오늘은 이 FlashDevelop를 이용해서 앱을 만들어 보기로 하겠습니다.

그전에 잠시~

플래시가 스마트폰에서 돌아가는 걸 잠깐 살펴 보겠습니다. 플래시가 아이폰에서 돌아갈 수 있게 되서 1희1비 하시는 분들도 있을 것 같습니다. 하지만 실상은 그렇게 좋기만 한 건 아닙니다. 물론 앱스토어에 플래시를 올릴 수 있게 되었으니 플래시개발자로서 더 많은 기회를 얻은 것은 사실입니다. 하지만 그 기회가 그렇게 생각처럼 크지 않다는게 문제 입니다. 위의 표는 플래시가 스마트폰에서 구동되는 상태를 아주 대강 보여주고 있습니다.  각OS 가 있고 그 위에 VM 인 AIR 가 있습니다. 그 위에서 우리의 플래시 파일이 돌아갑니다.

1차문제는 각 폰의 스펙이 천차만별이라는 겁니다. 뭐 이건 노가다로 어느정도 해결 할 수 있습니다.  하지만 2차문제는 조금 본질적입니다. 우리가 플래시에서 구현 할 수 있는 액션은 OS 와 SWF 중간에 있는 AIR에 의존적입니다. 근데 이  AIR 가 폰의 모든 기능을 소화해 주지 않는 다는 겁니다. 예를 들자면 제 아이폰은 500만 화소의 카메라가 있지만 AIR 는 카메라를 지원하지 않습니다. G센서라던가 GPS 모두 지원하지 않습니다. 결국 스마트폰을 그닥 스마트하게 사용 할 수 없게 되지요. 아래는 AIR 에서 지원하지 않는 기능 목록입니다.

물론 앞으로 버전업을 하면서 지원여부가 어떻게 될지는 모르겠습니다. 그리고 기존 AIR 에 없던 기능들도 아이폰용으로 추가된게 있는 걸 보면 각 OS별로 AIR의 지원스펙이 다르게 나올 수도 있을 것 같습니다. 여튼 결론은 Object-C 같은 Native 언어로 만드는 앱과 플래시로 만드는 앱의 성격이나 기능이 분명히 나뉠 거라는 겁니다. 이에 플래시개발자들은 프로젝트의 요구사항을 잘 판단해서 앱개발을 해야 될 것 같습니다.

서론이 상당히 길어졌는데 본론인 FlashDevelop에서 앱만드는 과정을 살펴 보겠습니다. 우선 먼저 준비물들 입니다.

  1. Flex 4 SDK  – http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex4sdk
  2. Packager for iPhone – http://labs.adobe.com/downloads/packagerforiphone.html
  3. FlashDevelop – http://www.flashdevelop.org/community/viewforum.php?f=11
  4. FlashDevelop iPhone Project – 090-ActionScript-3-iPhone-AIR-AS3-Projector
  5. .p12 & .mobileprovision

5번의 인증서는 제가 전에 올린 글을 참고 해서 만들면 됩니다. (Flash CS5 iPhone os settings) 이제 모든 준비물이 준비되었습니다.

아래 내용과 이미지는 http://blubl.geoathome.at/2010/09/flash-iphone-entwicklung-mit-flashdevelop-und-dem-adobe-packager-for-iphone/ 를 수정, 변경 한 것임을 먼저 알립니다.

Flex 4 SDK 와 Packager for iPhone
제일 먼저 다운받은 Flex 4 SDK 폴더에 Packager for iPhone 를 복사해서 합칩니다.

FlashDevelop iPhone Project Template
FlashDevelop 프로젝트를 다음의 경로에 복사합니다.
C:[FlashDevelop]FlashDevelopProjects

이제 프로젝트 생성 메뉴에서 iPhone 프로젝트를 볼 수 있습니다.

Flex SDK 경로 수정
아이폰 패키지가 들어가 있는 SDK로 경로를 자신에 맞게 수정합니다. 위치는 다음과 같습니다. Project -> Properties… -> “Compiler Options” -> “Custom Path to Flex SDK”

PackageApplication.bat 수정
PackageApplication.bat 파일 13번줄의 Flex SDK 위치도 변경해줍니다. 주의할 점은 경로에 bin 폴더까지 포함 된다는 점 입니다. 사실 이 배치파일이 이 템플릿의 핵심이 아닐가 싶습니다. 요것만 있으면 Flash Builder에서 만든 swf 를 ipa 로 바꿀 수 있으니까요. Flash Builder 의 프로젝트 SDK 와 ADL 도 경로만 수정해 주면 될 듯 합니다.

인증서 복사
swf 를 만들고 테스트 하는데 까지는 인증서가 필요 없지만 .ipa로 만들기 위해서는 반드시 인증서 파일이 필요합니다. 인증서 파일을 “certificates” 폴더에 복사합니다. 인증서 이름은 “iphone_dev.p12” 와 “iphone_dev.mobileprovision” 로 변경합니다. 이 파일 이름은 PackageApplication.bat 에 정의 되어 있습니다.

SWF 테스트
이미 프로젝트 탬플릿에 텍스트가 들어가 있으니 바로 빌드를 해봅니다. 만약 정상적으로 “Air Debug Launcher” 를 실행시키지 못한다면 Project -> Properties… -> Test Movie… -> “Run custom command…” -> Edit 에서 아이폰패키지 SDK 의 ADL.exe 를 실행 할 수 있도록 경로를 수정합니다.

.ipa 만들기
PackageApplication.bat 을 실행합니다. 만들 ipa 의 종류를 묻는 질문이 나옵니다. 해당상황에 맞게 선택합니다. 각 옵션이 정확하게 어떤차이가 있는지 정확히는 모르겠습니다. 다만 test 의 경우 컴파일 시간이 짧은 대신 최종 ipa 의 용량이 조금 큽니다. store 의 경우 는 반대로 컴파일이 오래걸리고 ipa 용량이 조금 작습니다. store의 경우 아마 컴파일을 최적화 해 주는게 아닌가 싶습니다.

인증서 비밀번호를 입력합니다.

please be patient~ ㅎㅎㅎ

드디어 그토록 원하던 ipa가 생성 되었습니다.

해당 파일은 아래의 위치에 생성됩니다.

다음에는 실제로 ipa를 만들어 아이폰에서 구동되도록 만들어보고 이때 주의할 점과 팁을 알아보도록 하겠습니다.

5 thoughts on “iPhone App is developed by Flex SDK”

  1. Pingback: Powerfl » Blog Archive » Jailbreak – Flash game for iPhone

  2. Pingback: Jailbreak – Flash game for iPhone | Sewonist.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.