39
Ant안드로이드 앱을 빌드하자! 안세원 [email protected] 2012.5 자동으로~

ant로 안드로이드 앱을 자동으로 빌드하자

Embed Size (px)

DESCRIPTION

ant를 이용해 다양한 설정을 적용한 안드로이드 빌드를 만드는 방법

Citation preview

Page 1: ant로 안드로이드 앱을 자동으로 빌드하자

Ant로 안드로이드 앱을 빌드하자!  

안세원 [email protected]  

2012.5  

자동으로~  

Page 2: ant로 안드로이드 앱을 자동으로 빌드하자

본 세션은 대단한 하이테크닉을 전혀 포함하지 않으며,  이런저런 팁과 꼼수를 다수 포함하고 있습니다.  

Page 3: ant로 안드로이드 앱을 자동으로 빌드하자

안세원  ([email protected])    

•  Datepresso  App  @  SunnyLoft    •  PmangPlus  SDK  @  Neowiz  internet  

•  Tapsonic,  워크라이시스, 피망맞고 등에 탑재  

•  그 전엔 서버 만들었어요  

Page 4: ant로 안드로이드 앱을 자동으로 빌드하자

앱 하나 당 빌드 몇개씩 만드세요?  

•  마켓 별:  Google  Play,  T-­‐Store,  올레마켓, 유+ 앱마켓, 삼성앱스, …  

•  연동 서버 별: 개발서버,  QA서버, 실서버, …  

•  잡다구리한 설정 별: 프락시 서버, 디버깅 옵션,  …    

 

이러다보니  •  일일이 이클립스에서 빌드 명령 내리기 귀찮다!  

•  가끔씩 실수한다!      

è  자동화만이 살 길!  명령 한 방에 종류별 빌드를 줄줄이 만들고 싶어!  

Page 5: ant로 안드로이드 앱을 자동으로 빌드하자

안드로이드 빌드 자동화 도구  

SBT  

자바 웹 개발 빌드 도구 + 안드로이드 지원 기능의 형태  

로고도 없다…  

Page 6: ant로 안드로이드 앱을 자동으로 빌드하자

왜 나는 Ant를 선택했는가!  

1. 안드로이드 프로젝트 자체 제공 빌드 툴  2. 다양한 태스크 제공  3. 다른 것 보다 나한테 익숙하니깐…  

아무 도구나 선택해도 별 차이는 없을 듯?  

Page 7: ant로 안드로이드 앱을 자동으로 빌드하자

Ant  사용 완전 기초  

1.  홈페이지에서 최신 버전 다운받음  •  반드시 1.8 이후 버전 쓸 것!    

2.  원하는 위치에 압축 풀기  3.  bin  디렉터리를 path에 추가  

•  그래야 편하니깐  

4.  추가 태스크 설치  •  다운받아 lib디렉터리에 복사

5.  Xml로 빌드 스크립트 만들기  •  Eclipse를 쓰면 편해요!  

Page 8: ant로 안드로이드 앱을 자동으로 빌드하자

Ant  빌드 스크립트 구조  •  Project  :  루트  •  Target(s)    

: 수행할 업무  (ex.  릴리즈 빌드를 만들어라)  

•  Task(s)  :    Target  내부의 개별 작업  (ex.  파일 복사, javac,  …)  

 

Target  간 의존관계 설정, 매크로 만들기,  다른 ant  script 호출하기 등  복잡한 내용도 공부해보세요~  (무책임하다)  

Page 9: ant로 안드로이드 앱을 자동으로 빌드하자

Ant  실행하기  ant를 path에 잡아둔 다음, 커맨드라인에서 ant만 치면 됨

ant  [-­‐f  filename]  [targetname]  

Page 10: ant로 안드로이드 앱을 자동으로 빌드하자

Android  SDK기본 제공 기능 실습  

릴리즈 빌드 만들기  1. 프로젝트 초기화  2. 릴리즈 키 만들기  3.  Proguard  설정하기  4. 빌드!  

Page 11: ant로 안드로이드 앱을 자동으로 빌드하자

프로젝트 초기화  SDK에 포함된 android 커맨드가 다 해 준다!  android    create  project    -­‐n  [프로젝트명]  –t  [타겟  API]  –p  [프로젝트 경로]          -­‐k  [프로젝트 패키지]  –a  [생성할 액티비티 클래스명]  

Page 12: ant로 안드로이드 앱을 자동으로 빌드하자

빌드 관련 주요 파일들  •  ant.properties:    Key  store  관련 속성 지정  •  project.properties:  프로젝트 관련 속성 (타겟 API  레벨, 의존 라이브러리

프로젝트,  …)  •  android  update  project  커맨드를 사용하면 수정됨  

