问题的发生很可能是因为 Proguard(缩小和混淆代码的工具)正在删除所需的类,很可能是从您正在使用的库中删除。如果您使用您正在使用的任何库更新您的问题,我可以给出更具体的答案。
在您的 /app/build.gradle 文件中(请记住,Android 有两个单独的 build.gradle 文件,您需要在 app/ 文件夹中的一个)您将能够看到两种单独的构建类型,“调试”和“发布。”签名和缩小发生在“发布”构建类型中。
您的“发布”构建类型将如下所示:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable false
signingConfig signingConfigs.release
}
为了告诉 Proguard 保留特定的类,您需要在与您的 build.gradle 文件相同的目录中编辑/创建您的 proguard-rules.pro 文件。
在proguard-rules.pro 文件中,您需要添加适当的-keep class package.name.** {*;} 行。我不能确切地告诉你这是什么,因为我不确切知道哪个库/类导致你的应用程序崩溃。您可以在 Google/StackOverflow 中搜索每个特定库的 Proguard 问题并添加适当的 Proguard 配置。
创建 Proguard 文件后,请确保您的 release 构建类型中有此行:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'