记Android新版本构建导致的问题-android 不能直接引

2022-05-11  本文已影响0人  空白一页_blank

问题 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 来开启构建系统中的特定设置。这将使构建能够跳过大量的资源合并,从而有助于提高性能。如果您的项目中包含大量的模块和资源,强烈建议您尝试这一功能。

上一篇下一篇

猜你喜欢

热点阅读