2015-06-19 10 views
31

Sto utilizzando Android Studio 1.2.2 e ho provato a generare APK con l'impostazione proguard. Ma non posso farlo e ho ottenuto sotto il messaggio di errore.non è in grado di generare APK firmato da Android studio "Esecuzione fallita per task": packageRelease ""

"mancata esecuzione per l'attività ': packageRelease'.

Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar "

L'impostazione di Proguard è solo semplice

-dontshrink 
-dontoptimize 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 

e il file Gradle è inferiore

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

Can.. qualcuno ha qualche idea o pensiero? Grazie mille!

+0

Hai risolto questo? Sto affrontando lo stesso problema – dangalg

+0

Possibile duplicato di [Errore: Esecuzione non riuscita per l'attività ': app: packageRelease'. > Impossibile calcolare l'hash di /../AndroidStudioProjects/../classes.jar](http://stackoverflow.it/questions/31643339/errorexecution-failed-per-task-apppackagerelease-has-to-compute-hash) – blahdiblah

risposta

4

Guarda l'output della tua build. Potresti avere avvertenze di proguard, come se tu avessi 2 librerie che condividono qualche classe (con versioni potenzialmente diverse).

Ciò potrebbe impedire a proguard di calcolare un hash.

Ho riscontrato lo stesso problema sia con openIAB che con opfIAB (entrambi utilizzano Amazon e google IAB) nella mia build. La rimozione di una di queste librerie ha risolto il problema

9

Ha funzionato dopo aver impostato le seguenti istruzioni in "proguard-project.txt". Ovviamente il gradle dovrebbe essere impostato per questo file.

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

puoi aiutarmi a risolvere lo stesso problema. –

15

Basta aggiungere a Proguard-regole del progetto:

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

Perché ** android.gms ** è un fattore nella domanda dell'OP? –

2

OK! è molto facile ! solo seguendo passo dopo passo: build.gradle: minifyEnabled false -> minifyEnabled true proguard-rules.pro: devi aggiungere le terze librerie che usi nel tuo progetto come piccaso ed ecc. se lo fai in Android Studio , rifiuta questo file.

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

funziona :)

1

ho avuto il problema troppo e il modo migliore per risolverlo è: Vai alla console Gradle e vedere dove c'è un esempio di avvertimento

Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient

Ora apri il file delle regole proguard e scorri verso il basso e aggiungi la riga

-dontwarn com.squareup.okhttp.** 

Per tutte le classi mancanti che trovi sulla console gradle aggiungi fondamentalmente la riga

-dontwarn followed by class name 

Spero che questo funzioni anche per tutti. In bocca al lupo!

+0

assicurati di avere le classi giuste che mancano, l'identità della classe è data nell'avviso nella console gradle – cherucole

Problemi correlati