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

Sewon Ann
Sewon AnnAndroid App Developer à Kakao Corp
자동으로~	
  

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

    안세원 kingori@gmail.com	
  

             2012.5	
  
본 세션은 대단한 하이테크닉을 전혀 포함하지 않으며,	
  
  이런저런 팁과 꼼수를 다수 포함하고 있습니다.	
  
안세원	
  
(kingori@gmail.com)	
  
	
  
•  Datepresso	
  App	
  @	
  SunnyLoft	
  
	
  
•  PmangPlus	
  SDK	
  @	
  Neowiz	
  internet	
  
       •    Tapsonic,	
  워크라이시스, 피망맞고
            등에 탑재	
  


•      그 전엔 서버 만들었어요	
  
앱 하나 당 빌드 몇개씩 만드세요?	
  
•  마켓 별:	
  Google	
  Play,	
  T-­‐Store,	
  올레마켓, 유+ 앱마켓, 삼성앱스, …	
  

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

•  잡다구리한 설정 별: 프락시 서버, 디버깅 옵션,	
  …	
  
	
  
                                  	
  
                            이러다보니	
  
           •    일일이 이클립스에서 빌드 명령 내리기 귀찮다!	
  

                       •    가끔씩   실수한다!	
  
                                  	
  
                                  	
  

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




                         SBT	
  
                                로고도 없다…	
  


 자바 웹 개발 빌드 도구 + 안드로이드 지원 기능의 형태	
  
왜 나는 Ant를 선택했는가!	
  

1. 안드로이드 프로젝트 자체 제공 빌드 툴	
  
2. 다양한 태스크 제공	
  
3. 다른 것 보다 나한테 익숙하니깐…	
  
      아무 도구나 선택해도 별 차이는 없을 듯?	
  
Ant	
  사용 완전 기초	
  
1.  홈페이지에서 최신 버전 다운받음	
  
  •    반드시 1.8 이후 버전 쓸 것!     	
  	
  
2.  원하는 위치에 압축 풀기	
  
3.  bin	
  디렉터리를 path에 추가	
  
  •    그래야 편하니깐	
  
4.  추가 태스크 설치	
  
  •    다운받아 lib디렉터리에 복사
5.  Xml로 빌드 스크립트 만들기	
  
  •    Eclipse를 쓰면 편해요!	
  
Ant	
  빌드 스크립트 구조	
  
•  Project	
  :	
  루트	
  
•  Target(s)	
  	
  
   : 수행할 업무	
  
   (ex.	
  릴리즈 빌드를 만들어라)	
  
•  Task(s)	
  
   :	
  	
  Target	
  내부의 개별 작업	
  
   (ex.	
  파일 복사, javac,	
  …)	
  

	
  




       Target	
  간 의존관계 설정, 매크로 만들기,	
  다른 ant	
  script 호출하기 등	
  
                    복잡한 내용도 공부해보세요~	
  (무책임하다)	
  
Ant	
  실행하기 	
  
ant를 path에 잡아둔 다음, 커맨드라인에서 ant만 치면 됨
           ant	
  [-­‐f	
  filename]	
  [targetname]	
  
Android	
  SDK기본 제공 기능 실습	
  

       릴리즈 빌드 만들기	
  
       1.  프로젝트 초기화	
  
       2.  릴리즈 키 만들기	
  
       3.  Proguard	
  설정하기	
  
       4.  빌드!	
  
프로젝트 초기화	
  
SDK에 포함된 android 커맨드가 다 해 준다!	
  
android	
  	
  create	
  project	
  	
  -­‐n	
  [프로젝트명]	
  –t	
  [타겟	
  API]	
  –p	
  [프로젝트 경로]	
  	
  
	
  	
  	
  -­‐k	
  [프로젝트 패키지]	
  –a	
  [생성할 액티비티 클래스명]	
  
빌드 관련 주요 파일들	
  
