问题 module之间无法直接引用R文件。
android 不能直接引用module资源
例如
A module com.test.a
B module com.test.b
a module 已经引用Bmodule
但是代码中不能直接调用 R.layout.B
需要 com.test.b.R.layout.B
主要原因是Android Studio Arctic Fox 新版本新建工程,gradle.properties默认会加一行参数
···
android.nonTransitiveRClass=true
···
这是官方说明
Enables namespacing of each library's R class so that its R class includes only the
resources declared in the library itself and none from the library's dependencies,
thereby reducing the size of the R class for that library
启用每个库的R类的名称空间,以便其R类仅包含
在库本身中声明的资源,而没有来自库依赖项的资源,
从而减少了该库的R类的大小
郭霖
Android Studio 新特性详解
https://mp.weixin.qq.com/s/ouI2wD2hjmd02w3DQCgm7Q
支持非传递 R 类
另一个与构建相关的功能,是对非传递 R 类的支持。为了演示这一功能,我切换到了一个更大的项目——k-9 邮件应用。我们首先点击 "Refactor",然后选择 "Migrate to Non-Transitive R Classes"。此操作将分析整个项目,找到所有引用资源的源文件,并将它们重新编写为项目本地文件,与此同时还会在 gradle.properties 中添加 android.nonTransitiveRClass=true 来开启构建系统中的特定设置。这将使构建能够跳过大量的资源合并,从而有助于提高性能。如果您的项目中包含大量的模块和资源,强烈建议您尝试这一功能。
网友评论