나의 SW개발 이야기/안드로이드
Android Minimum API 별 버전 빌드하기
Piano2sky
2019. 4. 5. 17:06
0. Java의 Pre-Processing 전처리기 부재
기본적으로 자바에서는 전처리기를 지원하지 않는다. 물론 다른 여러가지 방법을 이용하여 전처리기와 유사한 동작을 끌어낼 순 있지만, 전반적인 프로젝트 관리를 위해서는 자바가 원래 지향하고자 하는 방식(Virtual Machine/ Bytecode) 을 따르는 것이 맞다.
그럼에도 불구하고 안드로이드 스튜디오에서 작업을 할 때 전처리기는 아니지만 버전을 분리하기 위한 방법을 소개한다.
1. Android Module추가, sourceSets 이용하여 코드 분리
각각 Android Module은 개별적인 Build.gradle 을 가지고 있기 때문에 끌어오는 Source도 분리해 낼 수 있다.
예제) Minimum API19와 16을 분리하는 경우
아래와 같이 \src\main 하위에 API19용 코드와 API19 용 더미 코드를 분리하여 넣는다. 하위 디랙토리는 동일하게~
Android Module을 추가하고 해당 build.gradle 파일에 아래와 같이 SourceSet을 추가한다.
1) Build.gradle (Project MinAPI19) : sourceSets를 이용하여 main하위에 java_api19 와 같이 api19만 지원하는 코드를 추가한다.
2) Build.gradle (Project MinAPI16) : sourceSets를 이용하여 main하위에 java_api19dummy 와 같이 api19에서 지원을 하지만 api16빌드를 위해 dummy code를 만들어 추가한다.
안드로이드 스튜디오 프로젝트 탭을 보면 아래와 같이 구성된다.
2. flavorDimensions
Build.gradle (Project App ) : flavor Dimensions을 아래와 같이 추가하고 해당 productFlavors에 minSdkVersion을 각각 넣는다.
FlavorDimensions은 추후 버전 별 빌드를 위한 일종의 Tag이다.
3. dependencies
Build.gradle (Project App ) : gradle파일에 dependencies에 flavorDimensions의 이름에 Implementation을 같이 합하여 아래와 같이 추가한다.
flavorDimensions : minAPI16 + Implementation project ... = minAPI16Implementation project...
4. Build Variant
Android Studio왼쪽 메뉴에서 Build Variant 탭을 선택
app에서 Build Variant 항목 Pull-Down 메뉴를 누르면 flavorDimension과 Build type이 합쳐진 빌드 탭을 선택하여 빌드 할 수 있다.