【问题标题】:error in Signed build on android studio在 android studio 上签名构建中的错误
【发布时间】:2016-02-12 05:06:33
【问题描述】:

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

【问题讨论】:

标签: java android android-studio signed


【解决方案1】:

问题的发生很可能是因为 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'

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 1970-01-01
      • 2023-03-26
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多