2. 본 세션은 대단한 하이테크닉을 전혀 포함하지 않으며,
이런저런 팁과 꼼수를 다수 포함하고 있습니다.
3. 안세원
(kingori@gmail.com)
• Datepresso
App
@
SunnyLoft
• PmangPlus
SDK
@
Neowiz
internet
• Tapsonic,
워크라이시스, 피망맞고
등에 탑재
• 그 전엔 서버 만들었어요
4. 앱 하나 당 빌드 몇개씩 만드세요?
• 마켓 별:
Google
Play,
T-‐Store,
올레마켓, 유+ 앱마켓, 삼성앱스, …
• 연동 서버 별: 개발서버,
QA서버, 실서버, …
• 잡다구리한 설정 별: 프락시 서버, 디버깅 옵션,
…
이러다보니
• 일일이 이클립스에서 빌드 명령 내리기 귀찮다!
• 가끔씩 실수한다!
è 자동화만이 살 길!
명령 한 방에 종류별 빌드를 줄줄이 만들고 싶어!
5. 안드로이드 빌드 자동화 도구
SBT
로고도 없다…
자바 웹 개발 빌드 도구 + 안드로이드 지원 기능의 형태
6. 왜 나는 Ant를 선택했는가!
1. 안드로이드 프로젝트 자체 제공 빌드 툴
2. 다양한 태스크 제공
3. 다른 것 보다 나한테 익숙하니깐…
아무 도구나 선택해도 별 차이는 없을 듯?
7. Ant
사용 완전 기초
1. 홈페이지에서 최신 버전 다운받음
• 반드시 1.8 이후 버전 쓸 것!
2. 원하는 위치에 압축 풀기
3. bin
디렉터리를 path에 추가
• 그래야 편하니깐
4. 추가 태스크 설치
• 다운받아 lib디렉터리에 복사
5. Xml로 빌드 스크립트 만들기
• Eclipse를 쓰면 편해요!
8. Ant
빌드 스크립트 구조
• Project
:
루트
• Target(s)
: 수행할 업무
(ex.
릴리즈 빌드를 만들어라)
• Task(s)
:
Target
내부의 개별 작업
(ex.
파일 복사, javac,
…)
Target
간 의존관계 설정, 매크로 만들기,
다른 ant
script 호출하기 등
복잡한 내용도 공부해보세요~
(무책임하다)
9. Ant
실행하기
ant를 path에 잡아둔 다음, 커맨드라인에서 ant만 치면 됨
ant
[-‐f
filename]
[targetname]
10. Android
SDK기본 제공 기능 실습
릴리즈 빌드 만들기
1. 프로젝트 초기화
2. 릴리즈 키 만들기
3. Proguard
설정하기
4. 빌드!
11. 프로젝트 초기화
SDK에 포함된 android 커맨드가 다 해 준다!
android
create
project
-‐n
[프로젝트명]
–t
[타겟
API]
–p
[프로젝트 경로]
-‐k
[프로젝트 패키지]
–a
[생성할 액티비티 클래스명]
12. 빌드 관련 주요 파일들
• ant.properties:
Key
store
관련 속성 지정
• project.properties:
프로젝트 관련 속성 (타겟 API
레벨, 의존 라이브러리
프로젝트,
…)
• android
update
project
커맨드를 사용하면 수정됨
• local.properties:
로컬 개발환경 속성 (SDK
설치 경로 등) 자동생성되므로
수정하지 말 것.
• build.xml:
기본 제공하는 ant
빌드 스크립트. 수정하지 말자.
13. 기본 제공 target
• clean:
생성된 빌드 결과물 삭제
• debug:
디버그 빌드 생성
• release:
릴리즈 빌드 생성
• install,
install[d|r|i|t]:
만들어진 빌드 설치
14. 일단 ant
release
실행해 봅시다!
빌드에 성공하긴 하는데,
proguard와 signing은 이뤄지지 않음
è 이렇게 배포할 순 없다!
15. 릴리즈 키 적용
Release
빌드 용 키를 만든 후,
ant.properties
에 키 정보를 등록함
• release
빌드 키는 이클립스에서 만들면 편해요
• 보안을 위해 ant.properties
파일은 VCS에 넣지 말자!
16. proguard
적용
• project.properties
에 proguard.config
추가
• proguard-‐project.txt에 proguard 설정 등록
• SDK의 기본 proguard
설정도 지정해두자
17. ant
release
다시 실행
• proguard와 signing이 잘 이뤄졌다!
얼른 마켓에 올려서 재벌이 됩시다!
19. 여러벌 빌드를 마구 만들어내려면?
1. 서로 다른 설정을 적용한 apk들을 한번에 생성
2. 설정별로 apk에 적절한 이름을 부여함
• config
이름
• 버전 번호
ex)
myapp_dev_v1.0.apk
/
myapp_goog_play_v1.3.apk
3. 기왕이면 서버에 업로드까지 하면 좋겠음
• 매번 QA팀 기계에 앱 심어주기 귀찮아~!
20. 설정 적용 방법 #1:
resource
xml
res/values
에 설정정보 xml을 만들고, 앱에서 읽어들임
• 작성이 쉽고
• 빌드를 자동화하기도 쉽지만 (파일만 복사하면 됨)
• 상속 등의 메커니즘을 사용할 수 없고
• 혹시나 새로 속성이 추가되면 xml
일일이 찾아 고쳐야 하고
• xml을 별도의 디렉터리에 관리해야 함
21. 설정 적용 방법 #2:
config
구현체
설정정보 인터페이스와 구현체 클래스를 만들어서 사용
• 코드를 작성하는 부담이 있고
• 빌드 자동화 하기도 쉽지 않지만 (코드를 직접 고쳐야 함)
• 상속 메커니즘을 사용할 수 있고
• 새로 속성이 추가되면 compile
time
error를 인지할 수 있으며
• 별도의 장소에 class들을 관리할 필요가 없음
22. 설정 적용 방법 #2:
config
구현체
빌드 스크립트로 여길 갈아끼우는게 문제임!
23. xml
/ config
구현체 중 무엇을 택할까!
전 config
구현체를 택했습니다!
• 생각보다 config 종류가 많아졌고
• 버전업 하다보니 config 항목이 추가될 일도 종종 있고
• 별도 디렉터리에 xml
관리하기가 너무 싫었습니다!
24. 여러벌 빌드 만들어내기 절차
1. 새로운 build
script
를 만든다 (dist.xml)
2. 다음 작업을 config 개수 만큼 수행한다
1. MyApp
의 코드 중 Config
인스턴스 생성 코드를 갈아치운다.
2. 원래 build.xml 의 release
타겟을 호출한다.
3. 만들어진 apk
파일의 이름을 바꾸고, 적절한 디렉터리에 복사한다.
• config마다 구분을 해야 하고, 후속 빌드의 overwrite 를 방지하며
• clean으로 삭제되어 버리지 않도록
ant
만으론 이 작업이 쉽지 않다.
sed
등의 외부 도구를 적극 사용하자!
29. 여러벌 빌드를 마구 만들어내려면?
1. 서로 다른 설정을 적용한 apk들을 한번에 생성
2. 설정별로 apk에 적절한 이름을 부여함
• config
이름
• 버전 번호
ex)
myapp_dev_v1.0.apk
/
myapp_goog_play_v1.3.apk
3. 기왕이면 서버에 업로드까지 하면 좋겠음
• 매번 QA팀 기계에 앱 심어주기 귀찮아~!
30. 우린 이미 버전 번호를 갖고 있다!
근데 xml
중에서 어떻게 뽑아내지?
à
xpath!
31. 우린 이미 버전 번호를 갖고 있다!
• Manifest의 versionName을 찾아가는 xpath
query:
/manifest/@*[local-‐name()='versionName']
• Ant에서 xpath
를 이용하려면 3rd
party
library가 필요함.
ex)
XMLTask
http://www.oopsconsultancy.com/software/xmltask/
이제 XMLTask를 이용해 버전 이름을 뽑아낸 다음,
파일명 뒤에 붙이자!
34. 여러벌 빌드를 마구 만들어내려면?
1. 서로 다른 설정을 적용한 apk들을 한번에 생성
2. 설정별로 apk에 적절한 이름을 부여함
• config
이름
• 버전 번호
ex)
myapp_dev_v1.0.apk
/
myapp_goog_play_v1.3.apk
3. 기왕이면 서버에 업로드까지 하면 좋겠음
• 매번 QA팀 기계에 앱 심어주기 귀찮아~!
35. apk도 준비됐으니 서버에 올려보자!
안드로이드 웹 브라우저로 접근하면
바로 apk
를 설치할 수 있다.
à QA,
기획자 디바이스에 일일이 USB
꼽아
설치해 줄 필요가 없다!
이를 위해선
• apk를 서버에 업로드하고
• html 페이지를 생성해야 한다!
36. 작업 시나리오
1. index.html 파일 생성
• ls
결과를 이용해 html 생성 (sed이용)
2. FTP
혹은 SFTP로 파일 전송
• ant의 ftp나 sshexec
task
사용
구체적인
작업 내용은
서버 환경에 따라
case
by
case!
37. 정리
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. 하다보면 여러모로 맥이 편하다. 사장님 맥 사쥬세효!