Android Studio,签名APK,无法计算哈希(proguard)

时间:2015-10-07 23:31:59

标签: android-studio android-proguard

Android Studio 1.3.1

我有以下文件:

%APPNAME%\应用\的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 9
        targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }

  repositories {
    maven { url "https://jitpack.io" }
  } 
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:appcompat-v7:21.1.2'
    compile 'com.github.PhilJay:MPAndroidChart:v2.0.8'
}

%APPNAME%\应用\ proguard的-project.txt

-dontwarn com.google.android.gms.
-keep class com.google.android.gms.** { *; }

-dontwarn android.support.v7.
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

-dontwarn com.github.PhilJay.
-keep class com.github.PhilJay.** { *; }


-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

我在这里尝试过很多东西。还是要学会确保一切都是100%正确

当我尝试生成已签名的APK时,我收到错误:

  

错误:任务':app:packageRelease'执行失败。无法   计算哈希值   宽:\机器人工作室项目\%APPNAME%\应用\建立\中间体\类-proguard的\释放\ classes.jar

在此之前我得到这两个警告:

  

警告:com.google.android.gms.internal.zzhu:无法找到引用   class android.security.NetworkSecurityPolicy警告:有3个   对类或接口的未解析引用。            您可能需要添加缺少的库jar或更新其版本。            如果您的代码工作正常而没有丢失的类,则可以禁止            警告' -dontwarn'选项。            (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)   处理任务时出现异常

现在,如果我改为

minifyEnabled true

它有效,但......我宁愿使用minify。我不确定警告是否是原因?毕竟,它说警告可以被取消,所以这些警告不一定是错误的原因吗?

1 个答案:

答案 0 :(得分:1)

关于哈希生成问题,当我尝试生成已启用minify和proguard的已签名apk时,我遇到了同样的问题。

请注意,我确信proguard配置有效,因为我将它用于Eclipse中的同一个项目。

我找到的解决方法是删除项目的.gradle(而不是gradle !!)和所有模块的构建目录。

然后我进行完全重建..然后完成了apk。

我知道这不是最好的解决方案......但它确实有效。