참조 : Configuring Gradle Builds
안드로이드 프로젝트를 생성하면, 프로젝트 및 모듈 내에 build.gradle 파일이 생성된다. 우리는 이 파일을 입맛대로 변경함으로써 빌드 환경을 마음대로 주무를 수 있다. 프로젝트 파일을 새로 만들게 되면 아래와 같은 build.gradle 파일이 하나 생기게 된다.
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "net.yatopark.testapp" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } signingConfigs { } productFlavors { } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' }
하나씩 옵션에 대해서 살펴보도록 하자.
1. apply plugin: ‘com.android.application’
apply plugin: ‘com.android.application’은 안드로이드 플러그인 사용을 gradle에 적용하는 것이다. 이 옵션은 top-level에서 선언되어야 한다.
2. android {…}
안드로이드와 관련된 빌드 설정은 이곳 안에서 세팅 된다.
3. compileSdkVersion, buildToolsVersion
compileSdkVersion은 앱 컴파일시 사용할 SDK 버전을 지정한다. buildToolsVersion 역시 사용할 빌드툴의 버전을 명시하는 부분이다.
4. defaultConfig{…}
AndroidManifest.xml에서 사용하는 설정들에 대해서 동적인 옵션을 주고 싶을 때 이 블록내에 포함시킨다. 예를들면 versionCode나 versionName등의 값을 이곳에서 설정 할 수 있다.
5. buildTypes{…}
dev, alpha, beta, release 같이 빌드 타입 종류를 지정한다. 당연히도 이러한 빌드 타입에 따라서 minify나 proguard 설정, 사이닝 키 설정도 이곳에서 해야 한다.
//... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.myReleaseKey } } //...
6. signingConfigs{…}
앱 서명을 위한 사이닝 키 설정을 이곳에서 한다. 키스토어 파일 경로를 지정하고 keyAlias, keyPassword, storePassword를 설정해주면 되긴 하는데 build.gradle 파일에다가 패스워드 정보를 집어넣는건 보안에 좋지 않으므로 다음과 같이 환경변수로 가져오도록 한다.
// ... signingConfigs { myReleaseKey { keyAlias System.getenv("KEY_ALIAS") keyPassword System.getenv("KEY_PASSWORD") storeFile file('myReleaseKey.keystore') storePassword System.getenv("KEYSTORE_PASSWORD") } } // ...
7. productFlavors{…}
앱 자체의 특성을 다르게 하여 빌드할 때 사용한다. 예를들면 release 빌드이긴 한데 pro버전/free버전을 따로 내고 싶은 경우 productFlavor를 추가하여 쉽게 빌드 할 수 있다.
// ... productFlavors { pro { applicationId = "com.example.my.pkg.pro" } free { applicationId = "com.example.my.pkg.free" } } // ...
8. dependencies{…}
라이브러리와 같은 의존성 추가 시 이곳에 작성한다. MVN 중앙저장소에 있는 라이브러리를 그대로 사용할 수 있다.
// ... dependencies { // Module dependency compile project(":lib") // Remote binary dependency compile 'com.android.support:appcompat-v7:19.0.1' // Local binary dependency compile fileTree(dir: 'libs', include: ['*.jar']) } // ...
답글 남기기