Já encontrou «No signature of method: build_*.android()»? Você não está sozinho
\nSe você já abriu o Android Studio, fez alterações no arquivo build.gradle.kts e recebeu um misterioso erro vermelho ERROR: No signature of method: build_ap86oam3dut3pxce3x49rdtma.android() — bem-vindo ao clube. Este problema com o Gradle é um dos mais populares no Stack Overflow (milhares de visualizações!) e pode desestabilizar até mesmo um desenvolvedor experiente.
A boa notícia: o erro quase sempre tem a mesma causa e é corrigido em alguns minutos. Neste artigo, vamos analisá-lo usando o Kotlin DSL (ou seja, build.gradle.kts), mostrar por que ele ocorre e fornecer um plano de ação passo a passo. Vamos lá!
O que esse erro realmente significa?
\nGradle é um sistema de build que lê scripts build.gradle (Groovy) ou build.gradle.kts (Kotlin). Quando você vê No signature of method: build_*.android(), significa que o Gradle não consegue encontrar a função android { ... } no contexto do projeto raiz.
Simplificando: você está tentando configurar parâmetros específicos do Android (compileSdk, buildTypes, defaultConfig) em um script que não é um módulo de aplicativo ou biblioteca. Geralmente, isso acontece no raiz build.gradle.kts, onde devem estar apenas as configurações para todos os projetos (plugins, repositórios), e não a configuração do Android.
Situação típica (exemplo em Kotlin DSL)
\nImagine que você abre o arquivo raiz build.gradle.kts e escreve algo como:
// ❌ Código incorreto no build.gradle.kts raiz\nandroid {\n compileSdk = 34\n defaultConfig {\n minSdk = 24\n }\n}\n\nApós a sincronização do Gradle, o erro aparece. Por quê? Porque o script raiz não conhece o Android — ele é responsável pela configuração geral, não por um módulo específico.
\n\nCorreção passo a passo do erro
\nVamos entender como estruturar corretamente os arquivos de build em um projeto Kotlin. Apenas dois passos.
\n\nPasso 1: Verifique qual arquivo você está editando
\nAbra o painel Project no Android Studio (geralmente à esquerda). Encontre dois arquivos:
\n- \n
build.gradle.kts(raiz, localizado na raiz do projeto) \n app/build.gradle.kts(arquivo do móduloapp) \n
O erro ocorre se você acidentalmente colocou o bloco android { ... } no arquivo raiz. Certifique-se de que está trabalhando com app/build.gradle.kts.
Passo 2: Mova o código para o arquivo correto (se necessário)
\nSe você encontrou o bloco android no build.gradle.kts raiz — recorte-o e cole no app/build.gradle.kts. Veja como deve ser a versão correta para o módulo app:
// ✅ app/build.gradle.kts correto\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 // ... outras dependências\n}\n\n\nE o build.gra