Ответ 1
Просто добавьте в proguard-правила проекта:
-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**
Я использую 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'
}
}
Может кто-нибудь дать какие-либо идеи или мысли? Большое вам спасибо!
Просто добавьте в proguard-правила проекта:
-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**
Он работал после установки следующих параметров в 'proguard-project.txt'. Очевидно, что для этого файла должен быть установлен gradle.
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
Посмотрите на свой результат сборки. У вас могут быть предупреждения proguard, например, если у вас есть 2 библиотеки, которые используют один класс (с потенциально разными версиями).
Это может помешать proguard вычислить хэш.
У меня была такая же проблема, когда в моей сборке были оба openIAB и opfIAB (оба используют Amazon и google IAB). Удаление одной из этих libs разрешило мою проблему
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.**
он работает:)
У меня тоже была проблема, и лучший способ ее решить: Перейдите в консоль gradle и посмотрите, где есть предупреждение, например
Предупреждение: com.squareup.picasso.OkHttpDownloader: не может найти ссылочный класс com.squareup.okhttp.OkHttpClient
Теперь откройте файл правил proguard и прокрутите вниз и добавьте строку
-dontwarn com.squareup.okhttp.**
Для любых отсутствующих классов, которые вы найдете в консоли gradle, вы в основном добавляете строку
-dontwarn followed by class name
Надеюсь, это сработает и для всех. Удачи!