안드로이드/앱 제작 관련

[Android] 프로젝트 설정 멀티 모듈 적용하기

코딩하는후운 2024. 5. 16. 16:19
반응형

안드로이드 프로젝트 설정 멀티 모듈 적용 해보도록 하겠습니다.

 

nowinandroid 깃헙 보면 core 모듈안에 여럿 모듈이 들어가 있다. (2024.05.16 기준)

모듈이 많은데 나는 필요한 모듈만 생성해볼 것이다.

모듈 생성했을 때 폴더 모양

  • 초록색 점으로 표시되는게 Application(Android App Module)
  • 책 모양으로 표시되는게 Android Library
  • 파란색 네모로 표시되는게 Java & Kotlin Library 이다.

 

모듈 삭제 방법

  • 모듈을 잘못 생성했을 때 삭제 하는 방법
  • File - Project Structure - Modules 에서 삭제

 

core 모듈 생성

Core폴더의 모듈은 Android Library 템플릿을 사용한다고 함.

  • 나는 Java or Kotlin Library로 만들었다. (Android Library로 만드니 폴더 모양이 좀 다른듯..? 했음)

  • 만들어 주고 안에 있는 파일들 다 삭제함.

 

Domain 모듈 생성

  • Android Library로 모듈 만들어주고 안에 있는 파일 부분 삭제
  • build.gradle.kts 에 android { 부분 namespace 빼고 다 제거

Data 모듈 생성

testOptions {
    unitTests {
        isIncludeAndroidResources = true
        isReturnDefaultValues = true
    }
}

- isReturnDefaultValues는 Android Gradle Plugin에서 유닛 테스트 실행 시 기본 값을 반환하도록 설정하는 옵션입니다.
이 설정은 특히 Mockito 같은 라이브러리와 함께 사용할 때 유용하며, 실제 인스턴스 대신 기본 값을 반환함으로써 테스트 환경을 보다 단순화하고 안정화할 수 있습니다.

Model

  • Model은 Java or Kotlin Library로 생성

Network

buildFeatures {
    buildConfig = true
}
testOptions {
    unitTests {
        isIncludeAndroidResources = true
    }
}
  • buildFeatures { buildConfig = true }는 Gradle 빌드 스크립트에서 사용되는 설정으로, BuildConfig 클래스의 생성을 활성화합니다.
    BuildConfig 클래스는 프로젝트 빌드 시 자동으로 생성되며, 애플리케이션과 빌드 타입에 대한 다양한 메타데이터를 포함합니다.
    이는 특히 앱 버전, 빌드 타입 등의 정보를 코드 내에서 쉽게 접근할 수 있게 해줍니다.
  • includeAndroidResources는 Android 라이브러리 모듈에서 리소스 파일을 포함하여 사용할 수 있도록 하기 위한 설정입니다.
    일반적으로 Android 라이브러리 모듈은 Java 또는 Kotlin 코드뿐만 아니라 리소스 파일 (예: XML 레이아웃, 이미지, 문자열 리소스 등)도 포함할 수 있습니다.
    이 설정이 없으면 해당 라이브러리 모듈에서 리소스를 사용할 수 없게 됩니다.
  • testOptions 블록 안에서 unitTestsisIncludeAndroidResources를 설정하는 것은 Android 유닛 테스트에서 리소스를 사용할 수 있도록 하기 위한 것입니다.
    이 설정을 통해 Android 리소스 파일(예: XML 레이아웃, 문자열 리소스 등)을 유닛 테스트 중에 포함하고 사용할 수 있게 됩니다.

    기본적으로 Android 유닛 테스트는 Android 리소스를 사용할 수 없기 때문에, 리소스를 필요로 하는 테스트를 실행하려면 isIncludeAndroidResourcestrue로 설정해야 합니다.
    이는 특히 리소스를 사용하는 뷰나 컴포넌트의 테스트에 유용합니다.

 

모듈 만든 결과

 

 

참조 : 
https://jminie.tistory.com/197
https://everyday-develop-myself.tistory.com/313
https://dev-inventory.com/5

반응형

'안드로이드 > 앱 제작 관련' 카테고리의 다른 글

[Android] Gradle VersionCatalog 알아보자  (0) 2024.05.16