使用aar库中的资源时Android应用程序崩溃资源ID始终为零0x0

问题描述

我已将库项目更新为Android Studio 4.1.0和Android Gradle插件4.1.0。

它会构建一个包含一些Android资源的aar包。

一个应用程序包含该库,并使用aar包中的资源。

此应用崩溃并出现

Fatal Exception: android.content.res.Resources$NotFoundException
Resource ID #0x0

当我尝试使用aar库中的任何资源时。

解决方法

由于启用代码收缩(Proguard / R8)时,默认情况下不再保留R类的Android Gradle插件行为字段。

要在收缩后保留您的库资源,请将其添加到您的proguard-rules.pro文件中:

# Starting from Android Gradle plugin 4.1.0 fields from R classes are no longer kept by default
-keepclassmembers class your.library.package.R$* {
   public static <fields>;
}

请参阅: