본문 바로가기
공부하는 하스씨/안드로이드

[삽질] 한 프로젝트로 다양한 APK 빌드 구조 만들기.

by 박하스. 2015. 10. 29.
728x90
반응형

apply plugin: 'com.android.application'


android {
compileSdkVersion 21
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.parkhaas.base"
minSdkVersion 18
targetSdkVersion 19
versionCode 1
versionName "0.1.0"
}
productFlavors {
Tistory {
applicationId 'com.parkhaas.tistory'
versionCode 1
versionName "0.1.0"
}
NaverBlog {
applicationId 'com.parkhaas.naverblog'
versionCode 1
versionName "0.1.0"
}
DaumBlog {
applicationId 'com.parkhaas.daumblog'
versionCode 1
versionName "0.1.0"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

debug {
versionNameSuffix '-debug'
}
}

applicationVariants.all { variant ->
variant.outputs.each { output ->
String apkName = "aridheart_" + variant.productFlavors.name[0] + "_" + variant.versionName + ".apk"
output.outputFile = new File(output.outputFile.parent, apkName)
}
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':myLibrary')
}



build.gradle 내용을 이렇게 하고.

Override 하고 싶은 리소스 파일들은



app

ㄴ src

ㄴ DaumBlog

ㄴ main

ㄴ NaverBlog

ㄴ Tistory

ㄴ res

ㄴ values

ㄴ strings.xml



와 같이 main 에서 Java 와 res 의 구조를 지켜서 정의하면 된다.


main 의 strings.xml 에 있는 item 들중에 변경하고 싶은 item 만 productFlavors 들에 있는 strings.xml 에서 정의하면 된다.

이를테면 app_name 같은 거.



위 build.gradle 을 사용하면


자동으로 생성되는 디버그 APK 파일은 app / build / outputs / apk 폴더아래에

> aridheart_Tistory_0.1.0-debug.apk

의 형태로 떨어진다.


이렇게 생생된 각각의 APK 들은

각각의 packageName 을 가지는 완전히 별개의 앱이 된다. (한 디바이스에 세가지를 모두 설치 하는 게 가능하다)


keystore 를 넣어서 release 로 빌드하게 되면 뒷부분의 -debug 는 없이 생성된다.


생성되는 파일명을 다른 형태로 만들고 싶다면,


build.gradle. 파일에서 파일명 정의 하는 부분


String apkName = "aridheart_" + variant.productFlavors.name[0] + "_" + variant.versionName + ".apk"

을 자기 입맛에 맞게 수정하면 된다.



728x90
반응형