•    ant.properties:	
  	
  Key	
  store	
  관련 속성 지정	
  
•    project.properties:	
  프로젝트 관련 속성 (타겟 API	
  레벨, 의존 라이브러리
     프로젝트,	
  …)	
  
     •    android	
  update	
  project	
  커맨드를 사용하면 수정됨	
  
•    local.properties:	
  로컬 개발환경 속성 (SDK	
  설치 경로 등) 자동생성되므로
     수정하지 말 것.	
  
•    build.xml:	
  기본 제공하는 ant	
  빌드 스크립트. 수정하지 말자.	
  
기본 제공 target	
  
•    clean:	
  생성된 빌드 결과물 삭제	
  
•    debug:	
  디버그 빌드 생성	
  
•    release:	
  릴리즈 빌드 생성	
  
•    install,	
  install[d|r|i|t]:	
  만들어진 빌드 설치	
  
일단 ant	
  release	
  실행해 봅시다!	
  




 빌드에 성공하긴 하는데,	
  proguard와 signing은 이뤄지지 않음	
  
 è 이렇게 배포할 순 없다!	
  
릴리즈 키 적용	
  
Release	
  빌드 용 키를 만든 후,	
  ant.properties	
  에 키 정보를 등록함	
  
•  release	
  빌드 키는 이클립스에서 만들면 편해요	
  
•  보안을 위해 ant.properties	
  파일은 VCS에 넣지 말자!	
  
proguard	
  적용	
  
•  project.properties	
  에 proguard.config	
  추가	
  
•  proguard-­‐project.txt에 proguard 설정 등록	
  
   •  SDK의 기본 proguard	
  설정도 지정해두자	
  
ant	
  release	
  다시 실행	
  
•  proguard와 signing이 잘 이뤄졌다!	
  




   얼른 마켓에 올려서 재벌이 됩시다!	
  
자, 기본은 익혔으니	
  
  이제 본론으로!	
  
여러벌 빌드를 마구 만들어내려면?	
  
1.  서로 다른 설정을 적용한 apk들을 한번에 생성	
  
2.  설정별로 apk에 적절한 이름을 부여함	
  
  •      config	
  이름	
  
  •      버전 번호	
  
         ex)	
  myapp_dev_v1.0.apk	
  /	
  myapp_goog_play_v1.3.apk	
  
3.  기왕이면 서버에 업로드까지 하면 좋겠음	
  
  •      매번 QA팀 기계에 앱 심어주기 귀찮아~!	
  
  	
  
  	
  
설정 적용 방법 #1:	
  resource	
  xml	
  
res/values	
  에 설정정보 xml을 만들고, 앱에서 읽어들임	
  
  •    작성이 쉽고 	
  
  •    빌드를 자동화하기도 쉽지만 (파일만 복사하면 됨)	
  
  •    상속 등의 메커니즘을 사용할 수 없고	
  
  •    혹시나 새로 속성이 추가되면 xml	
  일일이 찾아 고쳐야 하고	
  
  •    xml을 별도의 디렉터리에 관리해야 함	
  
설정 적용 방법 #2:	
  config	
  구현체	
  
설정정보 인터페이스와 구현체 클래스를 만들어서 사용	
  
 •    코드를 작성하는 부담이 있고	
  
 •    빌드 자동화 하기도 쉽지 않지만 (코드를 직접 고쳐야 함)	
  
 •    상속 메커니즘을 사용할 수 있고	
  
 •    새로 속성이 추가되면 compile	
  time	
  error를 인지할 수 있으며
 •    별도의 장소에 class들을 관리할 필요가 없음	
  
설정 적용 방법 #2:	
  config	
  구현체	
  



              빌드 스크립트로 여길 갈아끼우는게 문제임!	
  
xml	
  / config	
  구현체 중 무엇을 택할까!	
  

    전 config	
  구현체를 택했습니다!	
  
•  생각보다 config 종류가 많아졌고	
  
