Haben Sie „No signature of method: build_*.android()“ gesehen? Sie sind nicht allein
\nWenn Sie jemals Android Studio geöffnet, Änderungen an der Datei build.gradle.kts vorgenommen und als Antwort den mysteriösen roten Fehler ERROR: No signature of method: build_ap86oam3dut3pxce3x49rdtma.android() erhalten haben – willkommen im Club. Dieses Problem mit Gradle ist eines der beliebtesten auf Stack Overflow (tausende Aufrufe!) und kann selbst erfahrene Entwickler aus der Bahn werfen.
Die gute Nachricht: Der Fehler hat fast immer dieselbe Ursache und ist in wenigen Minuten behoben. In diesem Artikel analysieren wir ihn am Beispiel des Kotlin DSL (also build.gradle.kts), zeigen, warum er auftritt, und geben eine Schritt-für-Schritt-Anleitung zur Behebung. Los geht's!
Was bedeutet dieser Fehler eigentlich?
\nGradle ist ein Build-System, das Skripte build.gradle (Groovy) oder build.gradle.kts (Kotlin) liest. Wenn Sie No signature of method: build_*.android() sehen, bedeutet dies, dass Gradle die Funktion android { ... } im Kontext des Root-Projekts nicht finden kann.
Einfach ausgedrückt: Sie versuchen, Android-spezifische Parameter (compileSdk, buildTypes, defaultConfig) in einem Skript zu konfigurieren, das kein App- oder Bibliotheksmodul ist. Dies geschieht normalerweise im Root-build.gradle.kts, wo nur Einstellungen für alle Projekte (Plugins, Repositories) stehen sollten, nicht aber die Android-Konfiguration.
Typische Situation (Beispiel mit Kotlin DSL)
\nStellen Sie sich vor, Sie öffnen die Root-Datei build.gradle.kts und schreiben so etwas wie:
// ❌ Fehlerhafter Code im Root build.gradle.kts\nandroid {\n compileSdk = 34\n defaultConfig {\n minSdk = 24\n }\n}\n\nNach der Gradle-Synchronisation erscheint genau dieser Fehler. Warum? Weil das Root-Skript nichts über Android weiß – es ist für die allgemeine Konfiguration zuständig, nicht für ein bestimmtes Modul.
\n\nSchritt-für-Schritt-Fehlerbehebung
\nLassen Sie uns klären, wie die Build-Dateien in einem Kotlin-Projekt richtig strukturiert werden. Nur zwei Schritte.
\n\nSchritt 1: Überprüfen Sie, welche Datei Sie bearbeiten
\nÖffnen Sie das Project-Panel in Android Studio (normalerweise links). Suchen Sie die beiden Dateien:
\n- \n
build.gradle.kts(Root, befindet sich im Projekt-Root) \n app/build.gradle.kts(Datei desapp-Moduls) \n
Der Fehler tritt auf, wenn Sie versehentlich den Block android { ... } in die Root-Datei gesetzt haben. Stellen Sie sicher, dass Sie mit app/build.gradle.kts arbeiten.
Schritt 2: Verschieben Sie den Code in die richtige Datei (falls nötig)
\nWenn Sie den Block android im Root-build.gradle.kts finden – schneiden Sie ihn aus und fügen Sie ihn in app/build.gradle.kts ein. So sieht die korrekte Version für das app-Modul aus:
// ✅ Korrektes app/build.gradle.kts\nplugins {\n id("com.android.application")\n id("org.jetbrains.kotlin.android")\n}\n\nandroid {\n namespace = "com.example.myapp"\n compileSdk = 34\n\n defaultConfig {\n applicationId = "com.example.myapp"\n minSdk = 24\n targetSdk = 34\n versionCode = 1\n versionName = "1.0"\n }\n\n buildTypes {\n release {\n isMinifyEnabled = false\n proguardFiles(\n getDefaultProguardFile("proguard-android-optimize.txt"),\n "proguard-rules.pro"\n )\n }\n }\n\n compileOptions {\n sourceCompatibility = JavaVersion.VERSION_1_8\n targetCompatibility = JavaVersion.VERSION_1_8\n }\n\n kotlinOptions {\n jvmTarget = "1.8"\n }\n}\n\ndependencies {\n implementation("androidx.core:core-ktx:1.12.0")\n implementation("androidx.appcompat:appcompat:1.6.1")\n // ... restliche Abhängigkeiten\n}\n\n\nUnd das Root-build.gra