“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
앱을 개발하면 하나의 코드(프로젝트)로 여러 개의 앱을 만들어야 할 때가 있다. 그렇다고 앱 마다 프로젝트를 또 만들 수도 없는 노릇이다.
하지만 gradle에서 설정을 추가해주면
빌드 구성을 다르게 하여 하나의 프로젝트로 여러 개의 앱을 만들 수 있다.
아래에서 살펴보도록 하자
build.gradle(app) 내 에서 productFlavors
블록을 사용하면
여러 개의 버전으로 앱을 빌드할 수 있다.
이를테면 운영 버전과 개발 버전을 나누어서 빌드할 수도 있다.
productFlavors {
release {
~ 운영 버전 ~
}
dev {
~ 개발 버전 ~
}
}
여기서 각 버전에 맞게 applicationId
를 작성하면
패키지명이 달라지기 때문에 여러 개의 앱을 빌드, 설치할 수가 있다!
또 BuildConfig
를 설정하여 상수값을 버전에 맞게 다르게 설정해줄 수도 있다.
아래의 샘플 코드에서 자세히 살펴보자
flavorDimensions "prod"
productFlavors {
prod {
dimension "prod"
applicationId "com.sample.prod"
buildConfigField("String", "PRODUCT_TYPE", "PRODUCT")
manifestPlaceholders = [
urlScheme: "myOtherAppProduct"
]
}
dev {
dimension "dev"
applicationId "com.sample.dev"
buildConfigField("String", "PRODUCT_TYPE", "DEVELOP")
manifestPlaceholders = [
urlScheme: "myOtherAppDev"
]
}
}
위에서 말한 바와 같이 applicationId
와 BuildConfig
는 물론 Manifest 상수까지도 각 버전에 맞게 설정할 수 있다.
이제 각 버전에 맞게 코드를 작성했다면 flavorDimensions
를 사용하여 빌드에 적용할 버전을 설정해주면 된다.
buildTypes
의 type과 flavor의 이름이 겹치면 안된다.
이를테면
productFlavors {
release {
~~ 중략 ~~
}
}
buildTypes {
release {
~~ 중략 ~~
}
}
위와 같이 이름이 동일하게 되면 아래와 같은 빌드 에러를 만나게 될 것이다.
ProductFlavor names cannot collide with BuildType names
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.