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

  • View
    3.124

  • Download
    3

  • Category

    Software

Preview:

Citation preview

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

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

안드로이드 앱 빌드?

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

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

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

안드로이드 앱 빌드?

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

Google I/O 2013

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

gradle?

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

gradle?

• 다중 프로젝트 빌드 지원

• Groovy 기반의 DSL(Domain Specific Language)

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

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

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

이클립스 프로젝트 Migration

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

프로젝트/settings.gradle

빌드하고자 하는 모듈 정의

프로젝트/build.gradle

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

프로젝트/모듈/build.gradle

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

• minifyEnabled: ProGuard 활성여부 설정

프로젝트/모듈/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

}

프로젝트/모듈/build.gradle

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

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

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

빌드하기

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

$ gradle

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

$ gradlew

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

빌드하기

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

$ gradlew assemble

• 특정 task만 빌드

$ gradlew assemble task명

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

$ gradlew build

Build Variants

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

• Build Variant = Build Type + Product Flavor

Build Variants

Build Type

android { buildTypes { debug { …

} release { …

} }

}

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

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

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

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

• BuildConfig 필드 추가/수정

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

Groovy DSL Gradle task

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

Build Type• signingConfigs

android { signingConfigs { …

} }

Product Flavor

android { productFlavors { tstore { …

} playstore { …

} }

}

Product Flavor

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

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

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

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

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

Groovy DSL 함수

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

참고할만한 링크들• 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/

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

han@manjong.org

Recommended