Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新构建Android即时应用程序后,使用功能模块中基本模块中定义的颜色失败_Android_Kotlin_Android Resources_Android Instant Apps - Fatal编程技术网

重新构建Android即时应用程序后,使用功能模块中基本模块中定义的颜色失败

重新构建Android即时应用程序后,使用功能模块中基本模块中定义的颜色失败,android,kotlin,android-resources,android-instant-apps,Android,Kotlin,Android Resources,Android Instant Apps,在我的即时应用程序项目中,我有一个base模块和一个名为query模块的功能模块 MyQueryActivityinsidequery模块使用base模块中的颜色 : 如果我尝试运行该项目,它工作正常,没有任何问题。但是如果我重建项目,它会给我以下错误: ../net/epictimes/uvindex/query/QueryActivity.kt Error:(133, 63) Unresolved reference: color Error:(134, 27) Unresolved ref

在我的即时应用程序项目中,我有一个
base
模块和一个名为
query
模块的功能模块

My
QueryActivity
inside
query
模块使用
base
模块中的颜色

:

如果我尝试
运行该项目
,它工作正常,没有任何问题。但是如果我
重建项目
,它会给我以下错误:

../net/epictimes/uvindex/query/QueryActivity.kt
Error:(133, 63) Unresolved reference: color
Error:(134, 27) Unresolved reference: color
指向那些颜色值

我通过在
query
模块中添加另一个
colors.xml
文件并从中引用
base
颜色解决了这个问题。它工作得很好。你可以从中看到差异

@android:color/white
@颜色/口音
现在它可以工作了,但我不知道为什么。这样做对吗?我的问题是
base
模块中的资源不应该可以从功能模块访问吗

版本:

Android目标/编译SDK:26

科特林:1.1.50

即时应用:1.1.0

这是我的一个开源项目,你可以看到整个项目


谢谢

是的,当您使用完全限定名(package_name.R.resource_name)引用基本模块时,可以从功能模块访问基本模块内的资源

基本模块和子模块具有不同的包名称(基本功能包名称为
net.epictimes.uvindex
,功能模块包名称为
net.epictimes.uvindex.query

每个包都包含自己的资源集,在编译期间,它们的资源ID收集在单独的R包中:

  • net.epictimes.uvindex.R
    -用于基本功能模块
  • net.epictimes.uvindex.query.R
    -用于功能模块
要从“查询”功能模块访问基本功能的“强调”颜色资源,请使用
net.epictimes.uvindex.R.color.accent
标识符:

FetchAddressIntentService.RESULT\u失败->net.epictimes.uvindex.R.color.accent


即时应用程序的资源管理目前完全有缺陷。目前这是一个不可行的。。。Lint并没有抱怨错误使用的R.x语句。在许多情况下,资源只能从基本模块获得。如果应该从基本模块获取包含,那么在功能模块内部使用将破坏一切。我们还没有谈到使用proguard时的完全破坏,因为它无法检测模块之间的交叉依赖关系。你是对的。每个模块都生成自己的R.java,这里的问题是我引用了错误的R文件。谢谢你的帮助。但我认为奇怪的是,“run”工作正常,但“rebuild”由于未解决的引用错误而失败。
../net/epictimes/uvindex/query/QueryActivity.kt
Error:(133, 63) Unresolved reference: color
Error:(134, 27) Unresolved reference: color
<color name="query_location_success_text">@android:color/white</color>
<color name="query_location_fail_text">@color/accent</color>