can't generate signed APK from Android studio “Execution failed for task ':packageRelease'”

淺唱寂寞╮ 提交于 2019-12-17 10:52:43

问题


I am using Android Studio 1.2.2 and tried to generate APK with proguard setting. But I can't do it and got below error message.

"Execution failed for task ':packageRelease'.

Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar "

The proguard setting is just simple.

-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose

And the gradle file is below.

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion "Google Inc.:Google APIs:22"
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.bientus.cirque.sansotong"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
//        multiDexEnabled true
    }
    buildTypes {
        debug {
            debuggable true
        }

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

dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'
        compile "com.google.android.gms:play-services:7.5.0"
//    compile 'com.android.support:multidex:1.0.0'
}

buildscript {
    repositories {
//        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'com.google.gms:google-services:1.3.0-beta1'
    }
}

Can anybody give any idea or thought? Thank you very much!


回答1:


Just add to the project's proguard-rules:

-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**



回答2:


It worked after setting followings in 'proguard-project.txt'. Obviously the gradle should be set for this file.

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



回答3:


Look at your build output. You might have proguard warnings in there, like if you have 2 libraries that share some class (with potentialy different versions).

This might prevent proguard to compute an hash.

I had the same issue while having both openIAB and opfIAB (both use Amazon and google IAB) in my build. Removing one of these libs resolved my issue




回答4:


OK! its very easy ! just following step by step: build.gradle :minifyEnabled false -> minifyEnabled true proguard-rules.pro : you have to add third libraries that you use in your project like piccaso and etc. if you do this in android studio , it decline this files.

-dontwarn android.support.**
-dontwarn com.github.**
-dontwarn com.squareup.picasso.**
-dontwarn com.etsy.android.grid.**

it works :)




回答5:


I had the problem too and the best way to solve it is: Go to the gradle console and see where there is a warning e.g

Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient

Now open the proguard rules file and scroll to the bottom and add the line

-dontwarn com.squareup.okhttp.**

For any missing classes that you find on the gradle console you basically add the line

-dontwarn followed by class name 

Hope this works for everyone too. Good luck!



来源:https://stackoverflow.com/questions/30934729/cant-generate-signed-apk-from-android-studio-execution-failed-for-task-packa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!