6

Niedawno przeprowadziłem przejście z Eclipse do Android Studios. Moja aplikacja używa Proguard przez zaćmienie, a teraz, gdy się poruszam, otrzymuję następujące błędy.Usługi Google Play z Proguard w Android Studio

Błąd:

ProGuard: [myApp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced field 'int auth_client_availability_notification_title' in class com.google.android.gms.R$string 
ProGuard: [myApp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced field 'int auth_client_play_services_err_notification_msg' in class com.google.android.gms.R$string 
ProGuard: [myApp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced field 'int auth_client_requested_by_msg' in class com.google.android.gms.R$string 
ProGuard: [myApp] Warning: com.squareup.picasso.OkHttpLoader: can't find referenced class com.squareup.okhttp.OkHttpClient 
ProGuard: [myApp] Warning: com.squareup.picasso.OkHttpLoader: can't find referenced class com.squareup.okhttp.HttpResponseCache 
ProGuard: [myApp]  You should check if you need to specify additional program jars. 
ProGuard: [myApp] Warning: there were 9 unresolved references to classes or interfaces. 
ProGuard: [myApp]   You may need to specify additional library jars (using '-libraryjars'). 
ProGuard: [myApp] Warning: there were 3 unresolved references to program class members. 
ProGuard: [myApp]   Your input classes appear to be inconsistent. 
ProGuard: [myApp]   You may need to recompile them and try again. 
ProGuard: [myApp]   Alternatively, you may have to specify the option 
ProGuard: [myApp]   '-dontskipnonpubliclibraryclassmembers'. 
ProGuard: [myApp] java.io.IOException: Please correct the above warnings first. 
ProGuard: [myApp] at proguard.Initializer.execute(Initializer.java:321) 
ProGuard: [myApp] at proguard.ProGuard.initialize(ProGuard.java:211) 
ProGuard: [myApp] at proguard.ProGuard.execute(ProGuard.java:86) 
ProGuard: [myApp] at proguard.ProGuard.main(ProGuard.java:492) 

plik Proguard:

# This is a configuration file for ProGuard. 
# http://proguard.sourceforge.net/index.html#manual/usage.html 

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 

# Optimization is turned off by default. Dex does not like code run 
# through the ProGuard optimize and preverify steps (and performs some 
# of these optimizations on its own). 
-dontoptimize 
-dontpreverify 
-dontshrink 

# If you want to enable optimization, you should include the 
# following: 
# -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* 
# -optimizationpasses 5 
# -allowaccessmodification 
# 
# Note that you cannot just include these flags in your own 
# configuration file; if you are including this file, optimization 
# will be turned off. You'll need to either edit this file, or 
# duplicate the contents of this file and remove the include of this 
# file from your project's proguard.config path property. 

-keepattributes *Annotation* 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgent 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-keep public class com.android.vending.licensing.ILicensingService 

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
     native <methods>; 
} 

-keep public class * extends android.view.View { 
     public <init>(android.content.Context); 
     public <init>(android.content.Context, android.util.AttributeSet); 
     public <init>(android.content.Context, android.util.AttributeSet, int); 
     public void set*(...); 
} 

-keepclasseswithmembers class * { 
     public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
     public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 
-keepclassmembers enum * { 
     public static **[] values(); 
     public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keep class com.google.android.gms.maps.model.LatLng { *; } 

-keepclassmembers class **.R$* { 
     public static <fields>; 
} 

# The support library contains references to newer platform versions. 
# Don't warn about those in case this app is linking against an older 
# platform version. We know about them, and they are safe. 
-dontwarn android.support.** 

#Needed by google-api-client to keep generic types and @Key annotations accessed via reflection 
-keepclassmembers class * { 
    @com.google.api.client.util.Key <fields>; 
} 

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault,*Annotation* 

-dontwarn sun.misc.Unsafe 

#ActionBarSherlock 
-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 

-keepattributes *Annotation* 

#My android stuff 
-keep class javax.annotation.Nullable 
-keep class org.apache.http.** { *; } 
-dontwarn org.apache.http.** 

#PDF stuff 
-keep class net.sf.andpdf.crypto.** { *; } 
-dontwarn net.sf.andpdf.crypto.** 

#Google Analytics 
-keep public class com.google.** {*;} 

#Otto 
-keepclassmembers class ** { 
     @com.squareup.otto.Subscribe public *; 
     @com.squareup.otto.Produce public *; 
} 

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

#Hockey 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 

-keep public class javax.net.ssl.** 
-keepclassmembers public class javax.net.ssl.** { 
    *; 
} 

-keep public class org.apache.http.** 
-keepclassmembers public class org.apache.http.** { 
    *; 
} 

-keepclassmembers class net.hockeyapp.android.UpdateFragment { 
    *; 
} 

#Butter Knife 
-dontwarn butterknife.Views$InjectViewProcessor 
-keepclassmembers class **$$ViewInjector {*;} 
+0

podobne: http://stackoverflow.com/questions/18646899/proguard-cant-find-referenced-class-com-google-android-gms-r – trante

Odpowiedz

2

Skończyło się na tym, że wprowadziłem poniższe linie, aby Proguard przestał mnie ostrzegać. Kompilacja nadal działa zgodnie z oczekiwaniami.

-dontwarn com.google.android.gms.auth.GoogleAuthUtil 
-dontwarn com.squareup.picasso.OkHttpLoader 
+2

Powinieneś zaakceptować inną odpowiedź i być może dodać komentarz do dodanej linii dodatkowej. – howettl

+1

Osobiście staram się używać symboli wieloznacznych do ignorowania ostrzeżeń w jak najmniejszym stopniu. Zgadzam się, że odpowiedź Marco W. jest dobrą odpowiedzią i głosowałem nad nią. Jednak kod, którego używam, jest podany w mojej odpowiedzi, dlatego też zaakceptowałem to jako odpowiedź na moje pytanie. – drspaceboo

18

dla biblioteki "Picasso", po prostu trzeba dodać to do konfiguracji PROGUARD:

-dontwarn com.squareup.okhttp.** 

To jest ponieważ "Picasso" posiada opcjonalną bibliotekę "OKHttp". Nie jest to uwzględnione, ale nie jest potrzebne.

W przypadku Usług Google Play wydaje się, że istnieją pewne niespójności z biblioteką. Powinieneś zaktualizować swoje pliki biblioteki i wyczyścić projekt.

+0

Co to jest biblioteka służy? Mam nadzieję, że nie spowoduje żadnego ClassNotFoundExceptions –

+0

OkHttp jest alternatywnym klientem HTTP, który _ może_ być użyty zamiast wbudowanych systemów Android lub Java, lub nie. Więc zdecydowanie go nie potrzebujesz i nie spowoduje żadnego 'ClassNotFoundExceptions'. Używam również Picassa bez OkHttp. Więcej informacji na temat OkHttp: http://corner.squareup.com/2013/05/announcing-okhttp.html – caw

Powiązane problemy