Cấu trúc dự án Lightbuild

Dự án Lightbuild tách biệt việc tập hợp ứng dụng khỏi mã ứng dụng: mô-đun ứng dụng (hoặc "vỏ ứng dụng") tập hợp ứng dụng của bạn, còn mô-đun thư viện chứa các tính năng, giao diện người dùng và logic nghiệp vụ của ứng dụng. Trang này mô tả bố cục của một dự án Lightbuild mới, cũng như vai trò của từng mô-đun và tệp bản dựng.

Bố cục dự án

Mẫu dự án Lightbuild mặc định có các tệp bản dựng và mô-đun sau:

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

Dự án có 3 tệp cấu hình bản dựng: một tệp project.lightbuild.yaml trong thư mục gốc và một tệp lightbuild.yaml trong mỗi mô-đun. Mỗi mô-đun cũng có một tệp resolved.deps. Để biết thông tin chi tiết về các chế độ cài đặt trong mỗi tệp cấu hình, hãy xem Tài liệu tham khảo về cấu hình Lightbuild.

Mô-đun ứng dụng

Dự án Lightbuild sử dụng một mô-đun ứng dụng làm cơ sở cho ứng dụng của bạn. Mô-đun này còn được gọi là "giao diện ứng dụng" vì nó xử lý việc tập hợp dự án mà không chứa mã nguồn nào. Tất cả các tính năng và logic của bạn đều nằm trong các mô-đun thư viện riêng biệt và giao diện ứng dụng tập trung vào cấu hình cuối cùng, chẳng hạn như ký và tối ưu hoá.

Tệp lightbuild.yaml của mô-đun ứng dụng đặt type của mô-đun thành application và chỉ định cách kết hợp ứng dụng hoàn thiện, bao gồm:

  • Danh tính của ứng dụng: mã ứng dụng, mã phiên bản và tên phiên bản
  • Yêu cầu về SDK của ứng dụng: phiên bản compileSdk, minSdk và targetSdk
  • Các mô-đun mà ứng dụng phụ thuộc vào, trong ví dụ này là app-core

Mô-đun thư viện

Mô-đun thư viện chứa mã mà mô-đun ứng dụng tập hợp, chẳng hạn như các tính năng, thành phần giao diện người dùng và logic nghiệp vụ của ứng dụng. Trong mẫu dự án mới, mô-đun thư viện app-core chứa tệp MainActivity.kt có mã ví dụ.

Tệp lightbuild.yaml của mô-đun thư viện đặt giá trị type của mô-đun thành library. Mô-đun thư viện xác định phiên bản compileSdk và minSdk, nhưng không hỗ trợ chế độ cài đặt targetSdk. Tệp lightbuild.yaml của mô-đun thư viện cũng khai báo các phần phụ thuộc, trình xử lý KSP và kiểm thử của mô-đun.

Nhiều mô-đun ứng dụng

Một dự án có thể có nhiều mô-đun ứng dụng. Lightbuild không hỗ trợ phiên bản sản phẩm và các loại bản dựng tuỳ chỉnh theo cách truyền thống. Thay vào đó, bạn tạo một mô-đun ứng dụng riêng cho từng phiên bản của ứng dụng, chẳng hạn như phiên bản dev và prod hoặc phiên bản free và paid.

Mỗi mô-đun ứng dụng phụ thuộc vào các mô-đun thư viện mà phiên bản của mô-đun đó cần. Các mô-đun ứng dụng có thể chia sẻ mô-đun thư viện, phụ thuộc vào các mô-đun thư viện khác nhau cho mã và chế độ cài đặt theo phiên bản cụ thể (chẳng hạn như các mô-đun chèn phần phụ thuộc (DI) riêng biệt) và bỏ qua các mô-đun thư viện cho các tính năng mà một phiên bản không có.

Ví dụ: một dự án có phiên bản miễn phí và phiên bản trả phí của một ứng dụng có thể có các mô-đun sau:

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

Tệp app-paid/lightbuild.yaml của phiên bản có tính phí phụ thuộc vào tất cả các mô-đun của phiên bản có tính phí:

android:
  applicationId: com.example.myapp.paid
  dependencies:
    module:
      - //core
      - //di-paid
      - //premium

Tệp app-free/lightbuild.yaml của phiên bản miễn phí phụ thuộc vào mô-đun core dùng chung và mô-đun DI của chính nó, đồng thời bỏ qua mô-đun premium:

android:
  applicationId: com.example.myapp.free
  dependencies:
    module:
      - //core
      - //di-free

Mỗi mô-đun ứng dụng có chế độ cài đặt riêng, chẳng hạn như mã ứng dụng và chữ ký bản phát hành, nhờ đó, bạn có thể tạo, cài đặt và phát hành riêng từng phiên bản. Để tạo một phiên bản cụ thể, hãy chỉ định mô-đun ứng dụng của phiên bản đó khi chạy lệnh build. Ví dụ:

lightbuild build app-free

Phần phụ thuộc đã giải quyết

Mỗi mô-đun trong dự án Lightbuild đều có một tệp resolved.deps, tệp này ghi lại tất cả phần phụ thuộc đã phân giải của mô-đun, bao gồm cả phần phụ thuộc bắc cầu. Lightbuild tự động tạo tệp này để không cần phân giải các phần phụ thuộc một cách linh động mỗi khi bạn mở hoặc tạo dự án. Bạn không nên chỉnh sửa tệp này theo cách thủ công.

Kiểm tra các tệp resolved.deps trong phần quản lý phiên bản, cùng với các tệp lightbuild.yaml của dự án.

Để khoá các phần phụ thuộc, chẳng hạn như trong bản dựng CI, hãy thêm cờ --locked-dependencies vào lightbuild resolve hoặc lightbuild test. Với cờ này, lệnh sẽ không thành công nếu tệp resolved.deps không khớp với các phần phụ thuộc của mô-đun, thay vì cập nhật tệp:

lightbuild resolve --locked-dependencies