2016-05-13 231 views
2

我想在我的項目中使用ProGuard。我激活了選項minifyEnabled。當我打開使用該庫Retrofit2活動,應用程序崩潰,並顯示以下錯誤:Proguard&Retrofit錯誤

無法創建界面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 

回答

4

呼叫轉接器從GitHub的頁面改造有是一款解釋使用ProGuard時該怎麼辦:

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

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

第一次嘗試這種配置,b之前與proguard變化前進

+1

哇!謝謝。對不起,這個愚蠢的問題,我是新的Proguard –

+1

@MansurNashaev不是一個愚蠢的問題,proguard可以混淆,當第一次出發,幸運的廣場通常記錄他們的api與proguard配置塊。快樂編碼! –

+0

@ inner_class7是的,但Proguard真的很有用 –