•  local.properties:  로컬 개발환경 속성 (SDK  설치 경로 등) 자동생성되므로 수정하지 말 것.  

•  build.xml:  기본 제공하는 ant  빌드 스크립트. 수정하지 말자.  

Page 13: ant로 안드로이드 앱을 자동으로 빌드하자

기본 제공 target  •  clean:  생성된 빌드 결과물 삭제  •  debug:  디버그 빌드 생성  •  release:  릴리즈 빌드 생성  •  install,  install[d|r|i|t]:  만들어진 빌드 설치  

Page 14: ant로 안드로이드 앱을 자동으로 빌드하자

일단 ant  release  실행해 봅시다!  

빌드에 성공하긴 하는데,  proguard와 signing은 이뤄지지 않음  è 이렇게 배포할 순 없다!  

Page 15: ant로 안드로이드 앱을 자동으로 빌드하자

릴리즈 키 적용  Release  빌드 용 키를 만든 후,  ant.properties  에 키 정보를 등록함  •  release  빌드 키는 이클립스에서 만들면 편해요  •  보안을 위해 ant.properties  파일은 VCS에 넣지 말자!  

Page 16: ant로 안드로이드 앱을 자동으로 빌드하자

proguard  적용  •  project.properties  에 proguard.config  추가  •  proguard-­‐project.txt에 proguard 설정 등록  

•  SDK의 기본 proguard  설정도 지정해두자  

Page 17: ant로 안드로이드 앱을 자동으로 빌드하자

ant  release  다시 실행  •  proguard와 signing이 잘 이뤄졌다!  

얼른 마켓에 올려서 재벌이 됩시다!  

Page 18: ant로 안드로이드 앱을 자동으로 빌드하자

자, 기본은 익혔으니  이제 본론으로!  

Page 19: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드를 마구 만들어내려면?  1.  서로 다른 설정을 적용한 apk들을 한번에 생성  2.  설정별로 apk에 적절한 이름을 부여함  

•  config  이름  •  버전 번호  

ex)  myapp_dev_v1.0.apk  /  myapp_goog_play_v1.3.apk  3.  기왕이면 서버에 업로드까지 하면 좋겠음  

•  매번 QA팀 기계에 앱 심어주기 귀찮아~!      

Page 20: ant로 안드로이드 앱을 자동으로 빌드하자

설정 적용 방법 #1:  resource  xml  res/values  에 설정정보 xml을 만들고, 앱에서 읽어들임  

•  작성이 쉽고  •  빌드를 자동화하기도 쉽지만 (파일만 복사하면 됨)  •  상속 등의 메커니즘을 사용할 수 없고  •  혹시나 새로 속성이 추가되면 xml  일일이 찾아 고쳐야 하고  •  xml을 별도의 디렉터리에 관리해야 함  

Page 21: ant로 안드로이드 앱을 자동으로 빌드하자

설정 적용 방법 #2:  config  구현체  설정정보 인터페이스와 구현체 클래스를 만들어서 사용  

•  코드를 작성하는 부담이 있고  •  빌드 자동화 하기도 쉽지 않지만 (코드를 직접 고쳐야 함)  •  상속 메커니즘을 사용할 수 있고  •  새로 속성이 추가되면 compile  time  error를 인지할 수 있으며 •  별도의 장소에 class들을 관리할 필요가 없음  

Page 22: ant로 안드로이드 앱을 자동으로 빌드하자

설정 적용 방법 #2:  config  구현체  

빌드 스크립트로 여길 갈아끼우는게 문제임!  

Page 23: ant로 안드로이드 앱을 자동으로 빌드하자

xml  / config  구현체 중 무엇을 택할까!  

•  생각보다 config 종류가 많아졌고  •  버전업 하다보니 config 항목이 추가될 일도 종종 있고  •  별도 디렉터리에 xml  관리하기가 너무 싫었습니다!  

전 config  구현체를 택했습니다!  

Page 24: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드 만들어내기 절차  1.  새로운 build  script  를 만든다 (dist.xml)  2.  다음 작업을 config 개수 만큼 수행한다  

1.  MyApp  의 코드 중 Config  인스턴스 생성 코드를 갈아치운다.  

2.  원래 build.xml 의 release  타겟을 호출한다.  3.  만들어진 apk  파일의 이름을 바꾸고, 적절한 디렉터리에 복사한다.  

•  config마다 구분을 해야 하고, 후속 빌드의 overwrite 를 방지하며  •  clean으로 삭제되어 버리지 않도록  

