Android Studioでプロジェクトを開いたときやGradle Sync、ビルドを実行したときに、
「Namespace not specified」
というエラーが表示されることがあります。
このエラーは、Android Gradle Pluginがアプリやライブラリの
namespace
を確認できないときに発生します。
特にAndroid Gradle Pluginを新しいバージョンへ更新した場合や、
古いAndroidプロジェクトを新しいAndroid Studioで開いた場合に発生することがあります。
この記事では、Android Studioで「Namespace not specified」と表示される主な原因と解決方法を解説します。
- 「Namespace not specified」とは
- 主な原因
- namespaceを設定する
- 設定するbuild.gradleを確認する
- AndroidManifest.xmlのpackageを確認する
- applicationIdとの違いを確認する
- 古いプロジェクトを新しいAndroid Studioで開いた場合
- Android Gradle Pluginを更新した場合
- ライブラリモジュールを確認する
- エラーに表示されているモジュールを確認する
- 複数モジュールのプロジェクトを確認する
- 外部ライブラリが原因の場合
- ローカルライブラリを確認する
- Groovy DSLとKotlin DSLの違いを確認する
- namespaceの記述場所を確認する
- namespaceの値を確認する
- JavaやKotlinのpackageを確認する
- Gradle Syncを再実行する
- Clean Projectを実行する
- Android Studioを再起動する
- エラー別の確認ポイント
- 解決しない場合の確認手順
- まとめ
「Namespace not specified」とは
「Namespace not specified」は、
Androidモジュールに必要なnamespaceが設定されていない場合に表示されるエラーです。
例えば、次のようなエラーが表示されることがあります。
Namespace not specified. Specify a namespace in the module's build file.
この場合は、アプリやライブラリモジュールの
build.gradle
または
build.gradle.kts
にnamespaceが設定されているか確認します。
主な原因
Android Studioで「Namespace not specified」が発生する主な原因には、次のようなものがあります。
namespaceが設定されていない- 古いAndroidプロジェクトを新しいAndroid Gradle Pluginで開いている
- Android Gradle Pluginを更新した
- ライブラリモジュールに
namespaceがない - 複数モジュールの一部だけ
namespaceが設定されていない - 外部ライブラリやローカルライブラリが古い
build.gradleやbuild.gradle.ktsの編集場所が間違っている- Groovy DSLとKotlin DSLの記述方法を混同している
ポイント:
「Namespace not specified」が表示された場合は、
まずエラーに表示されているモジュールを確認し、
そのモジュールのandroidブロック内に
namespaceが設定されているか確認します。
namespaceを設定する
基本的な解決方法は、
対象モジュールのGradle設定ファイルに
namespace
を追加することです。
Kotlin DSLの
build.gradle.kts
では、例えば次のように設定します。
android {
namespace = "com.example.myapplication"
}
Groovy DSLの
build.gradle
では、例えば次のように設定します。
android {
namespace 'com.example.myapplication'
}
プロジェクトで使用しているパッケージ名などを確認し、
適切なnamespaceを設定します。
設定するbuild.gradleを確認する
Androidプロジェクトには、
プロジェクト全体のGradle設定ファイルと、
appなど各モジュールのGradle設定ファイルが存在する場合があります。
namespaceは、
通常はAndroidモジュール側の
build.gradle
または
build.gradle.kts
のandroidブロックに設定します。
例えば、appモジュールでエラーが発生している場合は、
次のようなファイルを確認します。
app/build.gradle
または、
app/build.gradle.kts
プロジェクト直下のGradleファイルだけを修正しても、
対象モジュールにnamespaceが設定されていなければエラーが解決しない場合があります。
AndroidManifest.xmlのpackageを確認する
古いAndroidプロジェクトでは、
AndroidManifest.xml
のpackage属性が名前空間として使用されていた場合があります。
例えば、次のように記載されていることがあります。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
新しいAndroid Gradle Pluginでは、
モジュールのGradle設定に
namespace
を明示的に設定する必要がある場合があります。
その場合は、
AndroidManifest.xmlのpackageを参考にして、
Gradleファイルへnamespaceを追加します。
applicationIdとの違いを確認する
namespaceと
applicationId
は似ていますが、同じ役割ではありません。
例えば、次のような設定があります。
android {
namespace = "com.example.myapplication"
defaultConfig {
applicationId = "com.example.myapplication"
}
}
namespaceは、
主に生成されるRクラスやBuildConfigなどの名前空間として使用されます。
一方、
applicationIdは、
Androidアプリを識別するためのIDとして使用されます。
同じ文字列を使用することはありますが、
applicationIdが設定されているだけでは、
namespaceの設定として扱われない場合があります。
古いプロジェクトを新しいAndroid Studioで開いた場合
古いAndroid Studioや古いAndroid Gradle Pluginで作成されたプロジェクトでは、
namespaceが設定されていない場合があります。
そのプロジェクトを新しいAndroid Studioで開き、
Android Gradle Pluginも新しいバージョンへ更新すると、
「Namespace not specified」が発生することがあります。
この場合は、
各AndroidモジュールのGradle設定を確認し、
必要なnamespaceを追加します。
Android Gradle Pluginを更新した場合
Android Gradle Pluginの更新をきっかけに、
それまで問題なくビルドできていたプロジェクトで
「Namespace not specified」が表示されることがあります。
古い設定では
AndroidManifest.xml
のpackageだけで動作していても、
新しいAndroid Gradle PluginではGradle側にnamespaceが必要になる場合があります。
Android Gradle Pluginの更新後に発生した場合は、
各モジュールの
build.gradle
または
build.gradle.kts
を確認します。
ライブラリモジュールを確認する
appモジュールにnamespaceが設定されていても、
プロジェクト内のライブラリモジュールにnamespaceが設定されていない場合、
エラーが発生することがあります。
例えば、次のようなモジュールがある場合です。
app
library
common
libraryやcommonがAndroidライブラリモジュールの場合は、
それぞれのGradle設定ファイルにもnamespaceが必要になる場合があります。
例えば、次のように設定します。
android {
namespace = "com.example.library"
}
エラーに表示されているモジュールを確認する
「Namespace not specified」と表示された場合は、
エラーメッセージの前後に、
どのモジュールで問題が発生しているか表示されていることがあります。
appモジュールではなく、
別のライブラリモジュールや外部モジュールが原因の場合もあります。
まずエラー全文を確認し、
namespaceが不足しているモジュールを特定します。
複数モジュールのプロジェクトを確認する
複数のAndroidモジュールを含むプロジェクトでは、
すべてのAndroidモジュールを確認する必要があります。
1つのモジュールだけ修正しても、
別のモジュールにnamespaceが設定されていなければ、
Gradle Syncやビルドが引き続き失敗する場合があります。
各モジュールのGradle設定ファイルにある
androidブロックを確認します。
外部ライブラリが原因の場合
使用している外部ライブラリやプラグインが古い場合、
そのライブラリ側にnamespaceが設定されておらず、
新しいAndroid Gradle Pluginでエラーになることがあります。
この場合は、
自分のappモジュールにnamespaceを追加するだけでは解決しない場合があります。
使用しているライブラリに新しいバージョンがあるか確認し、
新しいAndroid Gradle Pluginに対応したバージョンへ更新できるか確認します。
ローカルライブラリを確認する
Gitなどから取得した古いAndroidライブラリを
プロジェクト内のモジュールとして使用している場合は、
そのライブラリのGradle設定にもnamespaceが必要になることがあります。
ライブラリモジュールの
build.gradle
または
build.gradle.kts
を確認し、
androidブロック内にnamespaceを設定します。
Groovy DSLとKotlin DSLの違いを確認する
namespaceの記述方法は、
Gradle設定ファイルで使用しているDSLによって異なります。
Kotlin DSLでは次のように記述します。
android {
namespace = "com.example.myapplication"
}
Groovy DSLでは次のように記述される場合があります。
android {
namespace 'com.example.myapplication'
}
Web上のサンプルコードをコピーした場合は、
自分のプロジェクトが
build.gradle
と
build.gradle.kts
のどちらを使用しているか確認します。
namespaceの記述場所を確認する
namespaceは通常、
Gradle設定ファイルの
androidブロック内に記述します。
android {
namespace = "com.example.myapplication"
compileSdk = 35
}
androidブロックの外側など、
誤った場所に記述している場合は正しく認識されないことがあります。
namespaceの値を確認する
namespaceには、
JavaやKotlinのパッケージ名として使用できる形式を指定します。
例えば次のように設定します。
com.example.myapplication
既存のプロジェクトでは、
JavaやKotlinのソースコードのpackage宣言、
または従来の
AndroidManifest.xml
のpackageを確認すると、
設定すべきnamespaceを判断しやすくなります。
JavaやKotlinのpackageを確認する
namespaceの値が分からない場合は、
JavaやKotlinのソースファイルに記載されているpackageを確認します。
例えば、次のように記載されている場合があります。
package com.example.myapplication
このような既存のパッケージ構成を参考にして、
namespaceを設定します。
Gradle Syncを再実行する
namespaceを追加または修正した後は、
Gradle Syncを再実行します。
Android Studioから
Sync Project with Gradle Files
などを実行します。
namespaceが正しく設定されていれば、
Gradle Syncが正常に完了する場合があります。
Clean Projectを実行する
namespaceを修正しても古いビルド情報などが残っている場合は、
Clean Projectを実行すると改善することがあります。
Android StudioのBuildメニューなどから
Clean Project
を実行し、
その後必要に応じてGradle SyncやRebuild Projectを実行します。
Android Studioを再起動する
Gradle設定を修正してもエラー表示が変わらない場合は、
Android Studioを再起動してから再度Gradle Syncを実行します。
一時的なIDE側の状態によって、
修正内容がすぐに反映されない場合があります。
エラー別の確認ポイント
「Namespace not specified」が表示された状況によって、
確認すべき場所をある程度絞り込むことができます。
| 状況 | 主な確認ポイント |
|---|---|
| appモジュールで発生する | app/build.gradle、app/build.gradle.ktsのnamespace |
| AGP更新後に発生した | 各Androidモジュールのnamespace |
| 古いプロジェクトで発生する | AndroidManifest.xmlのpackage、Gradle側のnamespace |
| ライブラリモジュールで発生する | ライブラリ側のbuild.gradle、namespace |
| 外部ライブラリで発生する | ライブラリの更新、AGP対応状況 |
| namespaceを追加しても失敗する | 追加したモジュール、記述場所、DSL |
解決しない場合の確認手順
原因が分からない場合は、次の順番で確認すると問題を切り分けやすくなります。
- 「Namespace not specified」のエラー全文を確認する
- どのモジュールでエラーが発生しているか確認する
- 対象モジュールの
build.gradleまたはbuild.gradle.ktsを確認する androidブロック内にnamespaceがあるか確認する- namespaceの値が正しいか確認する
- 古いプロジェクトでは
AndroidManifest.xmlのpackageを確認する applicationIdだけを設定していないか確認する- 複数モジュールの場合はすべてのAndroidモジュールを確認する
- ライブラリモジュールにもnamespaceがあるか確認する
- Groovy DSLとKotlin DSLの記述方法が合っているか確認する
- 外部ライブラリが原因の場合は更新版がないか確認する
- Gradle Syncを再実行する
- 必要に応じてClean ProjectやAndroid Studioの再起動を試す
重要:
「Namespace not specified」は、
基本的には対象となるAndroidモジュールのGradle設定に
namespaceが設定されていないことを示します。
appモジュールだけでなく、
ライブラリモジュールや古い外部ライブラリが原因になる場合もあるため、
エラーに表示されているモジュールを確認することが重要です。
まとめ
Android Studioの
「Namespace not specified」
は、
Android Gradle Pluginが対象モジュールのnamespaceを確認できない場合に表示されるエラーです。
特に古いAndroidプロジェクトを新しいAndroid Studioで開いた場合や、
Android Gradle Pluginを更新した場合に発生することがあります。
まずエラーが発生しているモジュールを確認し、
そのモジュールの
build.gradle
または
build.gradle.kts
のandroidブロック内に、
適切なnamespaceが設定されているか確認します。
appモジュールを修正しても解決しない場合は、
ライブラリモジュール、外部ライブラリ、
Android Gradle Pluginの更新状況なども確認すると、
原因を効率よく絞り込むことができます。
