Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar
Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar
我正在尝试在 Android 应用程序上构建 'release',但我不断收到以下错误:
Unable to compute hash of /../AndroidStudioProjects/../classes.jar
然后当我查看 'classes.jar' 的目录时,文件不存在。我是否必须使用 gradle 任务自己创建此文件?
Proguard 发生了一些问题,但除了“无法计算哈希值...”之外,它没有提供太多有用的信息。
这是我的 gradle.build 文件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
buildConfigField "String", "SERVER_URL", '"http://10.0.2.2:3000"'
}
release {
buildConfigField "String", "SERVER_URL", '"https://example.com"'
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debugRelease {
buildConfigField "String", "SERVER_URL", '"https://example.com"'
debuggable true
jniDebuggable false
renderscriptDebuggable false
minifyEnabled false
zipAlignEnabled true
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:cardview-v7:22.1.1'
compile 'com.google.android.gms:play-services-gcm:7.5.0'
}
如果有人能帮我调试这个问题那就太好了。
我发现问题了:
为您的项目打开 proguard-rules.pro
并将其添加到底部:
-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
基本上我是如何解决这个问题的,我尝试 运行 我的应用程序处于 'release' 模式,但出现了一堆类似于这里的人的错误:https://github.com/square/okio/issues/144
我几乎完全按照他说的做了,并修复了它。
希望这可以帮助其他人生成他们的 APK!
我知道这里已经有了答案,但我的情况有点不同,我想分享一下。
对我来说,我的项目的混淆文件 proguard-rules.pro
以某种方式重命名为 proguard-android.txt
.
proguard-android.txt
是为 Android 的默认混淆器规则保留的,所以基本上,我覆盖了 Android 的混淆器文件,这造成了破坏,我会得到无法计算哈希消息。
一旦我将项目中的文件名从 proguard-android.txt
更改为 proguard-rules.pro
,我就可以正常工作了。
对我来说,proguard.cfg 中的以下 2 行对我有帮助:
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
我知道这是一个老问题,但也许这个答案对某些人有用。我将 -dontwarn butterknife.**
添加到 proguard,然后 gradle 正确构建。
这个问题的所有当前答案都只是给出了适用于他们的 Proguard 规则,每个修复都会不同。首先,通过检查 classes-proguard 目录是否位于错误消息中的某处来确认这是 Proguard 问题,如下所示:Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar
这意味着它是由较早的 Proguard 错误引起的,因此您需要在消息 window 或 Gradle 控制台 window 中向上滚动并检查您收到的警告或错误.举个例子,在我当前的项目中,Square 的 Picasso 库导致了错误:
Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient
。我刚刚添加 -dontwarn com.squareup.okhttp.**
以忽略警告,应用程序仍然正常运行。
很多 Proguard 错误将是关于某些 class 的警告,因此只需为任何 class 在您的项目中导致它的原因添加 -dontwarn 即可。
我知道 Whosebug 的方法只是 Google 错误消息,复制并粘贴最上面的答案并希望最好,但在这里你必须稍微理解它并为你找出 proguard 规则!
只需创建一个文件 proguard-rules.pro 并添加“-dontwarn package names”,在消息中给出警告。
从我的 gradle 文件中禁用 minifyEnabled 选项纠正了我构建中的错误。
build.gradle
buildTypes {
release {
// DISABLE OPTION
//minifyEnabled true
proguardFiles 'proguard.cfg'
}
}
对我来说,它显示了同样的错误
我解决了
确保你在文件
中有正确的 Keystore 密码
\mobile\android\gradle.properties
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword
我正在尝试在 Android 应用程序上构建 'release',但我不断收到以下错误:
Unable to compute hash of /../AndroidStudioProjects/../classes.jar
然后当我查看 'classes.jar' 的目录时,文件不存在。我是否必须使用 gradle 任务自己创建此文件?
Proguard 发生了一些问题,但除了“无法计算哈希值...”之外,它没有提供太多有用的信息。
这是我的 gradle.build 文件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
buildConfigField "String", "SERVER_URL", '"http://10.0.2.2:3000"'
}
release {
buildConfigField "String", "SERVER_URL", '"https://example.com"'
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debugRelease {
buildConfigField "String", "SERVER_URL", '"https://example.com"'
debuggable true
jniDebuggable false
renderscriptDebuggable false
minifyEnabled false
zipAlignEnabled true
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:cardview-v7:22.1.1'
compile 'com.google.android.gms:play-services-gcm:7.5.0'
}
如果有人能帮我调试这个问题那就太好了。
我发现问题了:
为您的项目打开 proguard-rules.pro
并将其添加到底部:
-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
基本上我是如何解决这个问题的,我尝试 运行 我的应用程序处于 'release' 模式,但出现了一堆类似于这里的人的错误:https://github.com/square/okio/issues/144
我几乎完全按照他说的做了,并修复了它。
希望这可以帮助其他人生成他们的 APK!
我知道这里已经有了答案,但我的情况有点不同,我想分享一下。
对我来说,我的项目的混淆文件 proguard-rules.pro
以某种方式重命名为 proguard-android.txt
.
proguard-android.txt
是为 Android 的默认混淆器规则保留的,所以基本上,我覆盖了 Android 的混淆器文件,这造成了破坏,我会得到无法计算哈希消息。
一旦我将项目中的文件名从 proguard-android.txt
更改为 proguard-rules.pro
,我就可以正常工作了。
对我来说,proguard.cfg 中的以下 2 行对我有帮助:
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
我知道这是一个老问题,但也许这个答案对某些人有用。我将 -dontwarn butterknife.**
添加到 proguard,然后 gradle 正确构建。
这个问题的所有当前答案都只是给出了适用于他们的 Proguard 规则,每个修复都会不同。首先,通过检查 classes-proguard 目录是否位于错误消息中的某处来确认这是 Proguard 问题,如下所示:Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar
这意味着它是由较早的 Proguard 错误引起的,因此您需要在消息 window 或 Gradle 控制台 window 中向上滚动并检查您收到的警告或错误.举个例子,在我当前的项目中,Square 的 Picasso 库导致了错误:
Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient
。我刚刚添加 -dontwarn com.squareup.okhttp.**
以忽略警告,应用程序仍然正常运行。
很多 Proguard 错误将是关于某些 class 的警告,因此只需为任何 class 在您的项目中导致它的原因添加 -dontwarn 即可。
我知道 Whosebug 的方法只是 Google 错误消息,复制并粘贴最上面的答案并希望最好,但在这里你必须稍微理解它并为你找出 proguard 规则!
只需创建一个文件 proguard-rules.pro 并添加“-dontwarn package names”,在消息中给出警告。
从我的 gradle 文件中禁用 minifyEnabled 选项纠正了我构建中的错误。
build.gradle
buildTypes {
release {
// DISABLE OPTION
//minifyEnabled true
proguardFiles 'proguard.cfg'
}
}
对我来说,它显示了同样的错误 我解决了 确保你在文件
中有正确的 Keystore 密码\mobile\android\gradle.properties
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword