web-dev-qa-db-ja.com

エラー:タスク ':app:packageRelease'の実行に失敗しました。 > /../AndroidStudioProjects/../classes.jarのハッシュを計算できません

Androidアプリで 'リリース'ビルドを実行しようとしていますが、このエラーが発生し続けます:

/../AndroidStudioProjects/../classes.jarのハッシュを計算できません

そして、「classes.jar」のためにそのディレクトリを調べると、ファイルはそこにありません。 gradleタスクでこのファイルを自分で作成する必要がありますか?

ここでプロガードで何かが進行中ですが、「ハッシュを計算できません...」以外の有用な情報はあまり提供していません。

これが私の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'
}

誰かが私がこの問題をデバッグするのを手伝うことができるならば、それは素晴らしいでしょう。

47
Jamaal

私は問題を理解しました:

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の生成に役立つことを願っています!

20
Jamaal

この質問に対する現在のすべての回答は、それらに有効なProguardルールを提供しているだけです。すべての修正は異なります。まず、classs-proguardディレクトリがエラーメッセージのどこかにあることを確認して、Proguardの問題であることを確認します。次のようなものです。Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

これは、以前のProguardエラーが原因であるため、メッセージウィンドウまたは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の方法は、単にGoogleがエラーメッセージであり、トップアンサーをコピーして貼り付け、最良のものを期待していることを知っていますが、ここで少し理解して、プロガードルールを理解してください!

41
georgiecasey

私にとっては、proguard.cfg内の次の2行が役に立ちました:

 -keep class com.google.Android.gms.** { *; }
 -dontwarn com.google.Android.gms.**
21
goRGon

ここにはすでに答えがありますが、私の状況は少し違っていたので、共有したいと思いました。

私にとって、私のプロジェクトのプロガードファイル、つまりproguard-rules.proは、何らかの形でproguard-Android.txtに名前が変更されました。

proguard-Android.txtはAndroidのデフォルトのプロガードルール用に予約されているため、本質的にAndroidのプロガードファイルをオーバーライドしていたため、大混乱を引き起こし、ハッシュメッセージを計算できませんを取得しました。

プロジェクトのファイル名をproguard-Android.txtからproguard-rules.proに変更すると、物事を機能させることができました。

3
WindsurferOak

これは古い質問ですが、この答えは誰かに役立つかもしれません。追加した -dontwarn butterknife.** gradleビルドを適切に保護するために。

1
mavixce

GradleファイルのminifyEnabledオプションを無効にすると、ビルドのエラーが修正されました。

build.gradle

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