•  버전업 하다보니 config 항목이 추가될 일도 종종 있고	
  
•  별도 디렉터리에 xml	
  관리하기가 너무 싫었습니다!	
  
여러벌 빌드 만들어내기 절차	
  
1.  새로운 build	
  script	
  를 만든다 (dist.xml)	
  
2.  다음 작업을 config 개수 만큼 수행한다	
  
    1.  MyApp	
  의 코드 중 Config	
  인스턴스 생성 코드를 갈아치운다.	
  
   2.  원래 build.xml 의 release	
  타겟을 호출한다.	
  
   3.  만들어진 apk	
  파일의 이름을 바꾸고, 적절한 디렉터리에 복사한다.	
  
       •  config마다 구분을 해야 하고, 후속 빌드의 overwrite 를 방지하며	
  
       •  clean으로 삭제되어 버리지 않도록	
  

      ant	
  만으론 이 작업이 쉽지 않다.	
  sed	
  등의 외부 도구를 적극 사용하자!	
  
여러벌 빌드 만들어내기 xml	
  


             버전마다 빨강 박스만 바뀐다	
  
여러벌 빌드 만들어내기 xml	
  	
  -­‐중복제거	
  
여러벌 빌드 만들어내기 실행	
  
설치해보자!	
  




 야~ 잘 된당~!	
  
여러벌 빌드를 마구 만들어내려면?	
  
1.  서로 다른 설정을 적용한 apk들을 한번에 생성	
  
2.  설정별로 apk에 적절한 이름을 부여함	
  
  •      config	
  이름	
  
  •      버전 번호	
  
         ex)	
  myapp_dev_v1.0.apk	
  /	
  myapp_goog_play_v1.3.apk	
  
3.  기왕이면 서버에 업로드까지 하면 좋겠음	
  
  •      매번 QA팀 기계에 앱 심어주기 귀찮아~!	
  
  	
  
  	
  
우린 이미 버전 번호를 갖고 있다!	
  

             근데 xml	
  중에서 어떻게 뽑아내지?	
  
             à	
  xpath!	
  
우린 이미 버전 번호를 갖고 있다!	
  
 •  Manifest의 versionName을 찾아가는 xpath	
  query:	
  	
  
          /manifest/@*[local-­‐name()='versionName']	
  
 •  Ant에서 xpath	
  를 이용하려면 3rd	
  party	
  library가 필요함.	
  
          ex)	
  XMLTask	
  http://www.oopsconsultancy.com/software/xmltask/	
  
 	
  
 	
  	
  

이제 XMLTask를 이용해 버전 이름을 뽑아낸 다음,	
  	
  
          파일명 뒤에 붙이자!	
  
                	
  
버전 번호 붙은 apk	
  만들기	
  
버전 번호 붙은 apk	
  만들기	
  
여러벌 빌드를 마구 만들어내려면?	
  
1.  서로 다른 설정을 적용한 apk들을 한번에 생성	
  
2.  설정별로 apk에 적절한 이름을 부여함	
  
  •      config	
  이름	
  
  •      버전 번호	
  
         ex)	
  myapp_dev_v1.0.apk	
  /	
  myapp_goog_play_v1.3.apk	
  
3.  기왕이면 서버에 업로드까지 하면 좋겠음	
  
  •      매번 QA팀 기계에 앱 심어주기 귀찮아~!	
  
  	
  
  	
  
apk도 준비됐으니 서버에 올려보자!	
  
안드로이드 웹 브라우저로 접근하면	
  
바로 apk	
  를 설치할 수 있다.	
  
à  QA,	
  기획자 디바이스에 일일이 USB	
  꼽아	
  
    설치해 줄 필요가 없다!	
  

이를 위해선	
  
•  apk를 서버에 업로드하고	
  
•  html 페이지를 생성해야 한다!	
  
작업 시나리오	
  
