Retrofit2 proguard 删除参数

2024-03-06

我在我的项目中使用了 Retrofit 2 并使用了 proguard。

我的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 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 的情况下) 请帮忙 !

UPDATE

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

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

尝试以下规则

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

可能需要使用 Retrofit2 调整包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Retrofit2 proguard 删除参数 的相关文章

  • (colorPrimaryDark) 状态栏颜色在 android v21 上不起作用?

    我在 style xml 上添加了 colorPrimaryDark 但状态栏 android v21 上的颜色没有受到影响 我有一个自定义工具栏 我在 style xml 代码中不使用操作栏主题 如果有任何解决方案请帮助我吗 样式代码
  • Android spinner 将多列(连接)Sqlite 数据库加载到表中

    我正在学习如何创建一个从 SQLite 加载下拉列表的微调器 我有一个由旋转器和表格组成的用户界面 如果用户单击微调器 表的内容将根据微调器上选定的 ID 根据数据库加载 如果未选择名称 它将加载表中的所有内容 但是我找不到如何根据微调器上
  • 如何创建轮播ViewPager?

    我想做的只是 Android 中的水平轮播 如果我有 3 个屏幕 A B 和 C 那么我希望我的 ViewPager 允许我像这样移动 A B B C C A GTalk for Android 的对话可以这样切换 三星的主屏幕和应用程序屏
  • MissingDimensionStrategy 无处不在 - 有没有更好的方法?

    我有一个图书馆项目 让我们称之为lib1有定制的flavorDimensions指定的 更准确地说有buld尺寸与实际口味full and production 该库被另一个库项目使用 lib2 没有自定义flavorDimensions指
  • 即使具有用户权限,也无法在外部存储上保存文件 [Android]

    我正在 Android 上开发一个用于图像处理的应用程序 但我一直在编写图像保存代码 这是我使用的方法 private void saveImageToExternalStorage Bitmap finalBitmap String ro
  • 如何在Android中创建类似架子的视图?

    如何在android中创建一个类似书架的视图 在任意行中显示多本书 此外 它应该具有像 Moon reader 应用程序那样的水平和垂直功能 我可以编写一个水平移动的架子视图 但它不能完全工作 我使用 xml 文件来查看包含图像 文本和按钮
  • Android 上关闭并重新打开应用程序后 GPS 不更新位置

    当我关闭我的应用程序一段时间然后再次重新打开它后 我的应用程序将不会更新位置或 有时更新需要很长时间 大约5分钟 我该如何修复它 这是我的代码 private LocationManager lm private LocationListe
  • 文本末尾有额外的换行符

    使用此方法设置文本后 我似乎得到了一些额外的换行符TextView message setText Html fromHtml message 我怎样才能删除这些 它们导致我的布局扭曲 因为它在输出中添加了两条额外的行 该字符串已通过以下方
  • 如果使用键盘,如何捕获 TimePicker 中的时间变化?

    我有一个小部件 它是一个 TimePicker 用于检索数据库字段中保存的时间 问题是 当用户更改小部件中的时间值时 这不会保存在数据库中 所以我遇到了setOnTimeChangedListener如果您只在小部件中使用加号和减号 那么该
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • onPictureTaken 之后旋转 JPEG 的字节数组

    有没有办法旋转字节数组而不将其解码为位图 目前在 jpeg PictureCallback 中我只是将字节数组直接写入文件 但图片是旋转的 我想旋转它们而不解码为位图 希望这能节省我的记忆 BitmapFactory Options o n
  • Android Cloud 2 设备消息传递 (C2DM) 是否与 Google 的两步验证兼容?

    我一直在阅读 Android 的云 2 设备消息传递 C2DM 所有文档都提到 ClientLogin 作为身份验证方法 但是 那客户端登录 http code google com apis accounts docs AuthForIn
  • 更新到 3.2.0 后 Gradle 构建失败

    因此 在将 Gradle 插件更新到 3 2 0 并将 gradle wrapper 更新到 4 6 后 我遇到了问题 Android Studio 版本是 3 2 使用 Gradle 版本 即 alpha 11 也没有结果 什么地方出了错
  • Android 的@hide 注解到底有什么作用?

    Android中很多内部API都被标记出来了 hide What exactly这是吗 另一个答案 https stackoverflow com questions 17035271 what does hide mean in the
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • Firebase 邀请发送电子邮件,但不发送短信。返回结果代码 0

    我正在尝试使用 Firebase 在我的 Android 应用程序中实现应用程序邀请系统 该代码与他们中给出的完全相同guide https firebase google com docs invites android private
  • 如何在flutter app android中添加Startapp广告?

    我想用其他广告更改 AdMob 广告 一些个人问题 如何在flutter app android中添加Startapp广告 有什么方法可以将启动广告添加到我的 flutter 应用程序 android 中 StartApp 现已更名为 St
  • 使用 Ant 构建 Android 库项目

    我在使用 ant 构建 Android 库项目时遇到问题 当我尝试跑步时ant release 它说Target release does not exist in the project MyProject 然后我假设库可能无法通过发布
  • Android动态功能模块,找不到资源

    当下载的功能模块发布到 Play 商店时 我在启动活动时遇到问题 它总是在下载模块活动中的 setContentView 上崩溃 java lang RuntimeException Unable to start activity Com
  • 片段已添加 IllegalStateException

    我在容器 Activity 上使用此方法来显示 BFrag public void showBFrag Start a new FragmentTransaction FragmentTransaction fragmentTransact

