26
gradle 안드로이드 빌드하기 2015.01.22 이화앱센터 안드로이드팀장 한만종

gradle로 안드로이드 앱 빌드하기

Embed Size (px)

Citation preview

Page 1: gradle로 안드로이드 앱 빌드하기

gradle로 안드로이드 앱 빌드하기2015.01.22

이화앱센터 안드로이드팀장 한만종

Page 2: gradle로 안드로이드 앱 빌드하기

안드로이드 앱 빌드?

• 마켓플레이스 별: PlayStore, T-Store, …

• 제품 별: 무료버전, 유료버전, …

• 용도 별: 사내 개발용/시험용, 디버깅용, 배포용,…

Page 3: gradle로 안드로이드 앱 빌드하기

안드로이드 앱 빌드?

빌드도구를 이용한 빌드 자동화 필요

Page 4: gradle로 안드로이드 앱 빌드하기

Google I/O 2013

Intelli J 기반의 Android Studio와 함께 gradle을 이용한 Android 어플리케이션 프로젝트 빌드 공식 지원

Page 5: gradle로 안드로이드 앱 빌드하기

gradle?

Ant의 유연성과 Maven의 의존성 관리를 컨셉으로 한 Groovy 기반의 프로젝트 자동화 도구

Page 6: gradle로 안드로이드 앱 빌드하기

gradle?

• 다중 프로젝트 빌드 지원

• Groovy 기반의 DSL(Domain Specific Language)

• Gradle Wrapper를 통해 Gradle이 설치되지 않은 환경도 지원

Page 7: gradle로 안드로이드 앱 빌드하기

이클립스 프로젝트 Migration• Android Studio 1.0에서 원클릭으로 제공

• 의존적인 프로젝트까지 자동으로 Migration

Page 8: gradle로 안드로이드 앱 빌드하기

이클립스 프로젝트 Migration

이클립스 프로젝트 Android Studio 프로젝트

Page 9: gradle로 안드로이드 앱 빌드하기

프로젝트/settings.gradle

빌드하고자 하는 모듈 정의

Page 10: gradle로 안드로이드 앱 빌드하기

프로젝트/build.gradle

프로젝트 gradle 설정(repository, plugin, …)

Page 11: gradle로 안드로이드 앱 빌드하기

프로젝트/모듈/build.gradle

• ApplicationId: 어플리케이션 패키지명 설정

• minifyEnabled: ProGuard 활성여부 설정

Page 12: gradle로 안드로이드 앱 빌드하기

프로젝트/모듈/build.gradle• Android KitKat부터 Java 1.7과 호환

(다이아몬드 연산자, 다중 catch, switch문에서 String형 지원 등) 설정

compileSdkVersion 19

buildToolsVersion “19.0.0”

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

Page 13: gradle로 안드로이드 앱 빌드하기

프로젝트/모듈/build.gradle

• compile project(‘:모듈명’) - 같은 프로젝트 내 모듈 의존

• compile ‘저장소명’ - 외부 저장소로부터 의존

• compile files(‘파일명’) - 같은 모듈 내 라이브러리 파일 의존

Page 14: gradle로 안드로이드 앱 빌드하기

빌드하기

• gradle을 시스템에 설치 후 수동으로 명령

$ gradle

• gradlew를 이용하여 수동으로 명령

$ gradlew

• Android Studio를 이용하여 내장된 gradle을 이용

Page 15: gradle로 안드로이드 앱 빌드하기

빌드하기

• 모든 task(Variant, Build Type, Product Flavor)를 한꺼번에 빌드

$ gradlew assemble

• 특정 task만 빌드

$ gradlew assemble task명

• test를 포함한 모든 task를 빌드

$ gradlew build

Page 16: gradle로 안드로이드 앱 빌드하기

Build Variants

• 하나의 앱에 대해 다양한 빌드를 가능케 함.

• Build Variant = Build Type + Product Flavor

Page 17: gradle로 안드로이드 앱 빌드하기

Build Variants

Page 18: gradle로 안드로이드 앱 빌드하기

Build Type

android { buildTypes { debug { …

} release { …

} }

}

Page 19: gradle로 안드로이드 앱 빌드하기

Build Type• debug와 release: 디버깅용과 배포용으로 나누어 빌드할 경우

• 디버깅용에는 개발용 서버 연동, 오류보고 사용안함, 배포용과 중복 설치되도록, …

• 배포용에는 명확한 버전명 표기, Logcat이 출력되지 않도록, 배포용 키로 apk 사인, 배포용 서버 연동, …

• 배포용 빌드 시마다 versionCode 자동 증가

• BuildConfig 필드 추가/수정

Page 20: gradle로 안드로이드 앱 빌드하기

Build Type• AndroidManifest.xml에 작성된 versionCode를 증가시키는

Groovy DSL Gradle task

http://stackoverflow.com/a/17525195/2677760

Page 21: gradle로 안드로이드 앱 빌드하기

Build Type• signingConfigs

android { signingConfigs { …

} }

Page 22: gradle로 안드로이드 앱 빌드하기

Product Flavor

android { productFlavors { tstore { …

} playstore { …

} }

}

Page 23: gradle로 안드로이드 앱 빌드하기

Product Flavor

• 사용자 정의가 가능한 빌드 타입

• 티스토어, 플레이스토어 등 마켓플레이스 별 빌드 시에 용이

• 마켓플레이스 별 업데이트 링크 주소 부여, 결제모듈 등 기능 차별화, 버전 이름 구분, …

• git과 연동해서 현재 tag 또는 branch 명으로부터 versionName 명명

Page 24: gradle로 안드로이드 앱 빌드하기

Product Flavor• git으로부터 tag명을 가져와 versionName형식을 만들어주는

Groovy DSL 함수

http://stackoverflow.com/a/18021756/2677760

Page 25: gradle로 안드로이드 앱 빌드하기

참고할만한 링크들• http://tools.android.com/tech-docs/new-build-system/user-guide

• http://tools.android.com/build/gradleplugin

• http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

• http://developer.android.com/tools/building/configuring-gradle.html

• http://developer.android.com/tools/building/plugin-for-gradle.html

• http://blog.proinlab.com/?p=1412

• http://toastdroid.com/2014/03/28/customizing-your-build-with-gradle/

Page 26: gradle로 안드로이드 앱 빌드하기

감사합니다.이화앱센터 안드로이드팀장 한만종

[email protected]