Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

23,030 views

Published on

gradle을 이용하여 Android 앱의 빌드를 관리하는 방법을 소개합니다.

Published in: Software
  • Be the first to comment

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

  1. 1. gradle로 안드로이드 앱 빌드하기 2015.01.22 이화앱센터 안드로이드팀장 한만종
  2. 2. 안드로이드 앱 빌드? • 마켓플레이스 별: PlayStore, T-Store, … • 제품 별: 무료버전, 유료버전, … • 용도 별: 사내 개발용/시험용, 디버깅용, 배포용,…
  3. 3. 안드로이드 앱 빌드? 빌드도구를 이용한 빌드 자동화 필요
  4. 4. Google I/O 2013 Intelli J 기반의 Android Studio와 함께 gradle을 이용한 Android 어플리케이션 프로젝트 빌드 공식 지원
  5. 5. gradle? Ant의 유연성과 Maven의 의존성 관리를 컨셉으로 한 Groovy 기반의 프로젝트 자동화 도구
  6. 6. gradle? • 다중 프로젝트 빌드 지원 • Groovy 기반의 DSL(Domain Specific Language) • Gradle Wrapper를 통해 Gradle이 설치되지 않은 환경도 지원
  7. 7. 이클립스 프로젝트 Migration • Android Studio 1.0에서 원클릭으로 제공 • 의존적인 프로젝트까지 자동으로 Migration
  8. 8. 이클립스 프로젝트 Migration 이클립스 프로젝트 Android Studio 프로젝트
  9. 9. 프로젝트/settings.gradle 빌드하고자 하는 모듈 정의
  10. 10. 프로젝트/build.gradle 프로젝트 gradle 설정(repository, plugin, …)
  11. 11. 프로젝트/모듈/build.gradle • ApplicationId: 어플리케이션 패키 지명 설정 • minifyEnabled: ProGuard 활성 여부 설정
  12. 12. 프로젝트/모듈/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 }
  13. 13. 프로젝트/모듈/build.gradle • compile project(‘:모듈명’) - 같은 프로젝트 내 모듈 의존 • compile ‘저장소명’ - 외부 저장소 로부터 의존 • compile files(‘파일명’) - 같은 모 듈 내 라이브러리 파일 의존
  14. 14. 빌드하기 • gradle을 시스템에 설치 후 수동으로 명령 $ gradle • gradlew를 이용하여 수동으로 명령 $ gradlew • Android Studio를 이용하여 내장된 gradle을 이용
  15. 15. 빌드하기 • 모든 task(Variant, Build Type, Product Flavor)를 한꺼번에 빌드 $ gradlew assemble • 특정 task만 빌드 $ gradlew assemble task명 • test를 포함한 모든 task를 빌드 $ gradlew build
  16. 16. Build Variants • 하나의 앱에 대해 다양한 빌드를 가능케 함. • Build Variant = Build Type + Product Flavor
  17. 17. Build Variants
  18. 18. Build Type android { buildTypes { debug { … } release { … } } }
  19. 19. Build Type • debug와 release: 디버깅용과 배포용으로 나누어 빌드할 경우 • 디버깅용에는 개발용 서버 연동, 오류보고 사용안함, 배포용과 중 복 설치되도록, … • 배포용에는 명확한 버전명 표기, Logcat이 출력되지 않도록, 배 포용 키로 apk 사인, 배포용 서버 연동, … • 배포용 빌드 시마다 versionCode 자동 증가 • BuildConfig 필드 추가/수정
  20. 20. Build Type • AndroidManifest.xml에 작성된 versionCode를 증가시키는 Groovy DSL Gradle task http://stackoverflow.com/a/17525195/2677760
  21. 21. Build Type • signingConfigs android { signingConfigs { … } }
  22. 22. Product Flavor android { productFlavors { tstore { … } playstore { … } } }
  23. 23. Product Flavor • 사용자 정의가 가능한 빌드 타입 • 티스토어, 플레이스토어 등 마켓플레이스 별 빌드 시에 용이 • 마켓플레이스 별 업데이트 링크 주소 부여, 결제모듈 등 기능 차별 화, 버전 이름 구분, … • git과 연동해서 현재 tag 또는 branch 명으로부터 versionName 명명
  24. 24. Product Flavor • git으로부터 tag명을 가져와 versionName형식을 만들어주는 Groovy DSL 함수 http://stackoverflow.com/a/18021756/2677760
  25. 25. 참고할만한 링크들 • 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/
  26. 26. 감사합니다. 이화앱센터 안드로이드팀장 한만종 han@manjong.org

×