Android gradle插件v3.3.0->;can';使用proguard时找不到R$raw

Android gradle插件v3.3.0->;can';使用proguard时找不到R$raw,android,build,android-gradle-plugin,android-proguard,Android,Build,Android Gradle Plugin,Android Proguard,刚刚更新到Android gradle插件版本3.3.0 我们有以下设置(不确定哪些是重要的): 具有3个库模块(数据、域、UTIL)的应用程序项目(app) 已启用数据绑定(Databinding.enabled true) 已启用Proguard(Proguard文件的“Proguard规则.pro”) 当我使用以下命令构建应用程序时: /gradlew assembleDevRelease 我得到以下错误: 找不到引用的类my.package.data.R$raw 当我使用以下命令构建

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

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

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

  • 已启用数据绑定(
    Databinding.enabled true

  • 已启用Proguard(
    Proguard文件的“Proguard规则.pro”

当我使用以下命令构建应用程序时:

/gradlew assembleDevRelease

我得到以下错误:

找不到引用的类my.package.data.R$raw

当我使用以下命令构建应用程序时:

/gradlew:app:assembleDevRelease

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

问题:

  • assembleerelease
    :app:assembleerelease
-为什么切换到android gradle插件3.3.0会影响我必须调用哪个任务来构建我的apk?我们在CI管道中的任何地方都使用
assembleerelease
来构建APK

  • android gradle插件3.3.0中发生了什么变化,导致任务
    AssemblerEase
    中断?我们在CI管道中的任何地方都使用
    assembleerelease
    来构建APK

  • 有什么建议可以让“assembleRelease”再次发挥作用吗?(更新Proguard配置,启用R8?)

assembleerelease
:app:assembleerelease

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

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

这个问题没有足够的信息可以确定,但在报告中列出了一些变化。例如,此问题可能与以下方面有关:

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


谢谢,我很确定变化与我们面临的问题有关。但我不知道在哪里可以找到“恢复”旧行为的方法。或者禁用什么。我们只是开始在构建管道中的任何地方使用
app:assembleerelease
。在我们的例子中,这会导致构建稍微快一点,问题就消失了。。。目前,我们正在使用版本3.5.1,我没有检查该版本中是否仍然存在问题。