2011. 1. 14. 11:00

저렴하게 AIR 개발하기

새벽에 잠이 들어야하는데 (아침 출근길이 걱정입니다) 잠이 안와 이벤트 시리즈와는 별도로 저렴하게 AIR를 개발하는 법을 소개하려고 합니다.

Flex Builder나 그외 IDE 툴로 개발하면 무척이나 편리하지만 기본적인 원리를 알게 되면

혹여나 다른 열악한 환경에서도 개발하게 되더라도 도움이 되지 않을까 생각되서 소개하려고 합니다.

 

일단 AIR는 Flex와는 다르게 좀 환경이 복잡합니다. 기본적으로 소개는 여기를 확인하면 됩니다.

AIR를 개발하려면 (Ajax AIR는 제 전문분야가 아니라서 생략하도록 할께요) 기본적으로 "AIR application descriptor file" 이라는 것을 작성해야합니다.

Builder에서 개발할때 기본적으로 만들어지는 코드 파일 외에 [프로젝트명_app.xml] 파일이 생겨날 것인데 이게 바로 방금 말했던 AIR application descriptor file 입니다.

이 파일에는 AIR를 실행하거나 혹은 패키징할때 필요한 정보들을 담게 되는데요. 이 파일이 없으면 아무것도 할 수 없습니다. 그러니 이 셋팅은 매우 중요합니다.(여기를 참고하세요)

 

Flex 3 Developer Guide에 명시된 내용을 한번 볼까요.



    samples.flex.HelloWorld
    0.1
    HelloWorld
    
        HelloWorld.swf
        true
        none
        true
        400
        200
    

요래 적혀있습니다. 각 노드마다 설명은 다음과 같습니다.

  • id : 어플리케이션의 기본 아이디로 어떤 어플리케이션인지 알만한 단어로 써주면 좋습니다.
  • version : 어플리케이션의 버젼인데 나중에 배포할때 이것을 기준으로 업데이트 할지 말지 결정합니다.
  • filename : 어플리케이션의 메인 파일이 무엇인지 명시합니다. 이때는 확장자는 제외합니다.
  • initialWindow : 어플리케이션 실행시 표시되는 윈도우 속성들은 제어합니다.
  • content : 어플리케이션에서 표시될 content가 무슨 파일인지 명시합니다.
  • visible : 우리가 알고 있는 일반적인 visible 속성과 같습니다.
  • systemChrome, transparent : 설명이 기니 링크를 따라가세요.
  • width, height : 어플리케이션 윈도우의 너비와 높이입니다.

일단 이만큼만으로도 샘플 파일을 컴파일하거나 실행시킬 수 있습니다.

그 외에 아이콘이라던가 하는 부분들도 있습니다만 오늘은 살짝 맛만 보도록하지요. ㅎ

 

그럼 일단 위의 모양대로 파일을 하번 만들어 보지요. 이왕에 하는거 HelloWorld.as 파일도 만들어 보아요.

HelloWorld.as 파일의 내용은 아래처럼 합니다.

 

package
{
import flash.display.Sprite;
public class HelloWorld extends Sprite
{
    public function HelloWorld()
    {
        super();
        trace("Hello World");
    }
}
}

 

컴파일을 해야겠는데 AIR 컴파일은 amxmlc 명령어로 컴파일합니다.

 

이렇게 컴파일을 하고 난 뒤에 우리 한번 실행을 해야겠는데 무턱대고 swf 를 Flash Player로 실행하면 안됩니다. 이때 명령어는 adl 이라는 것을 이용하는데요. 이것은 AIR Debug Launcher 의 약자로 디버그용으로 확인할때 사용합니다.

개발중에 패키징하고 인스톨해서 실행해보는 모든과정을 일일이 하면 얼마나 귀찮습니까. 그래서 adl을 통해 실행합니다.

 

일단 오늘은 맛만 보는거니까 이렇게만 실행해 볼까요.

 

참. 아까도 적어놨지만 실행을 할때는 AIR application descriptor file를 이용해서 실행합니다.

이렇게...

 

 

하려고 했으나 "error while loading initial content"라고 하면서 실행이 안됩니다. 왜 이러지? 라고 생각하면서 Developer Guide를 뒤지고 난리법석을 피웠었는데 이유는 의외의 곳에서 문제가 있습니다. SDK가 3.2 버젼 이후부터는 xmlns="http://ns.adobe.com/air/application/1.0"이게 아니라 xmlns="http://ns.adobe.com/air/application/1.5"로  변경되었습니다.(Adobe 이것들. Developer Guide도 수정을 안해놓다니.. 사람 뻘짓하게..)

 

게다가 systemChrome이라던가 transparent라던가 하는 옵션값을 좀 수정을 해야합니다.

왜냐하면 위에서 소개한 옵션으로는 투명한데다가 systemChrome도 없어서 어플리케이션이 실행되었어도 눈에 보이지 않기 때문이지요.

 

AIR application descriptor file을 아래와 같이 수정합니다.

 



    HelloWorld
    0.1
    HelloWorld
 Hello World
    
  
        HelloWorld.swf
        standard
        false
        true
        640
        480
    

 

그럼 좀전에 했던것 같이 컴파일 하고 adl을 이용해 실행해볼까요.

 

위와같은 빈창이 뜨게 됩니다. 와우. 성공. 그리고 프롬프트 창을 확인하면

 

 

저렇게 Hello World를 화면에 표시해줍니다.

와우.. 그냥 웹용으로 개발할때는 그럭저럭 할만하다가 AIR로 개발할라 치니까 복잡해 죽겠네요. :)

셋팅할것도 많고.. 하지만 어느날 갑자기 이클립스도 어떻게 설치할 수 없는 열악한 상황에서도

이런 방법을 통해 개발을 진행할 수 있다는 것만 알아두세요.(평소엔 그냥 Builder 개발 고고)

 

참고로 java 를 통해서도 컴파일이 가능하니 그건 Developer Guide를 참고 하시면 도움이 될거에요.

이제 슬슬 잠이 옵니다. 오늘은 이만할게요.

p.s : SyntaxHighlighter 기능중에 XML 을 처리하는 모듈에서 xmlns 로 네임스페이스를 지정할때 xmlns:xx 식으로 처리하지 않으면 자동으로 특정문자열이 들어가네요. 그걸 막으려고 xmlns: 라고 적어놨는데 xmlns 로 봐주시면 됩니다.