无法从 Android Studio 生成签名的 APK “任务 ':packageRelease' 执行失败”

Posted

技术标签:

【中文标题】无法从 Android Studio 生成签名的 APK “任务 \':packageRelease\' 执行失败”【英文标题】:can't generate signed APK from Android studio "Execution failed for task ':packageRelease'"无法从 Android Studio 生成签名的 APK “任务 ':packageRelease' 执行失败” 【发布时间】:2015-09-05 05:38:46 【问题描述】:

我正在使用 android Studio 1.2.2 并尝试使用 proguard 设置生成 APK。但我不能这样做并收到以下错误消息。

“任务':packageRelease'执行失败。

无法计算 /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar 的哈希值

proguard 设置很简单。

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

gradle 文件在下面。

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'
    

任何人都可以提供任何想法或想法吗? 非常感谢!

【问题讨论】:

您解决了吗?我也面临同样的问题 Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar的可能重复 【参考方案1】:

只需添加到项目的 proguard-rules:

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

【讨论】:

为什么 android.gms 是 OP 问题中的一个因素?【参考方案2】:

在“proguard-project.txt”中设置以下内容后它工作了。 显然应该为这个文件设置gradle。

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

【讨论】:

你能帮我解决我面临同样的问题。【参考方案3】:

查看您的构建输出。您可能会在其中看到 proguard 警告,例如,如果您有 2 个共享某个类的库(可能具有不同的版本)。

这可能会阻止 proguard 计算哈希。

在我的构建中同时使用 openIAB 和 opfIAB(都使用 Amazon 和 google IAB)时,我遇到了同样的问题。删除其中一个库解决了我的问题

【讨论】:

【参考方案4】:

好的!它很容易!一步一步来: build.gradle :minifyEnabled false -> minifyEnabled true proguard-rules.pro: 您必须添加您在项目中使用的第三个库,例如 piccaso 等。 如果您在 android studio 中执行此操作,它会拒绝此文件。

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

它有效:)

【讨论】:

【参考方案5】:

我也遇到了这个问题,解决它的最佳方法是: 转到 gradle 控制台,看看哪里有警告,例如

警告:com.squareup.picasso.OkHttpDownloader:找不到引用的类 com.squareup.okhttp.OkHttpClient

现在打开proguard规则文件并滚动到底部并添加行

-dontwarn com.squareup.okhttp.**

对于您在 gradle 控制台上找到的任何缺少的类,您基本上添加该行

-dontwarn followed by class name 

希望这也适用于每个人。祝你好运!

【讨论】:

确保你得到正确的缺失类,类标识在 gradle 控制台的警告中给出

以上是关于无法从 Android Studio 生成签名的 APK “任务 ':packageRelease' 执行失败”的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - java.io.IOException:无法生成 v1 签名

生成从 Android Studio 签名的 .apk 时,zipalign 会自动执行吗?

Android studio:无法选择签名版本

生成签名的 APK:构建 APK Android Studio 时出错

无法在 Android Studio 上生成签名包

生成签名的 APK 不显示在 Android Studio 中