【问题标题】:Proguard & Retrofit errorProguard & Retrofit 错误
【发布时间】:2016-09-09 20:59:12
【问题描述】:

我想在我的项目中使用 ProGuard。我激活了 minifyEnabled 选项。当我打开使用库 Retrofit2 的活动时,应用程序崩溃并显示此错误:

无法为接口 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

【问题讨论】:

    标签: java android proguard retrofit2


    【解决方案1】:

    在 Retrofit 的 github 页面中,有一节解释了使用 proguard 时的操作:

    PROGUARD 如果您在项目中使用 Proguard,则将以下行添加到您的配置中:

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

    先尝试此配置,然后再继续进行 proguard 更改

    【讨论】:

    • 哇!谢谢你。抱歉这个愚蠢的问题,我是 Proguard 的新手
    • @MansurNashaev 不是一个愚蠢的问题,proguard 在刚开始时可能会令人困惑,幸运的是,square 通常使用 proguard 配置块记录他们的 api。编码快乐!
    • @inner_class7 是的,但是 Proguard 真的很有用
    • 我得到了减号,所以我觉得这太傻了。非常感谢,你帮了我很多
    • 在添加上述行后,我得到了 nullpointerexception。请帮助解决我在问题中提到的问题
    猜你喜欢
    • 2016-11-19
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多