Подтвердить что ты не робот

Не может генерировать подписанный APK из студии Android "Выполнение неудачно для задачи": packageRelease '"

Я использую Android Studio 1.2.2 и пытаюсь создать APK с настройкой proguard. Но я не могу этого сделать и получил сообщение об ошибке.

"Выполнение не выполнено для задачи": packageRelease '.

Невозможно вычислить хэш из /Users/Documents/projectX/app/build/intermediates/classes -proguard/release/classes.jar "

Настройки proguard просто просты.

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

Может кто-нибудь дать какие-либо идеи или мысли? Большое вам спасибо!

4b9b3361

Ответ 1

Просто добавьте в proguard-правила проекта:

-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**

Ответ 2

Он работал после установки следующих параметров в 'proguard-project.txt'. Очевидно, что для этого файла должен быть установлен gradle.

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

Ответ 3

Посмотрите на свой результат сборки. У вас могут быть предупреждения proguard, например, если у вас есть 2 библиотеки, которые используют один класс (с потенциально разными версиями).

Это может помешать proguard вычислить хэш.

У меня была такая же проблема, когда в моей сборке были оба openIAB и opfIAB (оба используют Amazon и google IAB). Удаление одной из этих libs разрешило мою проблему

Ответ 4

OK! Это очень легко! просто следуя шаг за шагом: build.gradle: minifyEnabled false → minifyEnabled true proguard-rules.pro: вы должны добавить третьи библиотеки, которые вы используете в своем проекте, например, piccaso и т.д. если вы делаете это в студии Android, это отклоняет эти файлы.

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

он работает:)

Ответ 5

У меня тоже была проблема, и лучший способ ее решить: Перейдите в консоль gradle и посмотрите, где есть предупреждение, например

Предупреждение: com.squareup.picasso.OkHttpDownloader: не может найти ссылочный класс com.squareup.okhttp.OkHttpClient

Теперь откройте файл правил proguard и прокрутите вниз и добавьте строку

-dontwarn com.squareup.okhttp.**

Для любых отсутствующих классов, которые вы найдете в консоли gradle, вы в основном добавляете строку

-dontwarn followed by class name 

Надеюсь, это сработает и для всех. Удачи!