Android/Build(Gradle)

안드로이드 Build config 2/3 (source sets)

네모메모 2023. 2. 15. 23:54
반응형

 

이전 포스팅이 존재합니다.

https://nemomemo.tistory.com/187

 


이 블로거의 혼란을 야기하므로 용어는 영어로 사용하고자 합니다.

더보기

빌드 변형 = build variant

빌드 유형 = build types

제품 버전 = product flavors

버전 차원 =  flavor dimension

소스 세트 = source sets

종속 = dependencies

서명 = signing

API 수준 = API level

 

 

 


Source sets 

- (정말 의미 그래로) 소스(resource, source code, ...)들의 셋트를 일컫는다.

 


build variants별 '별도 source sets' 설정하기 

1. 공통 source sets 

: Android 스튜디오는 기본적으로 main/ 폴더 하위에 소스 세트 및 디렉터리를 생성하고, 이는 모든 build variants 간에 공유 항목이다.

 

 

2. 별도 source sets (= 타켓 source sets)

- 왜 필요한가?

  => 특정 build variants 버전(들)에서만 특정 source sets을 사용하도록 설정
        (=Gradle이 컴파일하고 패키징하는 파일을 정확히 제어)하기 위해 "별도 source sets"을 사용한다.

  • ex1) java소스를 생성하여 src/demoMinApi24/java/ 디렉터리에 추가해 "별도source sets"을 설정하면,
           Gradle은 'demo'와  'MinApi24' 이 두 product flavors인 버전을 빌드할 때만 이러한 소스를 사용하게 됨
  • ex2) 'product flavors source sets'를 사용하여 product flavor마다 다른 클라이언트를 위해 앱 브랜드를 변경할 때
  • ex3) 'debug' build types을 사용하는 build variants버전에만 특별 권한과 로깅 기능을 포함 시

 

- Gradle은 빌드 시 "별도 source sets"의 구성이 '공통source sets (main/ 소스 세트)'와 유사하다고 예상함

  • ex) 'debug' build types"별도 source sets"의 구성src/debug/kotlin/ 또는 src/debug/java/ 디렉터리에 있을 것으로 예상함.

[product flavors source sets의 우선순위]

=> "여러 product flavors 조합에 속한 source sets" > "개별 product flavors에 속한 source sets"

 


별도 source sets 설정하기 

- 1. [(예상되는)'별도source sets' 구성 확인]하고 -> 2. 그대로 ['별도 source sets' 구성 생성]하면 된다.

 

 

1. [(예상되는) '별도 source sets' 구성 확인]

  1. 도구 창 모음에서 Gradle을 클릭
  2. MyApplication > Tasks > android로 이동하여 sourceSets를 더블클릭
  3. Tasks 폴더를 보려면 동기화 중에 Gradle이 작업 목록을 빌드하도록 허용해야함.
    1) File > Settings > Experimental(macOS는 Android Studio > Preferences > Experimental)을 클릭합니다.
    2) Do not build Gradle task list during Gradle sync를 선택 해제합니다.
  4. Gradle에서 작업을 실행하면 Run 창이 열리고 출력 내용 확인
    예상 결과 ex) 
------------------------------------------------------------
Project :app
------------------------------------------------------------

...

debug
----
Compile configuration: debugCompile
build.gradle name: android.sourceSets.debug
Java sources: [app/src/debug/java]
Kotlin sources: [app/src/debug/kotlin, app/src/debug/java]
Manifest file: app/src/debug/AndroidManifest.xml
Android resources: [app/src/debug/res]
Assets: [app/src/debug/assets]
AIDL sources: [app/src/debug/aidl]
RenderScript sources: [app/src/debug/rs]
JNI sources: [app/src/debug/jni]
JNI libraries: [app/src/debug/jniLibs]
Java-style resources: [app/src/debug/resources]

 

 

 

 

2. [(예상되는) '별도 source sets' 구성대로 생성하기]

 - (Android 스튜디오에서는) 모듈/src/{지정한 별도 (build types,product flavors,build variants)이름}의 디렉터리를 생성한 다음, 그 안에 source sets 을 위치시킨다.

  • ex1) ('debug' build types)의 source sets 코드 디렉토리  ->  src/debug/java
  • ex2) ('demo'product flavors)의 source sets디렉토리  -> src/demo/
  • ex3) ('debug'build types이고'demo'product flavors인 build variants)의source sets디렉토리-> src/demoDebug/

 

 - 자동으로 생성되지 않으므로 개발자가 직접해야함

  • ex1) 'debug' 빌드 유형에 java/ 디렉터리만 생성하는 경우,
  1. Project 창을 열고 창 상단의 메뉴에서 Project 보기를 선택합니다.
  2. MyProject/app/src/로 이동합니다.
  3. src 디렉터리를 마우스 오른쪽 버튼으로 클릭하고 New > Directory를 선택합니다.
  4. Gradle Source Sets에 있는 메뉴에서 full/java를 선택합니다.
  5. Enter를 누릅니다.
  • ex2)  'debug' build types에 Values XML 파일을 생성하려면,
  1. Project 창에서 src 디렉터리를 마우스 오른쪽 버튼으로 클릭하고 New > XML > Values XML File을 선택합니다.
  2. XML 파일의 이름을 입력하거나 기본 이름을 유지합니다.
  3. Target Source Set 옆의 메뉴에서 debug를 선택합니다.
  4. Finish를 클릭합니다.
  5. 이제 'debug' 빌드 유형이 '별도 source sets'로 지정되었으므로 Android 스튜디오는 XML 파일을 생성할 때 필요한 디렉터리를 자동으로 생성함

 

 


 

 

'활성화된 source sets'와  'source sets접미사'

그림 1.  'debug' 빌드 유형의 새로운 소스 세트 디렉터리
활성화된 source sets

활성화된 source sets는 "아이콘에 녹색 표시"가 있어 활성 상태임을 나타냄

 

- source sets접미사가 붙으면 "접미사인  source sets에 병합된다"

ㄴ> 위 이미지 내  debug source sets[main] 접미사가 붙은 것처럼  

 


테스트 source sets

+) 특정 빌드 변형을 타겟팅하는 테스트 source sets를 생성할 수 있다. ex) src/androidTestDemoDebug/

 

 

 

 

 

 


 

 

 

다음 포스팅이 존재합니다.

 

1편 : https://nemomemo.tistory.com/187

2편 : 현재 포스팅

3편 : https://nemomemo.tistory.com/189

 

 

 


[출처]

- [공식]  https://developer.android.com/studio/build/build-variants?hl=ko 

 

 

 

 

 

 

 

 

반응형