Tip And Tech2012.01.05 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 정윤수 버터백통