Jika kamu sedang mengembangkan aplikasi Flutter yang menggunakan plugin atau package lawas, mungkin kamu akan menemui error Namespace not specified
saat proses build. Error ini terjadi karena struktur Android Gradle Plugin (AGP) terbaru mewajibkan setiap modul Android memiliki properti namespace
. Artikel ini membahas solusi untuk mengatasi masalah ini melalui file build.gradle.kts
dengan Kotlin DSL.
Apa Itu Error "Namespace Not Specified"?
Error ini biasanya muncul ketika menjalankan perintah flutter build
atau flutter run
, dan disebabkan karena modul Android tidak mendeklarasikan namespace secara eksplisit, terutama pada package atau plugin lama yang belum mengikuti struktur baru AGP 7.0 ke atas.
A problem occurred configuring project ':package_name'.
> Namespace not specified. Please specify a namespace in the module's build.gradle file...
Solusi Mengatasi Namespace Error
1. Buka File android/build.gradle.kts
Kita akan menambahkan konfigurasi global agar semua modul secara otomatis mendapatkan nilai namespace
jika belum diset.
2. Tambahkan Baris Berikut di build.gradle.kts
subprojects {
afterEvaluate {
if (plugins.hasPlugin("com.android.library")) {
extensions.configure<com.android.build.gradle.LibraryExtension>("android") {
if (namespace == null) {
namespace = group.toString()
}
}
}
}
}
Penjelasan:
afterEvaluate
digunakan agar konfigurasi dijalankan setelah semua plugin diinisialisasi.com.android.library
memastikan hanya modul Android Library yang dimodifikasi.namespace = group.toString()
memberi nilai default sesuai group dari project. Kamu bisa ganti nilainya sesuai kebutuhan.
3. Untuk Versi Groovy (Jika Tidak Pakai Kotlin DSL)
Jika kamu masih menggunakan build.gradle
berbasis Groovy, tambahkan ini:
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
afterEvaluate { project ->
if (project.hasProperty('android')) {
project.android {
if (namespace == null) {
namespace project.group
}
}
}
}
}
Tips Tambahan
Pastikan versi AGP dan Gradle sudah sesuai dengan minimum requirement Flutter terbaru.
Kamu bisa mengatur nilai
namespace
statis jika ingin lebih eksplisit, misalnyanamespace = "com.example.library"
.Update package/plugin ke versi terbaru jika tersedia, karena sebagian besar plugin baru sudah menyertakan
namespace
.
Kesimpulan
Dengan menambahkan konfigurasi namespace secara global di build.gradle.kts
, kamu bisa mengatasi error Namespace not specified
tanpa harus mengubah banyak file pada plugin Flutter yang sudah usang. Solusi ini sangat berguna ketika kamu tidak bisa langsung memperbarui plugin ke versi terbaru.