Android Jetpack āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ—ā§āϰāĻšāϕ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āϝāĻž āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻ…āύ⧁āĻļā§€āϞāύāϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ…ā§āϝāĻžāĻĒāϗ⧁āϞāĻŋāϤ⧇ āĻĒāĻŋāĻ›āύ⧇āϰ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āĻ…ā§āϝāĻžāĻĒ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻ—āĻžāχāĻĄāϟāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧇āϰāĻž āĻ…āύ⧁āĻļā§€āϞāύ āĻāĻŦāĻ‚ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāĻ­āĻžāĻ—āϗ⧁āϞāĻŋ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇ āϝ⧇ āφāĻĒāύāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ āĻāĻ•āϟāĻŋ Jetpack āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āϏāĻŽāĻ¸ā§āϤ Jetpack āωāĻĒāĻžāĻĻāĻžāύ Google Maven āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇ āωāĻĒāϞāĻŦā§āϧāĨ¤

settings.gradle āĻĢāĻžāχāϞāϟāĻŋ āϖ⧁āϞ⧁āύ google() āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āϝ⧋āĻ— āĻ•āϰ⧁āύ dependencyResolutionManagement { repositories {...}} āĻŦā§āϞāϕ⧇ āύ⧀āĻšā§‡ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇:

āĻ—ā§āϰ⧋āĻ­āĻŋ

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        jcenter()
    }
}

āϕ⧋āϟāϞāĻŋāύ

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        jcenter()
    }
}

āϤāĻžāϰāĻĒāϰ⧇ āφāĻĒāύāĻŋ Jetpack āωāĻĒāĻžāĻĻāĻžāύ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝ⧇āĻŽāύ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ āϝ⧇āĻŽāύ LiveData āĻāĻŦāĻ‚ ViewModel , āφāĻĒāύāĻžāϰ āĻŽāĻĄāĻŋāωāϞ⧇āϰ build.gradle āĻĢāĻžāχāϞ⧇, āĻāĻ–āĻžāύ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇:

āĻ—ā§āϰ⧋āĻ­āĻŋ

dependencies {
    def lifecycle_version = "2.2.0"

    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    ...
}

āϕ⧋āϟāϞāĻŋāύ

dependencies {
    val lifecycle_version = "2.2.0"

    implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
    ...
}

āĻ…āύ⧇āĻ• āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ lifecycle-livedata-ktx āĻāĻŦāĻ‚ lifecycle-viewmodel-ktx āϏāĻš āωāĻĒāϰ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ Android KTX āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ KTX āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϗ⧁āϞāĻŋ āϜāĻžāĻ­āĻž-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• API-āĻāϰ āωāĻĒāϰ āϤ⧈āϰāĻŋ, āϕ⧋āϟāϞāĻŋāύ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ­āĻžāώāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĨ¤

āύāϤ⧁āύ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϰāĻŋāϞāĻŋāϜ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇, āϰāĻŋāϞāĻŋāϜ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤

āϕ⧋āϟāϞāĻŋāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻāĻŦāĻ‚ āϜāĻžāĻ­āĻž-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• API āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āϏāĻŽāĻ¸ā§āϤ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϜāĻ¨ā§āϝ āωāĻĒāϞāĻŦā§āϧāĨ¤

āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝāĻžāϚāĻžāχ āĻ•āϰ⧁āύ (āϐāĻšā§āĻ›āĻŋāĻ•)

