Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Kotlin Multiplatform'da kitaplık modülünü yapılandırmak için bir Gradle eklentisi bulunur.
com.android.kotlin.multiplatform.library eklentisi, normal Android kitaplığı Gradle eklentisi (com.android.library) kullanılarak KMP kitaplıklarına Android hedefleri ekleme yönteminin resmi olarak yerini almıştır.
Önceki yaklaşım, Android-KMP eklentisi olarak da bilinen eklenti lehine artık kullanımdan kaldırılmıştır. KMP için com.android.library
eklentinin kullanımı artık JetBrains tarafından desteklenmeyecek ve gelecekteki güncellemelerden ve iyileştirmelerden yararlanmayacak.
Android-KMP eklentisi, özellikle KMP projeleri için tasarlanmıştır ve standart com.android.library eklentisinden birkaç önemli açıdan farklıdır:
Tek varyantlı mimari: Eklenti, tek bir varyant kullanır. Bu sayede, ürün çeşitleri ve derleme türleri için destek kaldırılır. Böylece yapılandırma basitleştirilir ve derleme performansı artırılır.
KMP için optimize edildi: Eklenti, KMP kitaplıkları için tasarlanmıştır. Android'e özgü yerel derlemeler, AIDL ve RenderScript desteğini atlayarak paylaşılan Kotlin kodu ve birlikte çalışabilirliğe odaklanır.
Varsayılan olarak devre dışı bırakılan testler: Derleme hızını artırmak için hem birim hem de cihaz (enstrümantasyon) testleri varsayılan olarak devre dışı bırakılır. Gerekirse bunları etkinleştirebilirsiniz.
Üst düzey Android uzantısı yok: Yapılandırma, Gradle KMP DSL'deki bir androidLibrary bloğuyla işlenir ve tutarlı bir KMP proje yapısı korunur. Üst düzey android uzantı engellemesi yok.
Java derlemesini etkinleştirme: Java derlemesi varsayılan olarak devre dışıdır. Etkinleştirmek için androidLibrary bloğunda withJava() simgesini kullanın. Bu, Java derlemesi gerekmediğinde derleme sürelerini kısaltır.
Android-KMP kitaplığı eklentisinin avantajları
Android-KMP eklentisi, KMP projeleri için aşağıdaki avantajları sunar:
Daha iyi derleme performansı ve kararlılık: Optimize edilmiş derleme hızları ve KMP projelerinde daha iyi kararlılık için tasarlanmıştır. KMP iş akışlarına odaklanması, daha verimli ve güvenilir bir derleme sürecine katkıda bulunur.
Gelişmiş IDE entegrasyonu: KMP Android kitaplıklarıyla çalışırken daha iyi kod tamamlama, gezinme, hata ayıklama ve genel geliştirici deneyimi sağlar.
Basitleştirilmiş proje yapılandırması: Eklenti, derleme varyantları gibi Android'e özgü karmaşıklıkları kaldırarak KMP projelerinin yapılandırmasını basitleştirir. Bu sayede daha temiz ve bakımı daha kolay derleme dosyaları elde edilir.
Daha önce, KMP projesinde com.android.library eklentisinin kullanılması, androidAndroidTest gibi kafa karıştırıcı kaynak grubu adlarının oluşturulmasına neden olabiliyordu. Bu adlandırma kuralı, standart KMP proje yapılarına aşina olan geliştiriciler için daha az sezgiseldi.
Android-KMP eklentisini mevcut bir modüle uygulama
Android-KMP eklentisini mevcut bir KMP kitaplık modülüne uygulamak için aşağıdaki adımları uygulayın:
Sürüm kataloğunda eklentileri bildirin. Sürüm kataloğu TOML dosyasını (genellikle gradle/libs.versions.toml) açın ve eklenti tanımları bölümünü ekleyin:
# To check the version number of the latest Kotlin release, go to# https://kotlinlang.org/docs/releases.html[versions]androidGradlePlugin="8.12.0"kotlin="KOTLIN_VERSION"[plugins]kotlin-multiplatform={id="org.jetbrains.kotlin.multiplatform",version.ref="kotlin"}android-kotlin-multiplatform-library={id="com.android.kotlin.multiplatform.library",version.ref="androidGradlePlugin"}
Eklenti bildirimini kök derleme dosyasına uygulayın. Projenizin kök dizininde bulunan
build.gradle.kts dosyasını açın. plugins kullanarak eklenti takma adlarını plugins bloğuna ekleyin.apply false Bu sayede, eklenti mantığı kök projeye uygulanmadan eklenti takma adları tüm alt projelerde kullanılabilir.
Kotlin
// Root build.gradle.kts fileplugins{alias(libs.plugins.kotlin.multiplatform)applyfalse// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)applyfalse}
Groovy
// Root build.gradle fileplugins{alias(libs.plugins.kotlin.multiplatform)applyfalse// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)applyfalse}
Eklentiyi bir KMP kitaplık modülü derleme dosyasında uygulayın. KMP kitaplık modülünüzdeki build.gradle.kts dosyasını açın ve eklentiyi plugins bloğundaki dosyanızın en üstüne uygulayın:
Kotlin
// Module-specific build.gradle.kts fileplugins{alias(libs.plugins.kotlin.multiplatform)// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)}
Groovy
// Module-specific build.gradle fileplugins{alias(libs.plugins.kotlin.multiplatform)// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)}
Android KMP hedefini yapılandırın. Android hedefini tanımlamak için Kotlin Multiplatform bloğunu (kotlin) yapılandırın. kotlin bloğunda, androidLibrary kullanarak Android hedefini belirtin:
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-21 UTC.
[null,null,["Son güncelleme tarihi: 2025-08-21 UTC."],[],[],null,["# Migrate to the Android-KMP library plugin\n\nKotlin Multiplatform has a Gradle plugin to configure the\n[library module](/studio/projects/android-library).\n\nThe `com.android.kotlin.multiplatform.library` plugin is the official\nreplacement for the previous method of adding Android targets to KMP libraries\nusing the regular Android library Gradle plugin (`com.android.library`).\n\nThe previous approach is now deprecated in favor of the plugin, also referred to\nas the **Android-KMP plugin** . Continuing to use the `com.android.library`\nplugin for KMP will no longer be supported by JetBrains and won't benefit from\nfuture updates and improvements.\n| **Note:** Configuring the Android **application** module using `com.android.application` doesn't change.\n\nTo migrate to this plugin, refer to the [Apply the Android-KMP plugin](#apply)\nsection.\n\nKey features and differences\n----------------------------\n\nThe Android-KMP plugin is tailored specifically for KMP projects and differs\nfrom the standard `com.android.library` plugin in several key aspects:\n\n- **Single variant architecture:** The plugin uses a single variant, removing\n support for product flavors and build types, which simplifies configuration\n and enhances build performance.\n\n- **Optimized for KMP:** The plugin is designed for KMP libraries, focusing on\n shared Kotlin code and interoperability, omitting support for\n Android-specific native builds, AIDL, and RenderScript.\n\n- **Tests disabled by default:** Both unit and device (instrumentation) tests\n are disabled by default to enhance build speed. You can enable them if\n required.\n\n- **No top-Level Android extension:** Configuration is handled with an\n `androidLibrary` block within the Gradle KMP DSL, maintaining a consistent\n KMP project structure. There's no top-level `android` extension block.\n\n- **Opt-in Java compilation:** Java compilation is disabled by default. Use\n `withJava()` in the `androidLibrary` block to enable it. This improves build\n times when Java compilation is not needed.\n\nBenefits of the Android-KMP library plugin\n------------------------------------------\n\nThe Android-KMP plugin provides the following benefits for KMP projects:\n\n- **Improved build performance and stability:** It's engineered for optimized\n build speeds and enhanced stability within KMP projects. It's focus on KMP\n workflows contribute to a more efficient and reliable build process.\n\n- **Enhanced IDE integration:** It provides better code completion,\n navigation, debugging, and overall developer experience when working with\n KMP Android libraries.\n\n- **Simplified project configuration:** The plugin simplifies configuration\n for KMP projects by removing Android-specific complexities like build\n variants. This leads to cleaner and more maintainable build files.\n Previously, using the `com.android.library` plugin in KMP project could\n create confusing source set names, such as `androidAndroidTest`. This naming\n convention was less intuitive for developers familiar with standard KMP\n project structures.\n\nApply the Android-KMP plugin to an existing module\n--------------------------------------------------\n\nTo apply the Android-KMP plugin to an existing KMP library module, follow these\nsteps:\n\n1. **Declare plugins in version catalog.** Open the version catalog TOML file\n (usually `gradle/libs.versions.toml`) and add the plugin definitions\n section:\n\n # To check the version number of the latest Kotlin release, go to\n # https://kotlinlang.org/docs/releases.html\n\n [versions]\n androidGradlePlugin = \"8.12.0\"\n kotlin = \"\u003cvar translate=\"no\"\u003eKOTLIN_VERSION\u003c/var\u003e\"\n\n [plugins]\n kotlin-multiplatform = { id = \"org.jetbrains.kotlin.multiplatform\", version.ref = \"kotlin\" }\n android-kotlin-multiplatform-library = { id = \"com.android.kotlin.multiplatform.library\", version.ref = \"androidGradlePlugin\" }\n\n2. **Apply the plugin declaration in root build file.** Open the\n `build.gradle.kts` file located in the root directory of your project. Add\n the plugin aliases to the `plugins` block using `apply false`. This makes\n the plugin aliases available to all subprojects without applying the plugin\n logic to the root project itself.\n\n ### Kotlin\n\n ```kotlin\n // Root build.gradle.kts file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform) apply false\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library) apply false\n }\n ```\n\n ### Groovy\n\n ```groovy\n // Root build.gradle file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform) apply false\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library) apply false\n }\n ```\n3. **Apply the plugin in a KMP library module build file.** Open the\n `build.gradle.kts` file in your KMP library module and apply the plugin at\n the top of your file within the `plugins` block:\n\n ### Kotlin\n\n ```kotlin\n // Module-specific build.gradle.kts file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform)\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library)\n }\n ```\n\n ### Groovy\n\n ```groovy\n // Module-specific build.gradle file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform)\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library)\n }\n ```\n4. **Configure Android KMP target.** Configure the Kotlin Multiplatform block\n (`kotlin`) to define the Android target. Within the `kotlin` block, specify\n the Android target using `androidLibrary`:\n\n ### Kotlin\n\n ```kotlin\n kotlin {\n androidLibrary {\n namespace = \"com.example.kmpfirstlib\"\n compileSdk = 33\n minSdk = 24\n\n withJava() // enable java compilation support\n withHostTestBuilder {}.configure {}\n withDeviceTestBuilder {\n sourceSetTreeName = \"test\"\n }\n\n compilations.configureEach {\n compilerOptions.configure {\n jvmTarget.set(\n org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8\n )\n }\n }\n }\n\n sourceSets {\n androidMain {\n dependencies {\n // Add Android-specific dependencies here\n }\n }\n getByName(\"androidHostTest\") {\n dependencies {\n }\n }\n\n getByName(\"androidDeviceTest\") {\n dependencies {\n }\n }\n }\n // ... other targets (JVM, iOS, etc.) ...\n }\n ```\n\n ### Groovy\n\n ```groovy\n kotlin {\n androidLibrary {\n namespace = \"com.example.kmpfirstlib\"\n compileSdk = 33\n minSdk = 24\n\n withJava() // enable java compilation support\n withHostTestBuilder {}.configure {}\n withDeviceTestBuilder {\n it.sourceSetTreeName = \"test\"\n }\n\n compilations.configureEach {\n compilerOptions.options.jvmTarget.set(\n org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8\n )\n }\n }\n\n sourceSets {\n androidMain {\n dependencies {\n }\n }\n androidHostTest {\n dependencies {\n }\n }\n androidDeviceTest {\n dependencies {\n }\n }\n }\n // ... other targets (JVM, iOS, etc.) ...\n }\n ```\n5. **Apply changes.** After applying the plugin and configuring the `kotlin`\n block, sync your Gradle project to apply the changes.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Set up your environment](/kotlin/multiplatform/setup)\n- [Add KMP module to a project](/kotlin/multiplatform/migrate)"]]