ApplicationIdとpackage名が異なるときにリソースへの参照がunresolved referenceとしてマークされる
Androidネイティブ開発で、ApplicationIdとpackage名が異なる状態のとき、RとBuildConfigへの参照がunresolved referenceとされ、補完もできないという状態を解消する方法です。
環境
- compileSdkVersion 31
- buildToolsVersion 30.0.3
- AndroidStudio 2021.1.1 Patch 2
現象
gradleビルドスクリプトの一部
android {
compileSdk = 31
buildToolsVersion = "30.0.3"
defaultConfig {
applicationId = "com.hassakulab.sample"
minSdk = 23
targetSdk = 31
versionCode = 1
versionName = "0.0.1"
// 略...
}
// 略...
}
ソースコードのpackage宣言部分
package com.hassakulab.foo.bar
// ...
import com.hassakulab.foo.R // ここがunresolved reference
// ...
package名がcom.hassakulab.foo applicationIdがcom.hassakulab.sample で異なる。
エディタはunresolved referenceと解釈し、補完できない。
コンパイルは通る。
修正
ビルドスクリプトでnamespaceを指定する。 namespaceはRとBuildConfigのpackage名として利用される。
android {
namespace = "com.hassakulab.foo"
compileSdk = 31
buildToolsVersion = "30.0.3"
defaultConfig {
applicationId = "com.hassakulab.sample"
minSdk = 23
targetSdk = 31
versionCode = 1
versionName = "0.0.1"
// 略...
}
// 略...
}
最終更新日:
July 20, 2022