无法从 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 会自动执行吗?