问题描述
我已将库项目更新为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>;
}
请参阅:
- Android Gradle插件4.1.0:App size significantly reduced for apps using code shrinking
- Google问题搜寻者:Resource shrinker: Avoid keeping entire R class