Skip to main content

[Android] GDG Gradle CodeLab 을 다녀와서...

연휴 첫날.. GDG Android 에서 Gradle CodeLab 을 한다는 이야기를 듣고.. 어제 급하게 신청했는데 다행이 참가 메일이 와서 참석하게 되었습니다.

Google I/O 13 이후로 Gradle 의 인기가 날로 높아져 가고 있습니다. 사실 그동안 Android 에서 외부 라이브러리를 사용하기 위해 Maven 을 대부분 사용하고 있었고, 기본적으로는 Ant 를 지원하고 있습니다.
하지만 둘다 사용하기는 쉽지않습니다. 더욱이 Android 개발도 버거운데 Build 를 위해 Ant 나 Maven 을 별도로 공부해야 한다는 부담감도 존재합니다.
그래서 처음 Gradle 을 새로운 빌드시스템으로 선택한다는 이야기를 들었을 때에도 그닥 반갑지는 않았습니다. 유명한 라이브러리들은 대부분  Maven 을 지원하고 있고, 또 새로운 빌드 시스템을 공부해야 한다는 생각이 들었던거죠.

하지만 오늘 CodeLab 을 다녀오면서 Gradle 은 배울만한 충분한 가치가 있다는 생각이 들었습니다.

1.발표 프리젠테이션

2. Github CodeLab Repo

Gradle 은 Groovy 를 기본 언어로 채택하고 있습니다. 따라서 Groovy 를 잘 알고 있다면 그만큼 효율성을 높일 수 있습니다.
하지만.. 오늘 CodeLab 만으로도 Android 개발에 필요한 기능들을 충분히 알아볼 수 있었습니다.

특히. Flavor 기능은 정말 유용했습니다.

대부분 현업에서 debug, release 용으로 빌드시, 빌드넘버나 기타 변경사항을 수정하고 하는 과정에서 실수하기 쉬운데, 이러한 것들을 미리 정의해 놓을 수 있다는 점은 정말 큰 장점 이였습니다.

또한, Manifest 에서 정의했던 versionName, versionCode 등을 build.gradle 에서 관리한다는 점도 새로웠습니다. Build Customization 을 통해 빌드를 위해 Manifest 를 수정하는 수고를 덜 수 있었습니다.

실습도 Gradle 기본 기능보다는 Android Build 시 실무에 바로 사용할 수 있는 기능 위주로 구성되어 정말 유익했습니다.

앞으로 Gradle 과 Android Studio 를 실무에 좀 더 접목시킬 수 있겠다는 생각 이 들었습니다.
다만 아직 까지도 Gradle Android Plugin 이 Gradle 최신 버전에서 버그가 있는것 같아 무조건 최신버전을 사용하긴 어려울 것으로 보입니다.

Comments

Popular posts from this blog

[Android Application Testing Guide] Chapter3 jar file

Android Application Testing Guide(에이콘) 3장 Sample 을 실행시키기 위해서는 libdummy-0.0.1.jar 가 필요한데, sample file 에는 프로젝트만 존재한다. 결국 jar 를 만들어야 되는데.. ant 빌드다. 어허허... jar 파일이 없으면 예제 진행이 어려우므로. ant build 한 jar 를 첨부. libdummy-0.0.1.jar download

[번역] A journey on the Android Main Thread - Part 1

본 문서는 square engineering blog 에 기재된 A journey on the Android Main Thread - Part 1 기사를 번역한 것 입니다. coding horrer 에 왜 우리는 소스 읽는 법 을 배워야 하는가 에 대한 기사 가 있습니다. 안드로이드의 가장 큰 특징 중 하나는 오픈소스 생태계 라는 점 입니다. PSVM (public static void main) public class BigBang {   public static void main ( String ... args ) {     // The Java universe starts here.   } } 모든 자바 프로그램은 public static void main() 메소드를 호출하면서 시작합니다. 이는 자바 데스크탑 프로그램, JEE 서블릿 컨테이너, 안드로이드 애플리케이션 이 모두 동일 합니다. 안드로이드 시스템은 부팅 단계에서 ZygoyteInit 이라 불리는 리눅스 프로세스를 실행합니다. 이 프로세스는 달빅VM 으로, 쓰레드에 안드로이드 SDK 의 대부분의 클래스 를 로드 하고 대기합니다. 새로운 안드로이드 애플리케이션을 시작할 때, 안드로이드 시스템은 ZygoteInit 프로세스를 포크 하게 됩니다. 포크된 자식 프로세스의 쓰레드는 대기를 해제하고, ActivityThread.main() 메소드를 호출합니다. 위키피디아 에 정의된 zygote 란 수정란을 의미합니다. Loopers 계속 진행하기 앞서, 우리는 Looper (이하 루퍼) 클래스를 살펴 볼 필요가 있습니다. 루퍼를 사용하는 것은 하나의 쓰레드가 메시지들을 연속해서 실행하도록 하는 좋은 방법 입니다. 각각의 루퍼는 메시지 객체의 큐를 지니고 있습니다. (이를 메시지 큐 MessageQueue 라고 합니다.) 루퍼는...

[Cobertura] cobertura 2.0.2 script fix

cobertura 2.0.2 버전을 다운받고 실행 시키려고 하면 엄청난 에러가 뿜어져 나온다. ㅠ 달리 설정을 틀리게 한 것도 없는데.. 하면서 script 를 열어보니 아래와 같이 작성되어 있다. - cobertura-instrument.sh java -cp `dirname $0`/cobertura.jar:`dirname $0`/lib/asm-3.3.1.jar:`dirname $0`/lib/asm-tree-3.3.1.jar:`dirname $0`/lib/asm-commons-3.3.1.jar:`dirname $0`/lib/log4j-1.2.9.jar:`dirname $0`/lib/jakarta-oro-2.0.8.jar net.sourceforge.cobertura.instrument.Main $* - cobertura-instrument.bat java -cp "%COBERTURA_HOME%cobertura.jar;%COBERTURA_HOME%lib\asm-3.3.1.jar;%COBERTURA_HOME%lib\asm-tree-3.3.1.jar;%COBERTURA_HOME%lib\asm-commons-3.3.1.jar;%COBERTURA_HOME%lib\log4j-1.2.9.jar;%COBERTURA_HOME%lib\jakarta-oro-2.0.8.jar" net.sourceforge.cobertura.instrument.Main %CMD_LINE_ARGS% 그런데 막상 다운받은 folder 구조를 보면.. cobertura-2.0.2.jar /lib     - asm-4.1.jar     - asm-commons-4.1.jar     - sam-tree-4.1.jar     - oro-2.0.8.jar .... script 왜 이렇게 되있지... 결국 cobertura 를 실행 시키기 위해서는 script 에서 버전 및 파일명을 다운받은 폴더...