Lightbuild projesinin derleme yapılandırması, YAML dosyalarından oluşur: projenin kök dizininde bir project.lightbuild.yaml dosyası ve her modülde bir lightbuild.yaml dosyası. Bu sayfada, her bir dosyadaki ayarlar açıklanmaktadır.
Proje dosyası
Genel proje ayarları, projenizin kök dizinindeki project.lightbuild.yaml dosyasında bulunur. Örneğin:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
lightbuild:
version: 0.0.30
build:
java:
version: 17
kotlin:
version: 2.3.20
jvmTarget: "17"
Aşağıdaki tabloda bu ayarlar açıklanmaktadır:
| Ayar | Açıklama |
|---|---|
project.name |
Projenin adı (ör. MyApp). Android Studio, bu adı Proje penceresinin kökü olarak gösterir. Kotlin DSL'deki rootProject.name gibi, uygulamanızın adından ve uygulama kimliğinden ayrıdır. |
modules |
Projedeki modüller (ör. uygulama modülü (app) ve kitaplık modülleri (app-core)). |
repositories |
Lightbuild'in bağımlılıkları çözdüğü uzak depolar. Ayrıntılı bilgi için Kod depoları bölümünü inceleyin. |
lightbuild.version |
Projenin kullandığı Lightbuild sürümü. |
build.kotlin.version |
Projenin kullandığı Kotlin sürümü. |
build.java.version |
Projenin gerektirdiği Java derleyici sürümü. |
build.jvmTarget |
Oluşturulan JVM bayt kodunun hedef sürümü. |
Kod depoları
Lightbuild'in bağımlılıkları çözdüğü depoları listelemek için repositories komutunu kullanın. Yerleşik google ve mavenCentral depolarını listeleyebilir ve maven ile özel Maven depoları ekleyebilirsiniz:
repositories:
- google
- mavenCentral
- maven:
name: "Example Repo"
url: "https://maven.example.com/releases"
maven deposu aşağıdaki ayarlara sahiptir:
| Ayar | Açıklama |
|---|---|
name |
Kod deposu için bir ad. |
url |
Kod deposunun URL'si. |
credentials |
İsteğe bağlı. local.properties dosyanızda deponun kullanıcı adı ve şifresiyle eşlenen anahtarlar. Ayrıntılar için Depo kimlik bilgileri başlıklı makaleyi inceleyin. |
Depo kimlik bilgileri
Bir Maven deposu için kullanıcı adı ve şifre gerekiyorsa depoya credentials
bloğu ekleyin. username ve password değerleri, kimlik bilgilerinin kendisi değildir. Bunlar, projenizin local.properties dosyasında tanımladığınız anahtarlardır:
repositories:
- google
- mavenCentral
- maven:
name: "Internal Repo"
url: "https://maven.example.com/releases"
credentials:
username: internalRepoUser
password: internalRepoPassword
Ardından, projenizin local.properties dosyasında her anahtarı kendi değeriyle eşleyin.
REPO_USERNAME ve REPO_PASSWORD değerlerini kendi kimlik bilgilerinizle değiştirin:
# Also define sdk.dir, the path to your Android SDK.
internalRepoUser=REPO_USERNAME
internalRepoPassword=REPO_PASSWORD
Modül dosyaları
Her modülün dizininde, modülün ayarlarını tanımlayan bir lightbuild.yaml dosyası bulunur. Aşağıdaki tabloda üst düzey ayarlar açıklanmaktadır:
| Ayar | Açıklama |
|---|---|
platform |
Modülün hedeflediği platform: android. |
type |
Modül türü: Uygulama modülü için application veya kitaplık modülü için library. Daha fazla bilgi için Lightbuild proje yapısı başlıklı makaleyi inceleyin. |
optionalFeatures |
Modül için etkinleştirilecek isteğe bağlı özellikler (ör. protokol arabellekleri desteği için com.android.tools.lightbuild.protobuf). Ayrıntılar için Protokol Arabellekleri başlıklı makaleyi inceleyin. |
android |
Modülün Android ayarları. Ayrıntılar için Android ayarları başlıklı makaleyi inceleyin. |
Android ayarları
android bloğu, modülün Android derleme ayarlarını içerir:
| Ayar | Açıklama |
|---|---|
namespace |
Modülün ad alanı. Daha fazla bilgi için Ad alanını ayarlama bölümünü inceleyin. |
compileSdk |
Modülün derlendiği API düzeyi. Ayrıntılar için SDK sürümleri bölümüne bakın. |
minSdk |
Modülün desteklediği minimum API düzeyi. |
targetSdk |
Uygulamanın hedeflediği API düzeyidir. Yalnızca uygulama modüllerinde desteklenir. |
applicationId |
Uygulamanın uygulama kimliği. Uygulama modüllerinde ayarlanır. |
versionCode |
Uygulamanın sürüm kodu. Uygulama modüllerinde ayarlanır. |
versionName |
Uygulamanın sürüm adı. Uygulama modüllerinde ayarlanır. |
packaging |
Uygulamanın debug ve release derlemelerini paketleme ayarları (ör. sürüm imzalama). Yalnızca uygulama modülünde desteklenir. Ayrıntılar için Paketleme bölümünü inceleyin. |
dependencies |
Modülün diğer modüllere ve harici kitaplıklara olan bağımlılıkları. Ayrıntılı bilgi için Bağımlılıklar bölümünü inceleyin. |
kspProcessors |
Modül için kod oluşturan KSP işlemcileri. Ayrıntılar için KSP işlemcileri bölümüne bakın. |
tests |
Modülün yerel ve enstrümantasyon testleri. Ayrıntılar için Testler bölümüne bakın. |
SDK sürümleri
version.release.apiLevel altında compileSdk, minSdk ve targetSdk ayarlarını API düzeyleri olarak belirtin. Örneğin, aşağıdaki ayarlar modülü API düzeyi 36'ya göre derler, API düzeyi 24 ve üstünü destekler ve API düzeyi 36'yı hedefler:
android:
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
targetSdk ayarı yalnızca uygulama modüllerinde desteklenir. Kitaplık modülleri yalnızca compileSdk ve minSdk ayarlarını tanımlar.
Bağımlılıklar
Bir modülün bağımlılıklarını dependencies bloğunda tanımlayın:
module: Projenizdeki diğer modüller.//ve ardından modülün adı şeklinde yazılır (ör.//app-coreveya//features/search).maven:group:artifact:versionbiçiminde Maven koordinatları olarak yazılan harici kitaplıklar.
Örneğin, aşağıdaki ayarlar app-core modülüne ve AndroidX Core KTX kitaplığına bağımlılıklar ekler:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Bağımlılık ayarları
Varsayılan olarak bir modül, bağımlılıklarının her birine göre derlenir ve bunları çalışma zamanında dahil eder ancak bağımlı olduğu modüllere göstermez. Bir modülün bağımlılığı kullanma şeklini değiştirmek için bağımlılıktan sonra iki nokta üst üste ekleyin ve ardından compile ayarını, runtime ayarını veya her ikisini de altına ekleyin:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.core:core-ktx:1.18.0
- androidx.annotation:annotation:1.9.1:
runtime: off
Bu örnekte, bu modüle bağlı olan modüller de data modülünün sınıflarını kullanabilir. Jetpack Annotation kitaplığı yalnızca bu modülü derlemek için kullanılır. Core KTX, varsayılan ayarları kullanır.
compile ayarı, hangi modüllerin bağımlılığa göre derleneceğini kontrol eder:
private(varsayılan): Bu modül, bağımlılığa göre derlenir ancak bu modüle bağlı olan modüller derlenmez.public: Bu modül ve bu modüle bağlı olan modüller, bağımlılığa göre derlenir. Modülünüzün herkese açık API'si, bağımlılıktaki türleri kullanıyorsapublickullanın.off: Bu modül, bağımlılığa göre derlenmiyor.
runtime ayarı, bağımlılığın çalışma zamanında kullanılabilir olup olmayacağını kontrol eder:
public(varsayılan): Bağımlılık, çalışma zamanında bu modül ve bu modüle bağlı olan modüller tarafından kullanılabilir.off: Bağımlılık, çalışma zamanında kullanılamıyor. Kodunuzun yalnızca derleme süresinde ihtiyaç duyduğu bağımlılıklar (ör. ek açıklamalar) içinoffkullanın.
compile ve runtime aynı anda off olamaz. Test bağımlılıklarında compile yalnızca private veya off olabilir.
Bu ayarların api ve compileOnly gibi Kotlin DSL yapılandırmalarıyla nasıl eşleştiğini görmek için Lightbuild ile Kotlin DSL'yi karşılaştırma başlıklı makaleyi inceleyin.
KSP işlemcileri
Moshi veya Room gibi Kotlin Sembol İşleme (KSP) tabanlı bir kod oluşturucu kullanmak için işlemciyi kspProcessors bloğuna, kodunuzun çalışma zamanında kullandığı kitaplıkları ise dependencies bloğuna ekleyin. Lightbuild, derleme sırasında KSP eklentisini otomatik olarak uygular ve kod oluşturmayı yapılandırır.
Örneğin, aşağıdaki ayarlarda Moshi, KSP kod oluşturucusuyla yapılandırılır:
android:
dependencies:
maven:
- com.squareup.moshi:moshi:1.15.2
- com.squareup.moshi:moshi-kotlin:1.15.2
kspProcessors:
maven:
- com.squareup.moshi:moshi-kotlin-codegen:1.15.2
Protokol Arabellekleri
Bir kitaplık modülündeki protokol arabelleği (.proto) dosyalarından kod oluşturmak için modülün optionalFeatures listesine protokol arabelleği özelliğini, modülün bağımlılıklarına ise protokol arabelleği çalışma zamanı kitaplıklarını ekleyin. optionalFeatures, android bloğunun dışında yer alan üst düzey bir ayardır:
optionalFeatures:
- com.android.tools.lightbuild.protobuf
android:
dependencies:
maven:
- com.google.protobuf:protobuf-javalite:4.28.2
- com.google.protobuf:protobuf-kotlin-lite:4.28.2
Modülün .proto dosyalarını src/main/proto dizinine yerleştirin. Modülü oluşturduğunuzda Lightbuild, Android için önerilen Protocol Buffers Lite çalışma zamanı için Java ve Kotlin sınıfları oluşturur.
Testler
Bir modülün testlerini tests bloğunda yapılandırın:
test: Geliştirme makinenizin JVM'sinde çalışan yerel testler. Testlerin bağımlılıklarınıdependenciesaltında listeleyin.androidTest: Bir cihazda veya emülatörde çalışan Araçlı testler.runnerdeğerini test çalıştırıcı sınıfına ayarlayın ve testlerin bağımlılıklarınıdependenciesaltında listeleyin.
Örneğin:
android:
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test.ext:junit:1.3.0
- androidx.test.espresso:espresso-core:3.7.0
Sunum
Uygulama modüllerinde, uygulamanın debug ve release derlemelerini yapılandırmak için packaging bloğunu kullanın. Yayınlanan derlemenizi kendi anahtarınızla imzalamak için release profiline bir signing bloğu ekleyin:
android:
packaging:
release:
signing:
storeFile: "${RELEASE_STORE_FILE}"
storePassword: "${RELEASE_STORE_PASSWORD}"
keyAlias: "${RELEASE_KEY_ALIAS}"
keyPassword: "${RELEASE_KEY_PASSWORD}"
signing bloğu aşağıdaki ayarları destekler:
storeFile: Anahtar deposu dosyasının yolu. Modülün dizinine göre veya ana dizininizdeki bir konum için~/ile başlar.storePassword: Anahtar deposunun şifresi.keyAlias: Anahtar deposundaki imzalama anahtarının takma adı.keyPassword: İmzalama anahtarının şifresi.
Şifrelerinizi projenizin dosyalarından uzak tutmak için bu değerleri, örnekte olduğu gibi ${NAME} söz dizimiyle ortam değişkeni referanslarına ayarlayın.
storeFile ve keyAlias değerlerini doğrudan yazabilir veya bunlar için ortam değişkenlerine de başvurabilirsiniz. Derleme yaptığınızda Lightbuild, her referansı ortam değişkeninin değeriyle değiştirir. Her değer yalnızca referansı içermelidir: Lightbuild, ${HOME}/upload-keystore.jks gibi daha uzun bir değerin parçası olan referansları değiştirmez.
Örnekler
Aşağıdaki örneklerde, bir uygulama modülü ve kitaplık modülü için eksiksiz modül dosyaları gösterilmektedir.
Uygulama modülü
Aşağıdaki app/lightbuild.yaml dosyası, app-core kitaplık modülüne bağlı bir uygulama modülünü yapılandırır:
platform: android
type: application
android:
namespace: com.example.myapp.app
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
applicationId: com.example.myapp
versionCode: 1
versionName: "1.0"
dependencies:
module:
- //app-core
Kitaplık modülü
Aşağıdaki app-core/lightbuild.yaml dosyası, Jetpack Compose ve Moshi'yi kullanan ve yerel testler ile enstrümantasyon testleri içeren bir kitaplık modülünü yapılandırır:
platform: android
type: library
android:
namespace: com.example.myapp
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
dependencies:
maven:
- androidx.core:core-ktx:1.18.0
- androidx.lifecycle:lifecycle-runtime-ktx:2.10.0
- androidx.activity:activity-compose:1.13.0
- androidx.lifecycle:lifecycle-runtime-compose:2.10.0
- androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0
- androidx.compose.ui:ui:1.10.4
- androidx.compose.ui:ui-tooling-preview:1.10.4
- androidx.compose.material3:material3:1.4.0
- androidx.navigation3:navigation3-ui:1.0.1
- androidx.navigation3:navigation3-runtime:1.0.1
- androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0
- androidx.compose.ui:ui-tooling:1.10.4
- androidx.compose.ui:ui-test-manifest:1.10.4
- com.squareup.moshi:moshi:1.15.2
- com.squareup.moshi:moshi-kotlin:1.15.2
kspProcessors:
maven:
- com.squareup.moshi:moshi-kotlin-codegen:1.15.2
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test:core:1.7.0
- androidx.test.ext:junit:1.3.0
- androidx.test:runner:1.7.0
- androidx.test.espresso:espresso-core:3.7.0
- androidx.compose.ui:ui-test-junit4:1.10.4
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Lightbuild proje yapısı
- Komut satırından Lightbuild projeleri derleme
- Lightbuild ile Kotlin DSL'yi karşılaştırma