Lightbuild projesi, uygulama derlemesini uygulama kodundan ayırır: Uygulama modülü (veya "uygulama kabuğu") uygulamanızı derler, kitaplık modülleri ise uygulamanızın özelliklerini, kullanıcı arayüzünü ve iş mantığını içerir. Bu sayfada, yeni bir Lightbuild projesinin düzeni ve her modül ile derleme dosyasının rolü açıklanmaktadır.
Proje düzeni
Varsayılan Lightbuild proje şablonunda aşağıdaki derleme dosyaları ve modüller bulunur:
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
Projede üç derleme yapılandırma dosyası vardır: kök dizinde bir project.lightbuild.yaml dosyası ve her modülde bir lightbuild.yaml dosyası. Her modülde bir de resolved.deps dosyası bulunur. Her bir yapılandırma dosyasındaki ayarlar hakkında ayrıntılı bilgi için Lightbuild yapılandırma referansı başlıklı makaleyi inceleyin.
Uygulama modülü
Lightbuild projeleri, uygulamanızın temeli olarak bir uygulama modülü kullanır. Herhangi bir kaynak kodu içermeden proje derleme işlemini gerçekleştirdiği için "uygulama kabuğu" olarak da adlandırılır. Tüm özellikleriniz ve mantığınız ayrı kitaplık modüllerinde kalır ve uygulama kabuğu, imzalama ve optimizasyon gibi son yapılandırmaya odaklanır.
Uygulama modülünün lightbuild.yaml dosyası, modülün type değerini application olarak ayarlar ve nihai uygulamanın nasıl bir araya getirileceğini belirtir. Bu belirtimler arasında şunlar yer alır:
- Uygulamanın kimliği: uygulama kimliği, sürüm kodu ve sürüm adı
- Uygulamanın SDK gereksinimleri:
compileSdk,minSdkvetargetSdksürümleri - Uygulamanın bağlı olduğu modüller (bu örnekte
app-core)
Kitaplık modülleri
Kitaplık modülleri, uygulama modülünün bir araya getirdiği kodu (ör. uygulamanızın özellikleri, kullanıcı arayüzü bileşenleri ve iş mantığı) içerir. Yeni proje şablonunda, app-core kitaplık modülü örnek kod içeren MainActivity.kt dosyasını barındırır.
Bir kitaplık modülünün lightbuild.yaml dosyası, modülün type değerini library olarak ayarlar. Kitaplık modülleri compileSdk ve minSdk sürümlerini tanımlar ancak targetSdk ayarını desteklemez. Kitaplık modülünün lightbuild.yaml dosyası, modülün bağımlılıklarını, KSP işlemcilerini ve testlerini de bildirir.
Birden fazla uygulama modülü
Bir projede birden fazla uygulama modülü olabilir. Lightbuild, geleneksel anlamda ürün türlerini ve özel derleme türlerini desteklemez. Bunun yerine, uygulamanızın her sürümü için ayrı bir uygulama modülü oluşturursunuz. Örneğin, dev ve prod sürümleri veya free ve paid sürümleri için ayrı modüller oluşturabilirsiniz.
Her uygulama modülü, sürümünün ihtiyaç duyduğu kitaplık modüllerine bağlıdır. Uygulama modülleri, kitaplık modüllerini paylaşabilir, sürüme özel kod ve ayarlar için farklı kitaplık modüllerine (ayrı bağımlılık ekleme (DI) modülleri gibi) bağlı olabilir ve bir sürümün içermediği özellikler için kitaplık modüllerini hariç tutabilir.
Örneğin, bir uygulamanın ücretsiz ve ücretli sürümlerini içeren bir projede aşağıdaki modüller bulunabilir:
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
Ücretli sürümün app-paid/lightbuild.yaml dosyası, ücretli sürümün tüm modüllerine bağlıdır:
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
Ücretsiz sürümün app-free/lightbuild.yaml dosyası, paylaşılan core modülüne ve kendi DI modülüne bağlıdır ve premium modülünü hariç tutar:
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
Her uygulama modülünün kendi ayarları (ör. uygulama kimliği ve sürüm imzalama) vardır. Böylece her sürümü ayrı ayrı derleyebilir, yükleyebilir ve yayınlayabilirsiniz. Belirli bir sürümü derlemek için build komutunu çalıştırırken uygulama modülünü belirtin. Örneğin:
lightbuild build app-free
Çözümlenen bağımlılıklar
Lightbuild projesindeki her modülde, geçişli bağımlılıklar da dahil olmak üzere modülün çözümlenmiş tüm bağımlılıklarını kaydeden bir resolved.deps dosyası bulunur. Lightbuild, projenizi her açtığınızda veya derlediğinizde bağımlılıkları dinamik olarak çözmesi gerekmemesi için bu dosyayı otomatik olarak oluşturur. Bu dosyayı manuel olarak düzenlememelisiniz.
Projenizin lightbuild.yaml dosyalarıyla birlikte resolved.deps dosyalarınızı da sürüm denetimine ekleyin.
Bağımlılıklarınızı kilitlemek için (ör. bir CI derlemesinde) lightbuild resolve veya lightbuild test komutuna --locked-dependencies işaretini ekleyin. Bu işaretle, bir resolved.deps dosyası modülün bağımlılıklarıyla eşleşmiyorsa komut, dosyayı güncellemek yerine başarısız olur:
lightbuild resolve --locked-dependencies
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Lightbuild yapılandırma referansı
- Komut satırından Lightbuild projeleri oluşturma
- Lightbuild ile Kotlin DSL'yi karşılaştırma