安卓 gradle 插件 v3.3.0 -> 使用 proguard 时找不到 R$raw



刚刚更新到Android gradle插件版本3.3.0

我们有以下设置(不确定哪些是重要的):

  • 具有3个库模块(数据、域、utils)的应用程序项目(应用程序)

  • 启用数据绑定(databinding.enabled true)

  • Proguard enabled(proguardFiles 'proguard-rules.pro')

当我使用:构建应用程序时

./gradlew assembleDevRelease

我得到以下错误:

can't find referenced class my.package.data.R$raw

当我使用构建应用程序时:

./gradlew :app:assembleDevRelease

该应用程序构建良好,生成一个模糊的*.apk,我可以安装

问题:

  • assembleRelease:app:assembleRelease之间有什么区别

-为什么切换到android gradle插件3.3.0会影响我必须调用哪个任务来构建我的apk?我们在CI管道中到处使用assembleRelease来构建我们的apk

  • android gradle插件3.3.0中发生了什么变化,导致任务assembleRelease中断?我们在CI管道中到处使用assembleRelease来构建我们的apk。

  • 有什么建议可以让"assemblyRelease"重新工作吗?(更新Proguard配置?,启用R8?)

assembleRelease:app:assembleRelease之间有什么区别

前者在相对于当前级别的所有模块上运行assembleRelease任务。后者仅在app模块上运行它(及其依赖项)。

为什么切换到android gradle插件3.3.0会影响我必须调用哪个任务来构建我的apk?我们在CI管道中到处使用assembleRelease来构建我们的apk。

这个问题没有足够的信息可以确定,但发布说明中列出了一些更改。例如,这个问题可能与有关

为库项目更快地生成R类:以前,Android Gradle插件会为您的每个项目的依赖项生成一个R.java文件,然后将这些R类与应用程序的其他类一起编译。该插件现在直接生成一个包含应用程序编译的R类的JAR,而无需首先构建中间的R.java类。这种优化可能会显著提高包括许多库子项目和依赖项的项目的构建性能,并提高Android Studio中的索引速度。

最新更新