2016-05-13 8 views
2

Ich möchte ProGuard in meinem Projekt verwenden. Ich habe die Option minifyEnabled aktiviert. Wenn ich die Aktivität öffnen, die die Bibliothek Retrofit2 verwendet, wird die App abstürzt und zeigt diesen Fehler:Proguard & Retrofit Fehler

Anruf kann nicht Adapter für Interface retrofit2.Call

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gatafan.mydeen/com.gatafan.mydeen.ActivityPlaces}: 
     java.lang.IllegalArgumentException: Unable to create call adapter for interface retrofit2.Call 
for method i.a 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
at android.app.ActivityThread.access$800(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
at android.os.Handler.dispatchMessage(Handler.java:110) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:5292) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for interface retrofit2.Call 
for method i.a 
at retrofit2.ServiceMethod$Builder.a(Unknown Source) 
at retrofit2.ServiceMethod$Builder.b(Unknown Source) 
at retrofit2.ServiceMethod$Builder.a(Unknown Source) 
at retrofit2.Retrofit.a(Unknown Source) 
at retrofit2.Retrofit$1.invoke(Unknown Source) 
at com.gatafan.mydeen.api.$Proxy1.a(Native Method) 
at com.gatafan.mydeen.api.VenueManager.requestFoursquare(Unknown Source) 
at com.gatafan.mydeen.ActivityPlaces.onCreate(Unknown Source) 
at android.app.Activity.performCreate(Activity.java:5264) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
... 11 more 
Caused by: java.lang.IllegalArgumentException: Call return type must be parameterized as Call<Foo> or Call<? extends Foo> 
     at retrofit2.Utils.e(Unknown Source) 
at retrofit2.ExecutorCallAdapterFactory.a(Unknown Source) 
at retrofit2.Retrofit.a(Unknown Source) 
at retrofit2.Retrofit.a(Unknown Source) 
... 21 more 

Antwort

4

Von der Github Seite für Retrofit dort erstellen ein Abschnitt ist zu erklären, was, wenn proguard mit tun:

PROGUARD If you are using Proguard in your project add the following lines to your configuration:

ersten
-dontwarn retrofit2.** 
-keep class retrofit2.** { *; } 
-keepattributes Signature 
-keepattributes Exceptions 

versuchen, diese Konfiguration, b efore vorwärts mit prouard Änderungen

+1

Wow! Vielen Dank. Entschuldigung für diese blöde Frage, ich bin neu in Proguard –

+1

@MansurNashaev keine dumme Frage, kann proguard verwirrend sein, wenn zuerst starten, zum Glück quadriert Quadrat in der Regel ihre APIs mit Proguard-Konfiguration blockiert. Glückliche Kodierung! –

+0

@ inner_class7 ja aber Proguard ist wirklich sehr nützlich –