Tip And Tech2012. 1. 5. 13:10

ADT컴파일을 사용하기 위해서는 여러 방법이 있지만 여기서는 윈도우 명령프롬프트를 이용한 방법을 사용한다.
우선 AIR 프로젝트를 만들고 빌드하다보면 자연스레 bin-debug에 swf와 xml등 컴파일에 필요한 파일들이 생성된다.
나는 주로 bin-debug에서 테스트를 하였다.
컴파일 환경 XML파일을 열어 런타임이 3.0 이상인지 확인한다.
<application xmlns="http://ns.adobe.com/air/application/3.1"> XML파일 최상위에 이부분이다.
나의 경우는 3.1을 사용한다.

ADT를 사용하기 위해 기나긴 경로를 모두 적어주어도 좋지만 윈도우 환경 변수로 설정하여 adt명령문을 바로 사용하도록 한다.

컴퓨터 속성에서 고급시스템 설정에 환경변수를 추가한다.


본인의 Flash Builder의 설치 경로에  sdks폴더아래에서 현재 사용하는 SDK의bin폴더를 등록한다. 그러면 어느 경로에서든 접근이 가능해 진다.

작업 중인 프로젝트의 bin-debug폴더로 이동하면 swf와 XXX-app.xml이 있다. xml파일을 열면 <content>노드가 있다.
아마 <content>[This value will be overwritten by Flash Builder in the output app.xml]</content> 이렇게 되어있을 것이다. 값을 같이 있는 swf의 이름으로 변경한다.
예) <content>myApp.swf</content>

이제 컴파일 환경과 재료는 준비 되었다.

실행창에 CMD라고 입력하고 명령프롬프트에 ADT명령문을 입력한다. 프롬프트 위치는 컴파일할 xml과 swf가 있는 곳에서 실행하여야 한다.
adt -package -target apk-captive-runtime -storetype pkcs12 -keystore ../My_cert.p12 myApp.apk myApp-app.xml myApp.swf
참고) http://help.adobe.com/ko_KR/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html

실행하면 인증서 암호를 입력하라고 한다.
본인의 인증서 암호를 입력하면 완료!! 귀찮으면 -storepass옵션을 AIR_SIGNING_OPTIONS영역에 추가하고 본인의 암호를 적는다.

Ant컴파일러를 사용하여도 좋고 배치파일을 만들어 사용해도 좋다. 나 같은 경우는 배치파일을 만들어 파일명과 옵션만 바꾸어 사용하도록 하였다.

문제1) Could not load keystore file<password may be incorrect> 암호도 맞고 모든게 정산인데 암호가 다르다고 에러가 나는 경우 인증서를 소스폴더에 두지 말고 다른 곳으로 두고 컴파일해 본다. 그래도 안되면 옵션이 잘 못 입력된 것이다.

문제2) Could not generate timestamp: Connection timed out: connect 라며 타임스탬프 서버와의 통신 에러나는 경우 본인의 JRE폴더에 lib폴더에 net.properties파일을 찾아 열어 아래의 항목을 고친다.
java.net.useSystemProxies=false -> java.net.useSystemProxies=true

문제3) 이번 경우가 아닌 AIR컴파일의 경우인데 Could not generate timestamp: handshake alert: unrecognized_name이라고 에러가 나면 -tsa none으로 설정한다.
참고 http://help.adobe.com/ko_KR/air/build/WS5b3ccc516d4fbf351e63e3d118666ade46-7f72.html

이 밖에 ADT 오류 메시지 http://help.adobe.com/ko_KR/air/build/WSBE9908A0-8E3A-4329-8ABD-12F2A19AB5E9.html

Posted by 버터백통
Tip And Tech2012. 1. 4. 16:39

우선 거지 같은 AIR ADT;;;;

ADT는 콘솔을 사용하여 커맨드 입력을 통해 직접 컴파일하고 컴파일 옵션 등을 설정하여 개발자가 컴파일에 관여하는 것이다.
참고 http://help.adobe.com/ko_KR/air/build/WS5b3ccc516d4fbf351e63e3d118666ade46-7fd9.html

또한 AIR3.0이후 버전에서는 apk-captive-runtime 이라는 옵션을 두어서 AIR런타임을 어플리케이션에 포함시켜 컴파일 할 수 있어 별도로 AIR플레이어를 다운 받도록 하지 않아도 된다.
참고 http://help.adobe.com/ko_KR/air/build/WS901d38e593cd1bac-4f1413de12cd45ccc23-8000.html

ADT는 프로그램 폴더에 설치된 Flash Builder의 sdks안에 사용하는 SDK폴더의 bin폴더 안에 들어있다. 이를 사용하기 위해서는 콘솔을 이용해야 하고 번잡한 작업이 필요하다.

우선 PC전체 경로에서 사용하려면 [컴퓨터]-[속성]-[환경변수]에서 Path 항목에 경로 ADT의 경로를 추가한다.
예) C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\flex_sdk_4.6 with AIR 3.1\bin;
이처럼 설정하면 어느 경로에서든 콘솔에서 adt명령을 실행 할 수 있다. 물론 adt뿐만 아니라 bin폴더 안에 있는 ADL이나 MXMLC등도 전역접근이 가능하다.

오토배치 파일을 만든다면 위의 경로를 처음에 잡아주고 adt명령을 CALL할 수 있겠다.
예)
SET ADT_HOME="C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\flex_sdk_4.6 with AIR 3.1\bin\adt"

CALL %ADT_HOME% -package -target apk-captive-runtime  -storetype pkcs12 -keystore ../codesign.p12  myApp.apk  myApp-app.xml  myApp.swf icons

주의 사항을 살펴보면 아래와 같다.
인증파일은 절대 src또는 코드가 있는 souce폴더에 같이 두면 안된다.
위의 예에서 처럼 한단계 위의 경로에 codesign.p12를 두었다. 또는 평소 관리하는 인증서 폴더에 저장하고 -keystrore의 경로를 설정하여도 된다.

런타임은 최소 2.0이상 이여야 한다.
xml파일의 제일 위에 있는 <application xmlns="http://ns.adobe.com/air/application/3.1">항목을 보면 최소 2.0이여야 한다. 이코드는 3.1버전을 의미한다.
참고 http://help.adobe.com/ko_KR/air/build/WSfffb011ac560372f-5d0f4f25128cc9cd0cb-7ffd.html

아래 경로는 ADT를 이용한 컴파일의 자세한 설명이다.
http://www.petefreitag.com/item/667.cfm

ADT쓰기에 많이 불편하고 리눅스 스럽다;;;; 꽤 비싼 비용을 들여 사용하기엔 상당히 불만족스럽다는 얘기다. 생각컨데 머지않아 이러한 컴파일 옵션들이 Flash Builder에 포함되어서 나오지 않을까 싶다. 
Posted by 버터백통