본문 바로가기

ANDROID의 속삭임

[android][build][ant] 안드로이드 ant 자동 빌드

- 자동 빌드의 사용 목적.

- 빌드 버전이 여러개 인 경우 : 개발용빌드, 릴리즈형 빌드...기타 등등 의 이유로 여러개를 함께 빌드 하고자 할때 편리성 목적.

- 빌드 버전이 한번에 하나만 생성 하지만 수시로 버전이 바뀌는 경우 : 이런 경우 타겟을 넘겨서 해당 버전을 선택 함으로써 개발자 실수를 줄일수 있다.

- 위에 두개가 속하진 않지만 이클립스가 그냥 쓰기 싫어서 : 이런 경우 그냥 반항이다 -_- 소스 관리 하기도 그렇고 구지 자동 빌드 환경을 구축 할 필요 없는데 쓰는것은 싸우자는 것이다.


- 자동 빌드 사용 목적과 관계 없는것.( 간혹 그 목적을 잘못 알고 있는 개발자가 있더라. )

- 프로젝트 인원이 늘어나면 필요하다?

- 프로젝트 인원과 전혀 관계 없다. 프로젝트 인원이 100명이 되더라도 빌드를 하나만 한다면 그냥 이클립스에서 지원 하는 기능을 사용 하지, 구지 서버에서 자동빌드를 구축 한다던가 할 필요가 없다. 걍 삽질이다.

- 프로젝트 형상관리?

- 형상 관리는 SVN이나 Git가 가지는 목적이지. 빌드 프로그램의 주목적이 아니다. 자동 빌드는 빌드를 편하게 하는데 목적이 있다. 

- 프로젝트 빌드 구성원이 개발자가 아니다? 그래서 별도로 해야 된다?

- 자동 빌드에서 구성 바꾸고 해보면 어느 정도의 지식이 필요하다. 근데 이클립스에서 지원하는 빌드를 사용하면 GUI로 매우 편하다. 그러므로 더더욱 이클립스 빌드를 사용 하는 것이 맞다.




- 사전 : 안드로이드, 자바, ANT 설치 및 환경변수 설정.


- build.xml 생성

android update project -p ./ [-name project_name]


- key 생성

keytool -genkey -v -keystore [keystore name].keystore -alias [alias name] -keyalg RSA -keysize 2048 -validity 10000


- ant.properties작성

key.store.password=password

key.alias.password=password

key.store=keystore_file_name.keystore

key.alias=alias_name


- build 실행 

ant release





-  실행시 에러 발생.

BUILD FAILED

D:\androidSDK\sdk\tools\ant\build.xml:601: Invalid file: D:\androidSDK\sdk\extras\google\google_play_services\libproject\google-play-services_lib\build.xml


Total time: 0 seconds

위의 에러 내용은 외부 라이브러리로 사용하는 google_play_services에 build.xml이 없다고 그러는 것이다.

이럴때 그냥 build.xml을 동일하게 생성 해주면 된다. 예문은 아래와 같다.

cmd>android update project -p D:\androidSDK\sdk\extras\google\google_play_services\libproject\google-play-services_lib\


[aapt] invalid resource directory name: D:\androidSDK\sdk\extras\google\google_play_services\libproject\google-play-services_lib\bin\res/crunch


BUILD FAILED

D:\androidSDK\sdk\tools\ant\build.xml:601: The following error occurred while executing this line:

D:\androidSDK\sdk\tools\ant\build.xml:653: The following error occurred while executing this line:

D:\androidSDK\sdk\tools\ant\build.xml:698: null returned: 1


Total time: 0 seconds

위의 경우 빌드 되는 위치에 파일이 중복 되어 생기는 것이다. 지금의 경우 프로젝트/bin/crunch 가 중복 되었다.

보통 이클립스가 범인이다. 즉 같은 위치에 이클립스가 자동 빌드 한 위치에 ant가 그곳에 빌드 할려고 하니 "엇 내가 만든게 아닌 파일이 있네...나 안해"라고 하는 것이다.

이런경우 해당 파일을 삭제 하면 되겠다. 단 이클립스의 클린 기능을 활용 해도 좋다. 만약 외부 라이브러리 잘 안될 경우에는 그냥 수동으로 지워도 무방하다.