在 android studio 上签名构建时出错

error in Signed build on android studio

所以这些天我正在学习如何在 Android 上编写代码,目前我正面临一个荒谬的问题!当我将它安装在我的手机上进行测试时,我的可调试构建工作得很好,但是当我创建一个签名构建并尝试在我的手机上 运行 它时,它立即崩溃:( 我迫切需要帮助!因为我真的很新Android 如果回答这个问题的人记住我的技能水平,将不胜感激。哦顺便说一句,我正在使用 Android Studio 1.5.1

你在使用混淆器吗?如果是,并且您有 jar 文件,请确保 proguard 不会意外删除您正在使用 -keep class package.name.** {*;}

行的包

在您的应用程序中查找 build.gradle 混淆器。当您使用 minify enabled 设置为 true 时启用它。

问题的发生很可能是因为 Proguard(缩小和混淆代码的工具)正在删除所需的 class,很可能是从您正在使用的库中删除。如果您使用您正在使用的任何库更新您的问题,我可以给出更具体的答案。

在您的 /app/build.gradle 文件中(请记住 Android 有两个单独的 build.gradle 文件,您需要 app/ 文件夹中的一个)您将能够看到两种不同的构建类型,"debug" 和 "release." 签名和缩小发生在 "release" 构建类型中。

您的 "release" 构建类型将如下所示:

release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    debuggable false
    signingConfig signingConfigs.release
}

为了告诉 Proguard 保留特定的 classes,您需要 edit/create 您的 proguard-rules.pro 文件与 build.gradle 文件位于同一目录中。

proguard-rules.pro 文件中,您需要添加适当的 -keep class package.name.** {*;} 行。我无法确切地告诉您这是什么,因为我不知道是哪个 library/class 导致您的应用程序崩溃。您可以在每个特定库中搜索 Google/Whosebug Proguard 问题并添加适当的 Proguard 配置。

创建 Proguard 文件后,请确保在 release 构建类型中包含此行:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'