Retrofit2 Proguard删除参数

广信91

我在项目中使用了改造2和使用了proguard。

我的保镖:

-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   public *;
}    

# Begin twitter 4j.
-dontwarn twitter4j.**
-keep  class twitter4j.conf.PropertyConfigurationFactory
-keep class twitter4j.** { *; }
# End twitter 4j.


# Start androidsocialnetworks
-keep class com.androidsocialnetworks.lib.** { *; }
# End androidsocialnetworks.

# Google api
-keep class com.google.** { *;}
-keep interface com.google.** { *;}
-dontwarn com.google.**

-dontwarn sun.misc.Unsafe
-dontwarn com.google.common.collect.MinMaxPriorityQueue
-keepattributes *Annotation*,Signature
-keep class * extends com.google.api.client.json.GenericJson {
*;
}
-keep class com.google.api.services.** {
*;
}

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

-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;
}
# End google api

# Other
-optimizations !class/unboxing/enum
-dontwarn com.google.code.**
-dontwarn oauth.signpost.**
-dontwarn javax.management.**
-dontwarn javax.xml.**
#-dontwarn org.apache.**
#-dontwarn org.slf4j.**
-keep class org.** { *; }
-keep class javax.** { *; }
-assumenosideeffects class * implements org.slf4j.Logger {
    public *** trace(...);
    public *** debug(...);
    public *** info(...);
    public *** warn(...);
    public *** error(...);
}

# Rx java
-dontwarn sun.misc.**
-keep class rx.internal.util.unsafe.** { *; }

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

# End other


# Java mail
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**

-keep class javamail.** {*;}
-keep class javax.mail.** {*;}
-keep class javax.activation.** {*;}

-keep class com.sun.mail.dsn.** {*;}
-keep class com.sun.mail.handlers.** {*;}
-keep class com.sun.mail.smtp.** {*;}
-keep class com.sun.mail.util.** {*;}
-keep class mailcap.** {*;}
-keep class mimetypes.** {*;}
-keep class myjava.awt.datatransfer.** {*;}
-keep class org.apache.harmony.awt.** {*;}
-keep class org.apache.harmony.misc.** {*;}
# End java mail

在build.gradle中,我还使用了一些proguard文件:(我来自:https : //github.com/krschultz/android-proguard-snippets

        proguardFile 'proguards/proguard-support-v7-appcompat.pro'
        proguardFile 'proguards/proguard-google-play-services.pro'
        proguardFile 'proguards/proguard-gson.pro'
        proguardFile 'proguards/proguard-butterknife-7.pro'
        proguardFile 'proguards/proguard-square-retrofit2.pro'
        proguardFile 'proguards/proguard-rx-java.pro'
        proguardFile 'proguards/proguard-rxjava-promises.pro'
        proguardFile 'proguards/proguard-square-okhttp3.pro'
        proguardFile 'proguards/proguard-jsoup.pro'
        proguardFile 'proguards/proguard-jackson-2.pro'
        proguardFile 'proguards/proguard-simple-xml.pro'
        proguardFile 'proguards/proguard-support-design.pro'
        proguardFile 'proguards/proguard-square-okio.pro'
        proguardFile 'proguards/proguard-facebook.pro'

这是方法定义API:

@GET("app/authenticate")
    Observable<AuthenticationModel> authenticate(
            @Query("email") String email,
            @Query("password") String password
    );

然后在proguard之后我反编译APK文件,然后得到:

@GET("app/authenticate")
    rx.a<AuthenticationModel> a();

我不知道为什么所有参数都被删除。(注意:当前项目正在运行以及是否未使用proguard)请帮助!

更新

主要问题:我使用过,proguard-android-optimize所以我应该添加(作为@EpicPandaForce答案):

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}
史诗熊猫力量

尝试以下规则

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

可能需要使用Retrofit2调整包装。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结合使用@Path和@Url参数和Retrofit2

来自分类Dev

Retrofit2传递列表作为Url参数

来自分类Dev

Retrofit2:android POST参数和GET json数组

来自分类Dev

Retrofit2 URL 参数上没有键名

来自分类Dev

如何在retrofit2中设置参数列表

来自分类Dev

适用于Android的ProGuard和Retrofit2 Converter Gson?

来自分类Dev

服务器无法使用 Retrofit2 读取 HTTPS POST 请求参数

来自分类Dev

为什么在使用Retrofit2时出现“ Type okhttp3.Call没有类型参数”的信息?

来自分类Dev

必须具有返回类型或回调作为Android的最后一个参数Retrofit2?

来自分类Dev

RxJava and Retrofit2: NetworkOnMainThreadException

来自分类Dev

Retrofit2和Kotlin

来自分类Dev

retrofit2:添加RequestInterceptor

来自分类Dev

Retrofit2 复杂请求

来自分类Dev

RxJava和Retrofit2:NetworkOnMainThreadException

来自分类Dev

Retrofit2 HttpLoggingInterceptor日志猫

来自分类Dev

无法使用Retrofit2获取数据

来自分类Dev

使用Retrofit2的Json对象请求

来自分类Dev

Retrofit2错误处理

来自分类Dev

从 json recycleview retrofit2 获取 id

来自分类Dev

如何使用 Retrofit2 @POST

来自分类Dev

android:retrofit2 发布错误但成功?

来自分类Dev

Android Retrofit2刷新Oauth 2令牌

来自分类Dev

ksoap2和retrofit2与android通信的区别

来自分类Dev

Retrofit2 onFailure未调用,错误为401

来自分类Dev

如何使用Retrofit2创建JSON对象数组的查询

来自分类常见问题

响应不是来自使用Retrofit2的服务器

来自分类Dev

使用RxJava / RxAndroid的Retrofit2尾递归

来自分类Dev

如何使用Retrofit2 + RxJava添加授权标头

来自分类Dev

Retrofit2将图像发布为base64