2023 āϏāĻžāϞ⧇āϰ āϜ⧁āύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻĻāϞ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϗ⧁āϞāĻŋāϤ⧇ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰ āĻ•āϰ⧇āĨ¤ āĻāχ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāϗ⧁āϞāĻŋ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ āϝ⧇ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āύāĻŋāĻĻāĻ°ā§āĻļāύāϗ⧁āϞāĻŋ Google āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŋāϤāĨ¤ āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻāĻ•āϟāĻŋ āφāĻĒāĻĄā§‡āϟ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰ āϝāĻžāϚāĻžāχāĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āϝ⧋āĻ—ā§āϝ⧎

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰ āϝāĻžāϚāĻžāχāĻ•āϰāĻŖ āϏāĻ•ā§āώāĻŽ āĻĨāĻžāĻ•āϞ⧇, āĻ—ā§āϰ⧇āĻĄāϞ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻāχ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ:

  1. $PROJECT_ROOT/gradle/verification-metadata.xml <trusted-keys> āĻŦāĻŋāĻ­āĻžāϗ⧇ Google-āĻāϰ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ āϕ⧀āϗ⧁āϞāĻŋ āϝ⧋āĻ— āĻ•āϰ⧁āύ :

    <trusted-keys>
        <trusted-key id="8461efa0e74abae010de66994eb27db2a3b88b8b">
            ...
        </trusted-key>
        <trusted-key id="a5f483cd733a4ebaea378b2ae88979fb9b30acf2">
            ...
        </trusted-key>
        <trusted-key id="0f06ff86beeaf4e71866ee5232ee5355a6bc6e42">
            ...
        </trusted-key>
        <trusted-key id="0e225917414670f4442c250dfd533c07c264648f">
            ...
        </trusted-key>
        ...
    </trusted-keys>
    
  2. āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ <trusting group> āĻāĻ¨ā§āĻŸā§āϰāĻŋ āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āĨ¤ androidx.fragment āĻāĻŦāĻ‚ androidx.emoji2 āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ:

    <trusted-keys>
        <trusted-key id="8461efa0e74abae010de66994eb27db2a3b88b8b">
            <trusting group="androidx.fragment"/>
            <trusting group="androidx.emoji2"/>
        </trusted-key>
        <trusted-key id="a5f483cd733a4ebaea378b2ae88979fb9b30acf2">
            <trusting group="androidx.fragment"/>
            <trusting group="androidx.emoji2"/>
        </trusted-key>
        ...
    </trusted-keys>
    

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝāĻžāϚāĻžāχāĻ•āϰāϪ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ, āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝāĻžāϚāĻžāχāĻ•āϰāϪ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āĻŦāĻŋāώāϝāĻŧ⧇ Gradle-āĻāϰ āĻ—āĻžāχāĻĄ āĻĻ⧇āϖ⧁āύāĨ¤

āĻ…āĻŦāĻļ⧇āώ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ āϕ⧀ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āωāĻŦ⧁āĻ¨ā§āϟ⧁āϰ āϕ⧀āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻžāχāĻŸā§‡ āĻĻ⧇āĻ–āĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻœā§‡āϟāĻĒā§āϝāĻžāϕ⧇āϰ āϏ⧁āĻŦāĻŋāϧāĻž āύāĻŋāύ

āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϗ⧁āϞāĻŋ āĻāĻ•āĻž āĻŦāĻž āĻāĻ•āĻ¤ā§āϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

  • āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ āϏāĻŽāϝāĻŧāϏ⧂āĻšā§€ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϜāĻ¨ā§āϝ WorkManager .
  • āϤāĻĨā§āϝ āϏāĻžā§āϚāϝāĻŧ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ āϜāĻ¨ā§āϝ āϰ⧁āĻŽ .
  • āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ āĨ¤
  • āφāĻĒāύāĻžāϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϜāĻ¨ā§āϝ CameraX āĨ¤
  • āϏāĻŽāĻ¸ā§āϤ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω āĻĻ⧇āϖ⧁āύāĨ¤

āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϗ⧁āϞāĻŋ androidx āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧāĨ¤ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϝāĻĻāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ Android āϏāĻžāĻĒā§‹āĻ°ā§āϟ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ āĻĒāĻĄāĻŧ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ androidx āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āĨ¤

Jetpack āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āϜāĻžāύāϤ⧇, āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύ:

āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϏāĻŽā§āĻĒāĻĻ

āĻ…āύāϞāĻžāχāύ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ

āύāĻŽā§āύāĻž āϕ⧋āĻĄ

  • āϏāĻžāύāĻĢā§āϞāĻžāĻ“āϝāĻŧāĻžāϰ āĻĄā§‡āĻŽā§‹ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ Android āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻ…āύ⧁āĻļā§€āϞāύāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āωāĻĒāĻžāĻĻāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

āϕ⧋āĻĄāĻ˛ā§āϝāĻžāĻŦ

āĻ­āĻŋāĻĄāĻŋāĻ“