簡體   English   中英

錯誤:任務 ':app:packageRelease' 的執行失敗。 > 無法計算 /../AndroidStudioProjects/../classes.jar 的哈希值

[英]Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar

我正在嘗試在 Android 應用程序上進行“發布”構建,但不斷收到以下錯誤:

無法計算 /../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 規則,每次修復都會有所不同。 首先,通過檢查 classes-proguard 目錄是否在錯誤消息中的某處來確認這是一個 Proguard 問題,如下所示: Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

這意味着它是由早期的 Proguard 錯誤引起的,因此您需要在 Messages 窗口或 Gradle Console 窗口中向上滾動並檢查您收到哪些警告或錯誤。 舉個例子,在我當前的項目中,Square 的 Picasso 庫導致錯誤: Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient 我剛剛添加了-dontwarn com.squareup.okhttp.**以忽略警告,該應用程序仍然正常工作。

許多 Proguard 錯誤都是關於某個類的警告,因此只需為項目中導致它的任何類添加 -dontwarn 就可以了。

我知道 StackOverflow 的方式只是谷歌的錯誤信息,復制並粘貼最重要的答案並希望得到最好的但在這里你必須理解它並為你找出 proguard 規則!

我解決了這個問題:

打開項目的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

基本上我是如何解決這個問題的,我試圖在“發布”模式下運行我的應用程序,但遇到了一堆類似於這里的人的錯誤: https : //github.com/square/okio/issues/144

我幾乎按照他說的去做並修復了它。

希望這可以幫助其他人生成他們的 APK!

對我來說, proguard.cfg 中的以下兩行有幫助:

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

我知道這里已經有了答案,但我的情況有點不同,我想分享一下。

對我來說,我的項目的 proguard 文件,即proguard-rules.pro ,以某種方式被重命名為proguard-android.txt

proguard-android.txt是為 Android 的默認 proguard 規則保留的,所以基本上,我覆蓋了 Android 的 proguard 文件,這造成了嚴重破壞,我會得到Unable to compute hash message

一旦我將項目中的文件名從proguard-android.txt更改為proguard-rules.pro我就可以開始工作了。

我知道這是一個老問題,但也許這個答案對某人有用。 我添加了-dontwarn butterknife.**來 proguard 然后 gradle 正確構建。

對我來說,它顯示了與我解決的相同的錯誤,請確保您在文件中擁有正確的密鑰庫密碼

\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

只需創建一個文件 proguard-rules.pro 並添加“-dontwarn package names”,在消息中向您發出警告。

從我的 gradle 文件中禁用minifyEnabled選項更正了我的構建中的錯誤。

構建.gradle

buildTypes {
       release {
              // DISABLE OPTION
              //minifyEnabled true
              proguardFiles 'proguard.cfg'
       }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM