2015-11-05 94 views
0

我真的不明白我需要做什么才能让proguard减小apk的大小。我发布的应用程序使用的是Google Maps API v2,至今为止,除了在尝试生成已签名的APK时显示此消息这一事实,它的工作状况良好。Android:发布版本由于无法计算散列而失败?

Error:Execution failed for task ':app:packageRelease'. 
> Unable to compute hash of (app path)\app\build\intermediates\classes-proguard\release\classes.jar 

如何解决此问题?

摇篮:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.abcd.efgh" 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 2 
     versionName "1.1" 
    } 

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

dependencies { 
    compile 'com.android.support:support-v4:23.1.0' 
    compile 'com.google.android.gms:play-services:8.1.0' 
    compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.google.android.gms:play-services-ads:8.1.0' 
    compile 'com.google.android.gms:play-services-identity:8.1.0' 
    compile 'com.google.android.gms:play-services-gcm:8.1.0' 
} 

proguard的-project.txt

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

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 

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

回答

0

我固定它自己。

首先,我去gradle这个并确保在这一部分中gradle这个,

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 

第二个文件名是相同的名称proguard相关文件。

然后,我添加了这些东西ProGuard的文件的顶部:

-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 
-dontwarn android.support.v4.** 
-keep public class com.google.android.gms.* { public *; } 
-dontwarn com.google.android.gms.** 

那到底造成的ProGuard来成功地创建一个发布版本。

相关问题