web-dev-qa-db-ja.com

Android studio "タスク ':packageRelease'の実行に失敗しました"から署名済みAPKを生成できません

Android Studio 1.2.2を使用して、proguard設定でAPKを生成しようとしました。しかし、それを実行できず、エラーメッセージの下に表示されました。

「タスク ':packageRelease'の実行に失敗しました。

/Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jarのハッシュを計算できません "

プロガードの設定は簡単です。

-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'
    }
}

誰でもアイデアや考えを与えることができますか?どうもありがとうございました!

31
김재형

プロジェクトのプロガードルールに追加するだけです。

-keep public class com.google.Android.gms.**
-dontwarn com.google.Android.gms.**
16
Artemiy

「proguard-project.txt」で以下を設定した後、機能しました。明らかに、このファイルにグラドルを設定する必要があります。

-dontwarn Android.support.v7.**
-keep class Android.support.v7.** { *; }
-keep interface Android.support.v7.** { *; }
10
김재형

ビルド出力を見てください。いくつかのクラスを共有する2つのライブラリ(潜在的に異なるバージョン)がある場合のように、そこにプロガード警告があるかもしれません。

これにより、プロガードがハッシュを計算できなくなる可能性があります。

ビルドにopenIABとopfIAB(両方ともAmazonとGoogle IABを使用)の両方を使用しているときに同じ問題が発生しました。これらのライブラリのいずれかを削除すると、問題が解決しました

4
Lakedaemon

OK!それは超簡単 !順を追って次の手順に従ってください:build.gradle:minifyEnabled false-> minifyEnabled true proguard-rules.pro:Android studio、このファイルを拒否します。

-dontwarn Android.support.**
-dontwarn com.github.**
-dontwarn com.squareup.picasso.**
-dontwarn com.etsy.Android.grid.**

できます :)

3
Shayan amin

私にも問題があり、それを解決する最良の方法は次のとおりです。

警告:com.squareup.picasso.OkHttpDownloader:参照クラスcom.squareup.okhttp.OkHttpClientが見つかりません

次に、プロガードルールファイルを開き、一番下までスクロールして次の行を追加します。

-dontwarn com.squareup.okhttp.**

Gradleコンソールで見つかった不足しているクラスについては、基本的に次の行を追加します

-dontwarn followed by class name 

これがすべての人にも役立つことを願っています。がんばろう!

1
cherucole