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

エラー: タスク ':app:packageRelease' の実行に失敗しました。 > /../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'
}

誰かがこの問題のデバッグを手伝ってくれると助かります。

ベストアンサー1

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

これは、以前の Proguard エラーが原因であることを意味します。そのため、メッセージ ウィンドウまたは Gradle コンソール ウィンドウを上にスクロールして、どのような警告またはエラーが発生しているかを確認する必要があります。たとえば、現在のプロジェクトでは、Square の Picasso ライブラリがエラーの原因となっています。警告を無視するようにWarning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient追加したところ-dontwarn com.squareup.okhttp.**、アプリは正常に動作しました。

Proguard エラーの多くは何らかのクラスに関する警告であるため、プロジェクト内でエラーの原因となっているクラスに -dontwarn を追加するだけで問題が解決することがよくあります。

StackOverflow の方法は、エラー メッセージを Google で検索し、一番上の回答をコピーして貼り付け、最善の結果を期待するだけだとわかっていますが、ここではそれを少し理解し、ProGuard のルールを理解する必要があります。

おすすめ記事