AXV

Kutubxonalarni ulash va boshqarish

repositories, BOM, kapt va ksp, dinamik versiyalar, dependency tree

10-sinfAdvanced Android6-hafta · 17-dars

Bugun nimalarni o'rganamiz?

Repositories

Kutubxona qayerdan keladi

Kutubxona ulash

BOM, kapt va ksp

Versiya va ziddiyat

Dependency tree

Takrorlash

Build xatosida birinchi nimaga qaraladi?

Birinchi xabar odatda asosiy sabab.
01

Repositories

Kutubxona qayerdan keladi

Kutubxona yo'li

dependencies{} Repository Yuklash Build Repository yo'q bo'lsa — «Could not find»

Repositories


// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://jitpack.io") }
    }
}
  
Jitpack ni faqat kerak bo'lganda qo'shing: ishonchsiz manbalar xavfsizlik xavfini oshiradi.

Mini-test

Retrofit va OkHttp odatda qaysi repository da bo'ladi?

Ko'pchilik ochiq kutubxonalar mavenCentral da.
02

Kutubxona ulash

BOM, kapt va ksp

Qo'shish tartibi

Hujjat dependencies{} Sync Now Ishlatish Har o'zgarishdan keyin Sync

BOM, Retrofit va Room (ksp)


dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.06.00"))
    implementation("androidx.compose.material3:material3")

    implementation("com.squareup.retrofit2:retrofit:2.9.0")

    implementation("androidx.room:room-runtime:2.6.1")
    ksp("androidx.room:room-compiler:2.6.1")
}
  
BOM dagi kutubxonalarga versiya yozmaysiz: versiyani BOM belgilaydi. kapt o'rniga ksp ishlating (plaginni ulash kerak).

Mini-test

BOM nimaga xizmat qiladi?

Versiyalar o'zaro mos bo'ladi.
03

Versiya va ziddiyat

Dependency tree

Ziddiyatni hal qilish

Daraxtniko'ring Sababni toping exclude/ force Sync va test Avval tahlil, keyin tuzatish

exclude va force


implementation(libs.boshqa.kutubxona) {
    exclude(group = "com.squareup.okhttp3", module = "okhttp")
}

configurations.all {
    resolutionStrategy {
        force("com.squareup.okhttp3:okhttp:4.12.0")
    }
}
  
Ataylab aniq versiya yozing: 2.9.0. 2.9.+ yoki latest.release — xavfli.

Mini-test

Qaysi yozuv dinamik versiya (xavfli)?

+ har safar eng oxirgi versiyani oladi.

Versiya yozish usuli

Dinamik (1.2.+)

Har safar boshqa versiya: build takrorlanmaydi, ertaga buzilishi mumkin
VS

Aniq (1.2.3)

Build har safar bir xil, yangilashni o'zingiz boshqarasiz

Aniq versiya barqaror natija beradi.

Atamalar. Bosing

Repository

bosing

Kutubxona yuklanadigan manba

BOM

bosing

Bir oila kutubxona versiyalari to'plami

ksp

bosing

Tez annotation processing

exclude

bosing

Ichki kutubxonani olib tashlash

Kutubxona ulash

1. Hujjat

Rasmiy sahifadan guruh:nom:versiya ni oling.

2. Yozing

dependencies {} ga qo'shing.

3. Sync

Sync Now va ishga tushiring.

Repository turlari

ManbaNima uchunMisol
google()Android va JetpackRoom, Compose
mavenCentral()ochiq kutubxonalarRetrofit, Coil
JitpackGitHub kutubxonalarishaxsiy kutubxona
Lokal .aarqo'lda qo'shilgan faylkamdan-kam

Pastga bosing: tekshirish

Daraxtni tahlil qilish

  1. ./gradlew app:dependencies ni ishga tushiring.
  2. Bitta kutubxonani toping va ichki kutubxonalarini sanang.
  3. Ziddiyat bo'lsa, exclude yoki force tanlang.

kapt dan ksp ga


kapt("androidx.room:room-compiler:2.6.1")
  

kapt dan ksp ga


ksp("androidx.room:room-compiler:2.6.1")
  

Kutubxonalar raqamlarda

0
qism: guruh, nom, versiya
0
ta asosiy repository: google, mavenCentral, jitpack
0
BOM bir oila versiyalarini boshqaradi

Barcha qismlar qo'llanma materialidan.

Amaliy topshiriq 20 daqiqa

OsonRepository qo'shing: settings.gradle.kts ga google() va mavenCentral() ni yozing.
OsonKutubxona ulang: Module-level faylga Coil 2.3.0 (io.coil-kt:coil-compose) ni ulang.
O'rtakapt dan ksp ga: kapt("androidx.room:room-compiler:2.6.1") ni KSP ga almashtiring va farqini yozing.
O'rtaDinamik versiya: retrofit:2.+ nima uchun xavfli? Qanday tuzatasiz?
QiyinBOM bilan: Compose BOM ni ulang va material3 ni versiyasiz yozing.
QiyinZiddiyatni hal qiling: ./gradlew app:dependencies da OkHttp ning ikki xil versiyasi ko'rinmoqda. force bilan 4.12.0 ni tanlang.
Bonusexclude: Ichki okhttp ni exclude qiling.

Dars xulosasi

Repository

google(), mavenCentral(), Jitpack.

Ulash

dependencies {}, BOM, ksp, Sync.

Versiya

SemVer, aniq versiya; exclude, force.

Uyga vazifa: 2 ta kutubxonani ulash va daraxtni tahlil qilish.

Keyingi dars: Dependency turlari

implementation, api, compileOnly

6-hafta · 18-dars