ant  만으론 이 작업이 쉽지 않다.  sed  등의 외부 도구를 적극 사용하자!  

Page 25: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드 만들어내기 xml  

버전마다 빨강 박스만 바뀐다  

Page 26: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드 만들어내기 xml    -­‐중복제거  

Page 27: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드 만들어내기 실행  

Page 28: ant로 안드로이드 앱을 자동으로 빌드하자

설치해보자!  

야~ 잘 된당~!  

Page 29: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드를 마구 만들어내려면?  1.  서로 다른 설정을 적용한 apk들을 한번에 생성  2.  설정별로 apk에 적절한 이름을 부여함  

•  config  이름  •  버전 번호  

ex)  myapp_dev_v1.0.apk  /  myapp_goog_play_v1.3.apk  3.  기왕이면 서버에 업로드까지 하면 좋겠음  

•  매번 QA팀 기계에 앱 심어주기 귀찮아~!      

Page 30: ant로 안드로이드 앱을 자동으로 빌드하자

우린 이미 버전 번호를 갖고 있다!  

근데 xml  중에서 어떻게 뽑아내지?  

à  xpath!  

Page 31: ant로 안드로이드 앱을 자동으로 빌드하자

우린 이미 버전 번호를 갖고 있다!  •  Manifest의 versionName을 찾아가는 xpath  query:    

/manifest/@*[local-­‐name()='versionName']  •  Ant에서 xpath  를 이용하려면 3rd  party  library가 필요함.  

ex)  XMLTask  http://www.oopsconsultancy.com/software/xmltask/        

이제 XMLTask를 이용해 버전 이름을 뽑아낸 다음,    파일명 뒤에 붙이자!  

 

Page 32: ant로 안드로이드 앱을 자동으로 빌드하자

버전 번호 붙은 apk  만들기  

Page 33: ant로 안드로이드 앱을 자동으로 빌드하자

버전 번호 붙은 apk  만들기  

Page 34: ant로 안드로이드 앱을 자동으로 빌드하자

여러벌 빌드를 마구 만들어내려면?  1.  서로 다른 설정을 적용한 apk들을 한번에 생성  2.  설정별로 apk에 적절한 이름을 부여함  

•  config  이름  •  버전 번호  

ex)  myapp_dev_v1.0.apk  /  myapp_goog_play_v1.3.apk  3.  기왕이면 서버에 업로드까지 하면 좋겠음  

•  매번 QA팀 기계에 앱 심어주기 귀찮아~!      

Page 35: ant로 안드로이드 앱을 자동으로 빌드하자

apk도 준비됐으니 서버에 올려보자!  안드로이드 웹 브라우저로 접근하면  바로 apk  를 설치할 수 있다.  à QA,  기획자 디바이스에 일일이 USB  꼽아  설치해 줄 필요가 없다!  

이를 위해선  •  apk를 서버에 업로드하고  •  html 페이지를 생성해야 한다!  

Page 36: ant로 안드로이드 앱을 자동으로 빌드하자

작업 시나리오  1.  index.html 파일 생성  

•  ls  결과를 이용해 html 생성 (sed이용)  2. FTP  혹은 SFTP로 파일 전송  

•  ant의 ftp나 sshexec  task  사용  

구체적인  작업 내용은  

서버 환경에 따라  case  by  case!  

Page 37: ant로 안드로이드 앱을 자동으로 빌드하자

정리  1.  앱을 만들다 보면 여러 벌의 apk  빌드가 필요해진다.  2.  자동화해야 실수도 줄이고, 편하다.  3.  여러 자동화 도구가 있다. 취향에 맞게 선택하자.  4.  ant로 빌드를 자동화 해 봤다.  

1.  기본 제공 ant  script로 릴리즈 빌드를 만들었다.  2.  java  interface기반 config를 이용해 환경 별 빌드를 만들었다.  3.  ant의 macrodef를 이용하면 중복을 제거할 수 있다.  4.  xpath를 이용해 버전번호를 apk    파일명에 적용했다.  5.  서버로 업로드해서 배포하면 편하다.    6.  업로드 script는 case  by  case.  

5.  하다보면 여러모로 맥이 편하다. 사장님 맥 사쥬세효!  

Page 38: ant로 안드로이드 앱을 자동으로 빌드하자

질문?  

Page 39: ant로 안드로이드 앱을 자동으로 빌드하자

고맙습니다!  샘플 프로젝트 URL:    

https://github.com/kingori/android_ant_sample    

Datepresso 가입도 해 주셔요~  J