随机推荐

  • jQuery 热键 - 解除绑定?

    我有一个 jQuery 对话框 它初始化热键如下 循环从 1 到 9 问题是 如果您关闭对话框然后重新打开对话框 它不断重新绑定 因此当您按下 1 键时 它会运行两次 三次 四次等 它会不断增长 我尝试杀死对话框上的键绑定关闭 docume
  • 带参数和选项的 C# 方法重载

    今天我发现了一些奇怪的事情 我想知道为什么这有效 static void Main string args Console WriteLine ExampleMethod 3 Console ReadKey public static st
  • 无反向匹配 /

    我正在尝试制作非常有意义的网址 但我想我做错了 这有效 from django conf urls defaults import patterns url from places views import explore view url
  • 如何仅在本地标头上运行预处理器?

    我希望预处理器读取本地标头的包含内容 但忽略系统标头的包含内容 换句话说 如何让预处理器跳过以下形式的预处理指令 include
  • 如何通过 Fluent NHibernate 添加事件监听器?

    我想添加一个事件监听器 IPreUpdateEventListener 添加 NHibernate 但我似乎找不到使用流畅配置的示例 我希望能够在创建会话工厂时添加监听器 例如当执行以下代码时 sessionFactory Fluently
  • phpMyAdmin 提供了export.php 而不是数据库sql 转储

    环境 Windows 10 Enterprise x64 上的 Wamp 服务器 2 5 x64 MySQL 5 6 17 phpmyadmin4 1 14 全新安装 自昨天完全安装以来没有重大变化 完全控制访问C wamp tmp Win
  • VS Code 中的 Prettier - 在双引号内设置双引号的格式

    我在 VS Code 中使用 Prettier 扩展 我想在代码中使用双引号 jsxSingleQuote 和 singleQuote 设置为 false 当我在这行代码上运行 format 时 var hello hello Pretti
  • 更改 AppSetting 不会对应用程序产生影响

    在我正在 ASP Net 上开发的应用程序之一中 在此应用程序中 我们使用了大量的 AppSettings 在最初的开发中我们使用了ConfigurationManager AppSettings 但随着开发的进展 我们创建了一个实用程序类
  • 正向地理编码后如何返回坐标?

    我试图查看用户是否在某个地址的一定距离内 我已成功获取用户位置 并使用正向地理编码转换地址 我留下了两组坐标 我试图做出一个 if 语句 表示如果它们在 一定距离 内 则打印一些内容 目前 当我打印地标函数内的坐标时 我得到了所需的坐标 当
  • 是否有一个类来保存文件系统路径?

    在 NET 基类库中 有一个 System IO Path 类 用于对表示文件系统路径的字符串执行常见操作 然而 我需要的是封装路径的类相反 我得到了类型安全和可能更短的路径操作表示法 我正在考虑 NET 等价的C Boost 的 http
  • Android 蓝牙跨平台互操作性

    我有一个在 Windows 机器上为 Net 编程的蓝牙服务 我希望我的 Android 2 1 手机能够连接到它 服务器正在侦听 Android 用于连接的相同 UUID 但连接失败 当我尝试连接到未侦听该 UUID 的设备时 出现异常并
  • 无法两次更改复选框视图的背景颜色 - Android

    我尝试改变CheckBox用户将其状态更改为后的背景Checked 下面的代码不能很好地工作 如果我单击未选中的复选框 它将状态和颜色更改为蓝色 当我再次单击它并取消选中时 颜色保持蓝色而不是更改为红色 我做了介绍电话无效 没有成功 我确认
  • 如果 gulp 安装在与 gulpfile.js 不同的文件夹中(node_modules),如何运行 gulp

    我在一个目录中有 gulpfile js 在另一个目录中有 node modules 当我运行 gulp 时 出现错误 在 目录 中找不到本地gulp 尝试运行 npm install gulp 问题是 我无法在 gulpfile js 目
  • Java 中“私有静态最终”和“公共静态最终”类变量的最接近的 Ruby 表示形式?

    给定下面的 Java 代码 您可以最接近地表示这两个static finalRuby 类中的变量 并且 在 Ruby 中是否可以区分private static and public staticJava 中的变量 public class
  • Python GDAL 未安装在 Mac OSX El Capitan 上

    我在 Mac OSX El Captain 中安装 pygdal 时遇到几个问题 程序如下 安装 GDAL 库http www kyngchaos com software frameworks gdal complete http www
  • 使用给定的步数获取给定最小值和最大值的可枚举范围

    我熟悉可枚举范围 http msdn microsoft com en us library system linq enumerable range 28v vs 100 29 aspx生成值枚举的方法 但我想要一些稍微不同的东西 我想提
  • ^ 有什么作用? [复制]

    这个问题在这里已经有答案了 我是 C 编程新手 正在查看我不久前发现的一些示例 由于我是一名不错的 Java 程序员 因此我取得了良好的进步 至少从我的角度来看 D 现在我遇到了一些我无法弄清楚它的作用的事情 Threading Threa
  • 寻找锁定的脚本解释器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个执行特定任务的 NET 库 假设我的应用程序已发送一个程序 以某种脚本语言 并且我希望我
  • asp.net core 2.0 中的 WCF - 无法为具有权限的 SSL/TLS 安全通道建立信任关系

    以前我有一个面向框架 4 5 1 的应用程序 并使用 Web Reference 添加 WCF 服务 这完美地工作并且能够成功地通过服务器进行身份验证 旧代码 ServicePointManager Expect100Continue fa
  • Retrofit2 proguard 删除参数

    我在我的项目中使用了 Retrofit 2 并使用了 proguard 我的proguard dontwarn retrofit2 keep class retrofit2 keepattributes Signature keepattr