1.  index.html 파일 생성	
  
  •  ls	
  결과를 이용해 html 생성 (sed이용)	
  
2.  FTP	
  혹은 SFTP로 파일 전송	
  
  •  ant의 ftp나 sshexec	
  task	
  사용	
  
                                             구체적인 	
  
                                            작업 내용은	
  
                                           서버 환경에 따라	
  
                                            case	
  by	
  case!	
  
정리	
  
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.  하다보면 여러모로 맥이 편하다. 사장님 맥 사쥬세효!	
  
질문?	
  
고맙습니다!	
  
              샘플 프로젝트 URL:	
  	
  
https://github.com/kingori/android_ant_sample	
  	
  




                                      Datepresso 가입도 해 주셔요~	
  J	
  
1 sur 39

Recommandé

gradle로 안드로이드 앱 빌드하기 par
gradle로 안드로이드 앱 빌드하기gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기Manjong Han
25.2K vues26 diapositives
안드로이드를 위한 Gradle 맛들이기 par
안드로이드를 위한 Gradle 맛들이기안드로이드를 위한 Gradle 맛들이기
안드로이드를 위한 Gradle 맛들이기DongHwan Yu
14.1K vues44 diapositives
Gradle guide par
Gradle guideGradle guide
Gradle guideHwang Sun Oh Kelly
7K vues38 diapositives
20130709 gradle par
20130709 gradle20130709 gradle
20130709 gradleSukjin Yun
7.2K vues42 diapositives
그레이들(Gradle)로 만드는 안드로이드 요리법 par
그레이들(Gradle)로 만드는 안드로이드 요리법그레이들(Gradle)로 만드는 안드로이드 요리법
그레이들(Gradle)로 만드는 안드로이드 요리법양 한빛
3.1K vues35 diapositives
무식하게 배우는 gradle par
무식하게 배우는 gradle무식하게 배우는 gradle
무식하게 배우는 gradleJi Heon Kim
27.3K vues27 diapositives

Contenu connexe

Tendances

Gradle 사용하기 par
Gradle 사용하기Gradle 사용하기
Gradle 사용하기jiseob kim
1.5K vues8 diapositives
그루비 소개 발표자료 - 김연수 par
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수Yeon Soo Kim
11.2K vues24 diapositives
스프링 프로젝트 시작하기 par
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기Ashal aka JOKER
8K vues101 diapositives
Logcat과 함께 하는 모바일 웹 디버깅 par
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅JinKwon Lee
1.2K vues10 diapositives
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project par
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
6.8K vues26 diapositives
Angular Seminar [한빛미디어 리얼타임 세미나] par
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Woojin Joe
4.7K vues90 diapositives

Tendances(20)

