Erreur Gradle dans Android : No signature of method: build_*.android() — comment la corriger ?

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Vous avez rencontré « No signature of method: build_*.android() » ? Vous n'êtes pas seul

\n

Si vous avez déjà ouvert Android Studio, apporté des modifications au fichier build.gradle.kts et obtenu en retour une mystérieuse erreur rouge ERROR: No signature of method: build_ap86oam3dut3pxce3x49rdtma.android() — bienvenue au club. Ce problème avec Gradle est l'un des plus populaires sur Stack Overflow (des milliers de vues !), et il peut déstabiliser même un développeur expérimenté.

\n

Bonne nouvelle : l'erreur a presque toujours la même cause et se corrige en quelques minutes. Dans cet article, nous l'analyserons avec l'exemple du Kotlin DSL (c'est-à-dire build.gradle.kts), montrerons pourquoi elle survient et donnerons un plan de traitement étape par étape. C'est parti !

\n\n

Que signifie réellement cette erreur ?

\n

Gradle est un système de build qui lit les scripts build.gradle (Groovy) ou build.gradle.kts (Kotlin). Lorsque vous voyez No signature of method: build_*.android(), cela signifie que Gradle ne peut pas trouver la fonction android { ... } dans le contexte du projet racine.

\n

En termes simples : vous essayez de configurer des paramètres spécifiques à Android (compileSdk, buildTypes, defaultConfig) dans un script qui n'est pas un module d'application ou de bibliothèque. Cela se produit généralement dans le fichier build.gradle.kts racine, où ne doivent se trouver que les paramètres pour tous les projets (plugins, dépôts), et non la configuration Android.

\n\n

Situation typique (exemple en Kotlin DSL)

\n

Imaginez que vous ouvrez le fichier racine build.gradle.kts et écrivez quelque chose comme :

\n
// ❌ Code erroné dans le build.gradle.kts racine\nandroid {\n    compileSdk = 34\n    defaultConfig {\n        minSdk = 24\n    }\n}\n
\n

Après la synchronisation Gradle, l'erreur en question apparaît. Pourquoi ? Parce que le script racine ne connaît pas Android — il est responsable de la configuration générale, pas d'un module spécifique.

\n\n

Correction de l'erreur étape par étape

\n

Voyons comment structurer correctement les fichiers de build dans un projet Kotlin. En seulement deux étapes.

\n\n

Étape 1 : Vérifiez quel fichier vous modifiez

\n

Ouvrez le panneau Project dans Android Studio (généralement à gauche). Trouvez les deux fichiers :

\n
    \n
  • build.gradle.kts (racine, se trouve à la racine du projet)
  • \n
  • app/build.gradle.kts (fichier du module app)
  • \n
\n

L'erreur se produit si vous avez accidentellement placé le bloc android { ... } dans le fichier racine. Assurez-vous de travailler avec app/build.gradle.kts.

\n\n

Étape 2 : Déplacez le code dans le bon fichier (si nécessaire)

\n

Si vous avez trouvé le bloc android dans le build.gradle.kts racine — coupez-le et collez-le dans app/build.gradle.kts. Voici à quoi devrait ressembler la version correcte pour le module app :

\n\n
// ✅ app/build.gradle.kts correct\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    // ... autres dépendances\n}\n
\n\n

Et le fichier racine build.gra

Blogs

Book Recommendations