Gradle'da com.android.application ve apply plugin hataları: hızlı rehber
Çoğu durumda sorun şu adımlarla çözülür: Gradle Wrapper ve Android Gradle Plugin (AGP) güncellemesi, yinelenen eklenti bildirimlerinin kaldırılması (plugins DSL + apply) ve buildscript/pluginManagement yapılarının tek bir şemaya uygun hale getirilmesi. Aşağıda somut adımlar ve yapılandırma örnekleri yer almaktadır.
com.android.application ve apply plugin hataları neden ortaya çıkar
Hatalar, Gradle ve AGP sürümlerinin uyumsuzluğundan, iki farklı eklenti bağlama yönteminin (plugins DSL ve eski apply plugin) karıştırılmasından veya gerekli depoların/classpath'in eksikliğinden kaynaklanır. Gradle güncellendiğinde AGP'nin de güncellenmesi gerekir; aksi takdirde eklenti bulunamaz veya UnsupportedClassVersionError hatası verir.
Sık görülen bir hata, hem plugins { id 'com.android.application' version 'X' } hem de apply plugin: 'com.android.application' kullanmaktır. Bu durum çakışmalara yol açar.
Düzeltme adımları
-
Gradle Wrapper'ı kontrol edin
- gradle/wrapper/gradle-wrapper.properties dosyasını açın ve Gradle sürümünün kullanmayı planladığınız AGP ile uyumlu olduğundan emin olun (AGP belgelerindeki uyumluluk tablosuna bakın).
- Wrapper'ı güncelleyin: ./gradlew wrapper --gradle-version X.Y
-
Android Gradle Plugin'i güncelleyin
- buildscript/classpath kullanıyorsanız, proje düzeyindeki build.gradle dosyasında şunu belirtin:
buildscript {
repositories { google(); mavenCentral() }
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2' // örnek
}
}
- plugins DSL kullanıyorsanız, modül düzeyindeki build.gradle dosyasında plugins bloğunda sürümü belirtin:
plugins {
id 'com.android.application' version '7.4.2'
}
-
Yaklaşımları karıştırmayın
- Tek bir yöntem seçin: eski buildscript + apply plugin (legacy bağımlılıkları olan projeler için uygundur) veya plugins DSL (modern). Yinelenenleri kaldırın.
-
repositories ve pluginManagement'ı kontrol edin
- plugins DSL için settings.gradle dosyasının pluginManagement içinde depoları içerdiğinden emin olun:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
-
Kotlin eklentileri için apply/ID sözdizimini düzeltin
- Kotlin eklentisi: apply plugin: 'kotlin-android' (eski) veya plugins { id 'org.jetbrains.kotlin.android' version '1.8.0' }.
-
Temizleme ve yeniden derleme
- ./gradlew clean assembleDebug komutunu çalıştırın veya Android Studio'da Invalidate Caches/Restart yapın.
Doğru yapılandırma örnekleri
- Eski (buildscript + apply), modül düzeyindeki build.gradle:
// project build.gradle
buildscript {
repositories { google(); mavenCentral() }
dependencies { classpath 'com.android.tools.build:gradle:4.2.2' }
}
// app module build.gradle
apply plugin: 'com.android.application'
android { compileSdkVersion 31 /* ... */ }
- Modern (plugins DSL):
// settings.gradle
pluginManagement {
repositories { google(); mavenCentral(); gradlePluginPortal() }
}
// app module build.gradle
plugins {
id 'com.android.application' version '7.4.2'
id 'org.jetbrains.kotlin.android' version '1.8.0'
}
android { compileSdk 33 /* ... */ }
Sık görülen hatalar ve çözümleri
- "Plugin with id 'com.android.application' not found" — repository/classpath yolunu veya pluginManagement'ı, sürüm uyumluluğunu kontrol edin.
- "Could not find com.android.tools.build:gradle" — üst düzey build.gradle veya settings.pluginManagement içindeki repositories bölümüne google() ve mavenCentral() ekleyin.
- "Deprecated Gradle features" — eklentileri güncelleyin ve kullanımdan kalkmış sözdizimini kaldırın.
- "Unsupported major.minor version" — bu bir Java uyumsuzluğudur; AGP tarafından desteklenen JDK'yı kullanın.
Proje büyük ve çok modüllüyse, plugins DSL'e kademeli olarak geçiş yapın: önce ayrı bir dalda test edin ve Gradle Wrapper ile AGP'yi aynı anda güncelleyin.
SSS
-
Her modülde AGP sürümünü belirtmek gerekir mi?
- Merkezi yönetmek daha iyidir: projede buildscript veya settings.gradle içinde pluginManagement kullanın. plugins DSL'de sürümü modülde belirtebilirsiniz, ancak çok modüllü projelerde bunu sürdürmek daha zordur.
-
Gradle ↔ AGP uyumluluğunu hızlıca nasıl kontrol edebilirim?
- AGP sürüm notlarında minimum ve önerilen Gradle sürümü belirtilir. Güncelleme öncesi sürümleri karşılaştırın.
-
Hata neden tekrar ortaya çıktı?
- build dosyalarındaki son değişiklikleri geri alın, ./gradlew --refresh-dependencies komutunu çalıştırın ve kesin nedeni öğrenmek için derleme günlüklerini kontrol edin.
build.gradle (proje ve modül) ile gradle-wrapper.properties dosyalarınızın içeriğini paylaşırsanız, size özel düzeltmeleri hızla önerebilirim.