Lightbuild 프로젝트는 앱 어셈블리를 앱 코드에서 분리합니다. 앱 모듈('앱 셸')은 앱을 어셈블하고 라이브러리 모듈에는 앱의 기능, UI, 비즈니스 로직이 포함됩니다. 이 페이지에서는 새 Lightbuild 프로젝트의 레이아웃과 각 모듈 및 빌드 파일의 역할을 설명합니다.
프로젝트 레이아웃
기본 Lightbuild 프로젝트 템플릿에는 다음과 같은 빌드 파일과 모듈이 있습니다.
MyApp/
├── project.lightbuild.yaml # Project-wide settings
├── app/ # App module
│ ├── lightbuild.yaml
│ └── resolved.deps
└── app-core/ # Library module
├── lightbuild.yaml
├── resolved.deps
└── src/ # The app's source code
프로젝트에는 루트 디렉터리의 project.lightbuild.yaml 파일과 각 모듈의 lightbuild.yaml 파일이라는 세 개의 빌드 구성 파일이 있습니다. 각 모듈에는 resolved.deps 파일도 있습니다. 각 구성 파일의 설정에 관한 자세한 내용은 Lightbuild 구성 참조를 참고하세요.
앱 모듈
Lightbuild 프로젝트는 앱 모듈을 앱의 기반으로 사용합니다. 소스 코드를 포함하지 않고 프로젝트 조립을 처리하므로 '앱 셸'이라고도 합니다. 모든 기능과 로직은 별도의 라이브러리 모듈에 유지되며 앱 셸은 서명 및 최적화와 같은 최종 구성에 중점을 둡니다.
앱 모듈의 lightbuild.yaml 파일은 모듈의 type를 application로 설정하고 다음을 포함하여 최종 앱이 구성되는 방식을 지정합니다.
- 앱의 ID: 애플리케이션 ID, 버전 코드, 버전 이름
- 앱의 SDK 요구사항:
compileSdk,minSdk,targetSdk버전 - 앱이 종속되는 모듈(이 예에서는
app-core)
라이브러리 모듈
라이브러리 모듈에는 앱의 기능, UI 구성요소, 비즈니스 로직과 같이 앱 모듈이 조합하는 코드가 포함되어 있습니다. 새 프로젝트 템플릿에서 app-core 라이브러리 모듈에는 예시 코드가 포함된 MainActivity.kt 파일이 포함되어 있습니다.
라이브러리 모듈의 lightbuild.yaml 파일은 모듈의 type 값을 library로 설정합니다. 라이브러리 모듈은 compileSdk 및 minSdk 버전을 정의하지만 targetSdk 설정은 지원하지 않습니다. 라이브러리 모듈의 lightbuild.yaml 파일은 모듈의 종속 항목, KSP 프로세서, 테스트도 선언합니다.
여러 앱 모듈
프로젝트에는 앱 모듈이 두 개 이상 있을 수 있습니다. Lightbuild는 기존의 의미에서 제품 버전과 맞춤 빌드 유형을 지원하지 않습니다. 대신 dev 및 prod 버전 또는 free 및 paid 버전과 같이 앱의 각 버전에 대해 별도의 앱 모듈을 만듭니다.
각 앱 모듈은 해당 버전에 필요한 라이브러리 모듈에 종속됩니다. 앱 모듈은 라이브러리 모듈을 공유하고, 버전별 코드 및 설정 (예: 별도의 종속 항목 삽입 (DI) 모듈)을 위해 다양한 라이브러리 모듈에 종속되며, 버전에 포함되지 않은 기능의 라이브러리 모듈을 제외할 수 있습니다.
예를 들어 앱의 무료 버전과 유료 버전이 있는 프로젝트에는 다음과 같은 모듈이 있을 수 있습니다.
MyApp/
├── project.lightbuild.yaml
├── app-free/ # App module for the free version
├── app-paid/ # App module for the paid version
├── core/ # Library module that both versions use
├── di-free/ # DI module for the free version
├── di-paid/ # DI module for the paid version
└── premium/ # Library module for paid-only features
유료 버전의 app-paid/lightbuild.yaml 파일은 모든 유료 버전의 모듈에 종속됩니다.
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
무료 버전의 app-free/lightbuild.yaml 파일은 공유 core 모듈과 자체 DI 모듈에 종속되며 premium 모듈은 제외합니다.
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
각 앱 모듈에는 애플리케이션 ID 및 출시 서명과 같은 자체 설정이 있으므로 각 버전을 별도로 빌드, 설치, 게시할 수 있습니다. 특정 버전을 빌드하려면 build 명령어를 실행할 때 앱 모듈을 지정합니다. 예를 들면 다음과 같습니다.
lightbuild build app-free
확인된 종속 항목
Lightbuild 프로젝트의 각 모듈에는 전이 종속 항목을 비롯한 모듈의 모든 확인된 종속 항목을 기록하는 resolved.deps 파일이 포함되어 있습니다. Lightbuild는 이 파일을 자동으로 생성하므로 프로젝트를 열거나 빌드할 때마다 종속 항목을 동적으로 해결할 필요가 없습니다. 이 파일을 직접 수정해서는 안 됩니다.
프로젝트의 lightbuild.yaml 파일과 함께 resolved.deps 파일을 버전 제어에 체크인합니다.
CI 빌드 등에서 종속 항목을 잠그려면 --locked-dependencies 플래그를 lightbuild resolve 또는 lightbuild test에 추가합니다. 이 플래그를 사용하면 resolved.deps 파일이 모듈의 종속 항목과 일치하지 않는 경우 파일을 업데이트하는 대신 명령어가 실패합니다.
lightbuild resolve --locked-dependencies
추천 서비스
- 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
- Lightbuild 구성 참조
- 명령줄에서 Lightbuild 프로젝트 빌드
- Lightbuild와 Kotlin DSL 비교