2015-04-18 55 views
13

Dopo l'aggiornamento a Google Play v23 servizi, vedo questo messaggio quando si tenta di esportare domanda firmata in Eclipse:Google Play Services v23 configurazione Proguard

Proguard returned with error code 1. See console 
Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced class android.content.pm.PackageInstaller 
Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced class android.content.pm.PackageInstaller$SessionInfo 
Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced class android.content.pm.PackageInstaller 
Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced class android.content.pm.PackageInstaller$SessionInfo 
Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced method 'android.content.pm.PackageInstaller getPackageInstaller()' in class android.content.pm.PackageManager 
Warning: com.google.android.gms.internal.zzif: can't find referenced method 'void setMixedContentMode(int)' in class android.webkit.WebSettings 
     You should check if you need to specify additional program jars. 
Warning: there were 4 unresolved references to classes or interfaces. 
     You may need to specify additional library jars (using '-libraryjars'). 
Warning: there were 2 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile them and try again. 
     Alternatively, you may have to specify the option 
     '-dontskipnonpubliclibraryclassmembers'. 
java.io.IOException: Please correct the above warnings first. 
    at proguard.Initializer.execute(Initializer.java:321) 
    at proguard.ProGuard.initialize(ProGuard.java:211) 
    at proguard.ProGuard.execute(ProGuard.java:86) 
    at proguard.ProGuard.main(ProGuard.java:492) 

ho aggiunto questo, come specificato nel documentation

-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 

e provato ad aggiungere

-keep class android.content.pm.PackageInstaller.** 

a proguard-project.txt, ma questo non ha aiutato.

Cosa mi manca?

+0

Che ne dici di '-keep class android.content.pm. **' – TN888

+0

Nella documentazione ufficiale di Google c'è una sezione su come costruire con Eclipse + ADT, quindi dovrebbe lavorare anche lì. – Pawel

+0

https://medium.com/chanse-games-developers/proguard-part-1-google-play-services-75c03de45305 –

risposta

42

hey ho avuto lo stesso errore esatto ho riparato con l'aggiunta di:

-keep class com.google.android.gms.** { *; } 
-dontwarn com.google.android.gms.** 

alla mia proguard.cfg

+3

Questa soluzione mi ha aiutato, ma il secondo suggerimento in http://stackoverflow.com/questions/18646899/proguard-cant-find-referenced-class-com-google-android-gms-r/24109609 # 24109609 rende la dimensione del file apk molto più piccola. – palvarez89

+0

Ho provato lo stesso, ma ora build è in esecuzione e in esecuzione. Android Studio non sta generando apk. Qualcuno può aiutare? – AndiGeeky

+0

La documentazione dice che non è necessario aggiungere manualmente le regole proguard per questo – Rasel

11

Ho lo stesso problema, ma utilizzando Android Studio. Basato sulla soluzione di Lary Ciminera, ho aggiunto

-dontwarn com.google.android.gms.** 

a proguard-project.txt.

5

ho riparato aggiungendo questo per Proguard-project.txt:

-keep class android.content.pm.PackageInstaller 
-keep class android.content.pm.PackageInstaller$SessionInfo 
-keep class android.content.pm.PackageManager 

-dontwarn android.content.pm.PackageInstaller 
-dontwarn android.content.pm.PackageInstaller$SessionInfo 
-dontwarn android.content.pm.PackageManager 

-keep class android.webkit.WebSettings 
-dontwarn android.webkit.WebSettings 
2

Aggiornamento versione di destinazione SDK per almeno 21 dovrebbe risolvere questo problema. PackageInstaller e le classi associate sono state aggiunte nella versione 21 dell'API: https://developer.android.com/reference/android/content/pm/PackageInstaller.html

+0

Non impedisce l'utilizzo dell'app sul dispositivo con Android inferiore a 5.0? perché è come il 3% di tutti i dispositivi. –

+0

@LaryCiminera no, il target è diverso da minSdkVersion; il targetSdk potrebbe attivare modalità di compatibilità. dovresti impostare il targetSdk sul nuovo con cui hai l'app. – stefs

Problemi correlati