AIR 1.5.1의 한글문제

RIA/AIR 2009/07/03 01:59 |

저는 Adobe AIR에 대해서도 관심이 많고, Flash Platform의 한글문제에 대해서도 관심이 많은 편인데요. 그렇다보니 언제나, AIR에는 한글문제가 없을까 찾아나서게 되네요. 곧 출시될, AIR 2.0에는 이런 문제가 없길 바라고 있지만, 또 어떤 문제가 생길지 노심초사하고 있습니다.

AIR는 런타임 출시 이후 1년 반만에 2억대의 클라이언트에 설치되는 기염을 토하면서, 총 세번의 런타임 릴리즈를 거쳐왔습니다. AIR 1.1에서는 애플리케이션의 설치환경에서 다국어를 지원하기 시작하였고, 1.5에서는 리눅스 플랫폼을 지원하기 시작하였습니다. 그리고 올 2월 릴리즈된 1.5.1에서는 여러 버그들이 수정되었고 2개의 API들이 추가되었습니다.

AIR 1.5.1의 런타임은 어도비 AIR런타임 다운받기(http://get.adobe.com/kr/air/)에서 내려 받을 수 있습니다. 클라이언트에 이전 버전의 런타임이 설치되어 있을 경우, 자동으로 업데이트가 진행됩니다. SDK는 AIR SDK 다운로드(http://www.adobe.com/kr/products/air/tools/sdk/)에서 내려 받을 수 있고, Flex 3.4 이상의 SDK에는 1.5.1의 SDK가 포함되어있습니다. 1.5.1의 새로운 API를 사용해야 할 경우엔 반드시 디스크립터 파일의 xmlns 네임스페이스를 수정해 주어야 합니다.

AIR 1.5.1에서는 CPU의 아키텍쳐를 알 수 있는 Capabilities.cpuArchitecture 와, 애플리케이션이 실행된 원인을 알 수 있는 InvokeEvent.reason 가 추가되었습니다.

애플리케이션의 실행원인(?)이라고 하니 다소 아리송해 보이지만, AIR 애플리케이션은 사용자가 수동으로 실행하거나, 애플리케이션의 확장된 파일에서 실행하거나, 운영체제가 실행되면서 자동으로 실행되는것과 같이 총 3가지 방법이 있습니다. 이 중 애플리케이션의 확장된 파일로 실행되는 경우는 그간 InvokeEvent에서 체크할 수 있었지만, 나머지 두 가지 경우는 마땅히 체크할 수 있는 방법이 없었습니다.

그래서 1.5.1에서는 InvokeEvent에 reason이라는 프로퍼티를 추가하여, 사용자가 수동으로 혹은 운영체제가 자동으로 AIR 애플리케이션을 실행하였는지 체크할 수 있습니다. reason에 저장될 값은 InvokeEventReason에 정의되어 있으며, 현재 AIR 1.5.1에서는 standard(수동으로 실행)과 login(운영체제가 자동으로 실행)이 있습니다.

위의 API가 새로운 기능처럼 다가오시지 않을 수도 있지만, 애플리케이션의 실행 원인을 아는 것만으로도 상당히 재미있는 애플리케이션을 여럿 만들 수 있습니다. 예를 들어, RSS리더기의 경우, 운영체제가 자동으로 실행될 경우 NativeWindow를 화면에 띄우지 않고, RSS만 수집하는 로봇으로 돌리다가, 사용자가 AIR 애플리케이션을 실행할 경우, NativeWindow를 화면에 띄워서 수집된 피드들을 보여주게 할 수 있습니다.

하지만, 아쉽게도 한글 윈도우 플랫폼에서는 NativeWindow.reason을 사용할 수 없습니다. 이것도 역시 한글문제인데요. 윈도우 플랫폼에서 MUI가 한국어일 경우, AIR 애플리케이션이 자동으로 실행되는걸 감지하지 못합니다.


위 소스코드는 AIR 애플리케이션의 InvokeEvent.reason을 체크할 수 있는 프로그램입니다. 시스템 시작시 자동으로 실행을 체크하면, nativeApplicaton의 startAtLogin 프로퍼티를 true로 설정하여 사용자가 다음번에 운영체제를 시동할 경우 자동으로 AIR 애플리케이션이 시작되게 합니다. 다만 주의할 점은, 개발과정중 ADL, ADT상에서는 에러가 발생하게 되고, 반드시 AIR애플리케이션으로 패키징할때에만, 정상적으로 작동하게 됩니다.

위의 스크린샷은 startAtLogin프로퍼티를 true로 체크하고, 시스템을 시동했을 때, InvokeEvent의 reason을 출력한 결과인데, 아쉽게도 login이라는 결과를 출력하지 못했습니다. 다만, 윈도우의 MUI를 영어로 변경하거나, Mac OS, 리눅스에서는 정상적으로 결과값이 출력됩니다.

아직 이 문제를 해결하는 방법은 없습니다만, 저의 생각으로는 윈도우 환경의 텍스트 인코딩이 cpc949이어서, 운영체제에서 보내는 값을 AIR런타임상에서 정상적으로 받아오지 못하는 문제인 것 같습니다. 특히, 같은 테스트 환경에서 MUI를 영어로 바꿀경우 정상적으로 결과값을 받아 올 수 있습니다.

이 문제는, AIR 런타임의 문제일 수도 있고, 윈도우 플랫폼 자체의 문제일 수도 있지만, AIR 2.0 부터는 스토리지 장치까지 제어할 수 있고, 점차 시스템을 제어할 수 있는 부분이 많은 만큼, 이러한 문제는 앞으로 더 늘어갈 것으로 보입니다. 특히, 이런 문제로 인해 AIR의 활성화의 족쇄가 되지 않을까 염려스럽습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

Trackback Address :: http://adnaru.com/trackback/148 관련글 쓰기

댓글을 달아 주세요