Gradle 사용하기 par jiseob kim
Gradle 사용하기Gradle 사용하기
Gradle 사용하기
jiseob kim1.5K vues
그루비 소개 발표자료 - 김연수 par Yeon Soo Kim
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수
Yeon Soo Kim11.2K vues
스프링 프로젝트 시작하기 par Ashal aka JOKER
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기
Ashal aka JOKER8K vues
Logcat과 함께 하는 모바일 웹 디버깅 par JinKwon Lee
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅
JinKwon Lee1.2K vues
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project par Ji-Woong Choi
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
Ji-Woong Choi6.8K vues
Angular Seminar [한빛미디어 리얼타임 세미나] par Woojin Joe
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]
Woojin Joe4.7K vues
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드 par NAVER Engineering
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
안드로이드 빌드 with Gradle par haesunglee5
안드로이드 빌드 with Gradle안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle
haesunglee548 vues
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope... par JinKwon Lee
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee1.4K vues
Angular는 사실 어렵지 않습니다. par 장현 한
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
장현 한1.4K vues
Modern Android App Development par Chi Hwan Choi
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
Chi Hwan Choi1.3K vues
이클립스 플랫폼 par Kenu, GwangNam Heo
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Spring Boot + React + Gradle in VSCode par dpTablo
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
dpTablo5.9K vues
Flipper 불완전 정복 par Sewon Ann
Flipper 불완전 정복Flipper 불완전 정복
Flipper 불완전 정복
Sewon Ann2K vues
Welcome to Android Studio par WonKyun Lim
Welcome to Android StudioWelcome to Android Studio
Welcome to Android Studio
WonKyun Lim2.3K vues
[D2 오픈세미나]5.html5 api 테트리스게임_이진권 par NAVER D2
[D2 오픈세미나]5.html5 api 테트리스게임_이진권[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
NAVER D29.5K vues
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발 par Jinuk Kim
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim5.4K vues
Ionic으로 모바일앱 만들기 #5 par 성일 한
Ionic으로 모바일앱 만들기 #5Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #5
성일 한15.1K vues
Ionic으로 모바일앱 만들기 #1 par 성일 한
Ionic으로 모바일앱 만들기 #1Ionic으로 모바일앱 만들기 #1
Ionic으로 모바일앱 만들기 #1
성일 한26.6K vues

En vedette

[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발 par
[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발
[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발JongEun Lee
5.8K vues59 diapositives
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310 par
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310JongEun Lee
13.9K vues67 diapositives
Leadership Guide, 초보팀장을 위한 리더십 가이드 par
Leadership Guide, 초보팀장을 위한 리더십 가이드Leadership Guide, 초보팀장을 위한 리더십 가이드
Leadership Guide, 초보팀장을 위한 리더십 가이드Jinho Jung
20.2K vues107 diapositives
NVIDIA GRID K2とVDIにおけるCAD利用の評価 par
NVIDIA GRID K2とVDIにおけるCAD利用の評価NVIDIA GRID K2とVDIにおけるCAD利用の評価
NVIDIA GRID K2とVDIにおけるCAD利用の評価Dell TechCenter Japan
7.1K vues12 diapositives
메이븐 기본 이해 par
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
36.3K vues28 diapositives
주키퍼 par
주키퍼주키퍼
주키퍼Junkwang Lee
5.5K vues14 diapositives

En vedette(20)

[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발 par JongEun Lee
[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발
[Jscamp] Titanium - Javascript를 이용한 크로스 플랫폼 앱 개발
JongEun Lee5.8K vues
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310 par JongEun Lee
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
Titanium 소개 - 당신이 알고 있는 타이타늄 rev.201310
JongEun Lee13.9K vues
Leadership Guide, 초보팀장을 위한 리더십 가이드 par Jinho Jung
Leadership Guide, 초보팀장을 위한 리더십 가이드Leadership Guide, 초보팀장을 위한 리더십 가이드
Leadership Guide, 초보팀장을 위한 리더십 가이드
Jinho Jung20.2K vues
메이븐 기본 이해 par 중선 곽
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽36.3K vues
하이브리드 앱_개발_개요 par BongSoo Jang
하이브리드 앱_개발_개요하이브리드 앱_개발_개요
하이브리드 앱_개발_개요
BongSoo Jang15.9K vues
프로젝트에서 Sw아키텍트의 역할 20140717 par Young On Kim
프로젝트에서 Sw아키텍트의 역할 20140717프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717
Young On Kim11.6K vues
젠킨스 설치 및 설정 par 중선 곽
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
중선 곽26.7K vues
[1A5]효율적인안드로이드앱개발 par NAVER D2
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
NAVER D219.2K vues
안드로이드 플랫폼기반의 푸시서버 아키텍처 par JavaCommunity.Org
안드로이드 플랫폼기반의 푸시서버 아키텍처안드로이드 플랫폼기반의 푸시서버 아키텍처
안드로이드 플랫폼기반의 푸시서버 아키텍처
JavaCommunity.Org18.3K vues
모바일 메신저 아키텍쳐 소개 par Hyogi Jung
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
Hyogi Jung23.2K vues
Apache ZooKeeper 로
 분산 서버 만들기 par iFunFactory Inc.
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
iFunFactory Inc.7.9K vues
화성에서 온 개발자, 금성에서 온 기획자 par Yongho Ha
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
Yongho Ha48.9K vues
지금 핫한 Real-time In-memory Stream Processing 이야기 par Ted Won
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
Ted Won20.6K vues
Facebook's Growth Hacker on how they put Facebook on the Path to 1 Billion Users par growthhackersconference
Facebook's Growth Hacker on how they put Facebook on the Path to 1 Billion UsersFacebook's Growth Hacker on how they put Facebook on the Path to 1 Billion Users
Facebook's Growth Hacker on how they put Facebook on the Path to 1 Billion Users
SW 아키텍처 분석방법 par YoungSu Son
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
YoungSu Son9K vues
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트 par mosaicnet
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
mosaicnet18.4K vues
спілкуватися з дитиною.як par inna snna
спілкуватися з дитиною.якспілкуватися з дитиною.як
спілкуватися з дитиною.як
inna snna1.1K vues

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

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍 par
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
2.2K vues44 diapositives
청강대 특강 - 프로젝트 제대로 해보기 par
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
3.2K vues86 diapositives
[123] electron 김성훈 par
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
7.9K vues46 diapositives
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기 par
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
2.5K vues155 diapositives
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해 par
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해Koreatech
123 vues83 diapositives
피니엔진 par
피니엔진피니엔진
피니엔진승우 백
1.7K vues69 diapositives

Similaire à ant로 안드로이드 앱을 자동으로 빌드하자(20)

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍 par Chris Ohk
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk2.2K vues
청강대 특강 - 프로젝트 제대로 해보기 par Chris Ohk
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk3.2K vues
[123] electron 김성훈 par NAVER D2
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D27.9K vues
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기 par Chanwoong Kim
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim2.5K vues
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해 par Koreatech
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해
빌드툴과 소켓 통신(TCP/UDP + IO/NIO)에 대한 이해
Koreatech123 vues
Project anarchy로 3 d 게임 만들기 part_1 par Dong Chan Shin
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
Dong Chan Shin777 vues
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal par OnGameServer
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
OnGameServer2.2K vues
20170813 django api server unit test and remote debugging par Jongwon Han
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han1.3K vues
CI in the Mobile World (한글번역) par DONGSU KIM
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM6.5K vues
[NDC17] 왓 스튜디오 서비스파트 par Chanwoong Kim
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim4.6K vues
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍 par NDOORS
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
NDOORS3K vues
Bon voyage Docker_Kubernetes par ssuseraada82
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
ssuseraada8243 vues
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~ par YEONG-CHEON YOU
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
YEONG-CHEON YOU7.4K vues
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천) par Sang Don Kim
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim1.9K vues
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017 par Amazon Web Services Korea
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
bamboo 로 PHP 프로젝트 지속적인 배포 par KwangSeob Jeong
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
KwangSeob Jeong6.2K vues
React native development par SangSun Park
React native developmentReact native development
React native development
SangSun Park1.2K vues
안드로이드 개발에 유용한 도구들 par Sewon Ann
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
Sewon Ann3.9K vues

Plus de Sewon Ann

Android studio 디버거 조금 더 잘 쓰기 par
Android studio 디버거 조금 더 잘 쓰기Android studio 디버거 조금 더 잘 쓰기
Android studio 디버거 조금 더 잘 쓰기Sewon Ann
6.3K vues23 diapositives
지금은 Constraint layout 시대 par
지금은 Constraint layout 시대지금은 Constraint layout 시대
지금은 Constraint layout 시대Sewon Ann
11.8K vues60 diapositives
백엔드 서버 구축없이 모바일 앱앱 만들어보기 par
백엔드 서버 구축없이 모바일 앱앱 만들어보기백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기Sewon Ann
7.4K vues52 diapositives
Framer js a/s talk par
Framer js a/s talkFramer js a/s talk
Framer js a/s talkSewon Ann
1.4K vues13 diapositives
develop android app using intellij par
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
6.3K vues25 diapositives
Google Hackathon Korea - hangout mafia par
Google Hackathon Korea - hangout mafiaGoogle Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafiaSewon Ann
907 vues8 diapositives

Plus de Sewon Ann(7)

Android studio 디버거 조금 더 잘 쓰기 par Sewon Ann
Android studio 디버거 조금 더 잘 쓰기Android studio 디버거 조금 더 잘 쓰기
Android studio 디버거 조금 더 잘 쓰기
Sewon Ann6.3K vues
지금은 Constraint layout 시대 par Sewon Ann
지금은 Constraint layout 시대지금은 Constraint layout 시대
지금은 Constraint layout 시대
Sewon Ann11.8K vues
백엔드 서버 구축없이 모바일 앱앱 만들어보기 par Sewon Ann
백엔드 서버 구축없이 모바일 앱앱 만들어보기백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기
Sewon Ann7.4K vues
Framer js a/s talk par Sewon Ann
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
Sewon Ann1.4K vues
develop android app using intellij par Sewon Ann
develop android app using intellijdevelop android app using intellij
develop android app using intellij
Sewon Ann6.3K vues
Google Hackathon Korea - hangout mafia par Sewon Ann
Google Hackathon Korea - hangout mafiaGoogle Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafia
Sewon Ann907 vues
Spring 3의 jsr 303 지원 par Sewon Ann
Spring 3의 jsr 303 지원Spring 3의 jsr 303 지원
Spring 3의 jsr 303 지원
Sewon Ann5.1K vues

Dernier

Exploring Deep Learning Acceleration Technology Embedded in LLMs par
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
26 vues53 diapositives
성능 테스트 par
성능 테스트성능 테스트
성능 테스트Wonjun Hwang
8 vues13 diapositives
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략 par
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략Open Source Consulting
111 vues25 diapositives
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 par
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기Jinkyoung Kim
46 vues139 diapositives
CES 처음 가는 분을 위한 가이드 par
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드Minsuk Lee
650 vues31 diapositives
AD의 TAD와 협업.pptx par
AD의 TAD와 협업.pptxAD의 TAD와 협업.pptx
AD의 TAD와 협업.pptxVisual Tech Dev
50 vues24 diapositives

Dernier(7)

Exploring Deep Learning Acceleration Technology Embedded in LLMs par Tae Young Lee
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Tae Young Lee26 vues
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략 par Open Source Consulting
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 par Jinkyoung Kim
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
Jinkyoung Kim46 vues
CES 처음 가는 분을 위한 가이드 par Minsuk Lee
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드
Minsuk Lee650 vues

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

  • 1. 자동으로~   Ant로 안드로이드 앱을 빌드하자!   안세원 kingori@gmail.com   2012.5  
  • 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이 잘 이뤄졌다!   얼른 마켓에 올려서 재벌이 됩시다!  
  • 18. 자, 기본은 익혔으니   이제 본론으로!  
  • 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  등의 외부 도구를 적극 사용하자!  
  • 25. 여러벌 빌드 만들어내기 xml   버전마다 빨강 박스만 바뀐다  
  • 26. 여러벌 빌드 만들어내기 xml    -­‐중복제거  
  • 28. 설치해보자!   야~ 잘 된당~!  
  • 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를 이용해 버전 이름을 뽑아낸 다음,     파일명 뒤에 붙이자!    
  • 32. 버전 번호 붙은 apk  만들기  
  • 33. 버전 번호 붙은 apk  만들기  
  • 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.  하다보면 여러모로 맥이 편하다. 사장님 맥 사쥬세효!  
  • 39. 고맙습니다!   샘플 프로젝트 URL:     https://github.com/kingori/android_ant_sample     Datepresso 가입도 해 주셔요~  J