微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在android studio中正确实现ProGuard?

如何解决如何在android studio中正确实现ProGuard?

我在学习proguard时遇到了困难,我需要帮助来删除所有R8警告并正确实施proguard规则。我几乎看过youtube上的所有视频,并阅读了有关proguard / proguard-rules的博客,文档和文章,但是到目前为止,我仍然有很多问题,下面将对其进行列举。这是我的问题:

  1. 到目前为止,我知道当我创建模型类时,我需要在包中添加一个-keep class,这样它才不会被混淆,但是像这样的模型呢:(我也应该添加{{1 }}上的保护规则?)
-keep
  1. public class Constants { public static final int ERROR_DIALOG_REQUEST = 9001; public static final int PERMISSIONS_REQUEST_ENABLE_GPS = 9002; public static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 9003; public static final String LOG_DB = "DB_Error"; } //Or like this: public class Cameraview extends SurfaceView implements SurfaceHolder.Callback { public Cameraview(Context context) { super(context); getHolder().addCallback(this); setFocusableInTouchMode(true); setFocusable(true); requestFocus(); } @Override public void surfaceCreated(SurfaceHolder holder) { } @Override public void surfaceChanged(SurfaceHolder holder,int format,int width,int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } } RecyclerAdapter这样的适配器类呢?我知道他们会受到混淆的影响,但是我们应该让它混淆吗?还是我们也应该将其添加到规则中?

  2. 对于活动类,同样要做的事情是什么?例如,如果我从数据库中检索数据,将会对过程产生影响吗?

  3. 下一步是关于库的。我知道我应该在每个依赖项中添加相应的proguard规则,但是我看到一些博客说,即使他没有将实现添加到依赖项中,也需要添加OkHttp3。因此,我想到一个问题,我应该如何知道是否还需要将其他库添加到规则中?

  4. 最后,我应该如何调试规则或如何知道是否在proguard中包含或缺少某些规则? (如果可能,您能否举一些调试proguard-rules的示例)

希望您能回答我所有的问题,因为我非常确定外面有人也在努力捍卫Proguard,因此我希望,如果他们看到这些问题,将能够帮助他们克服这种情况,而不会费劲寻找答案分别在互联网上。谢谢!

解决方法

首先,您需要了解ProGurad的功能。如果我以一种非常简单的方式进行说明,它会将类名,变量和方法更改为其他名称(例如),当有人尝试从apk解码您的代码时,这将很难阅读。

现在,您需要记住,它不会混淆XML文件和Android组件(活动/服务等),基本上不会混淆您在manifest.xml中声明的所有类。

因此,除了它之外,您还可以混淆所有内容(Java / Kotlin)。但是由于某些依赖性,您必须告诉ProGurad也不要混淆很少的文件。


提到您的问题,下面是答案

  1. 模型类是您创建的那些类,用于解析响应JSON或保持UI状态。因此,对于response-JSON,您需要了解问题。解析器用于匹配字段名称,并且当proguard更改时,文件名,字段和JSON不匹配。因此解析将不起作用。这就是人们要求保留模型类的原因。 [注意:对于GSON,如果您使用的是@SerializedName] ,则无需保留模型类。

  2. 无需保留。

  3. 您不能混淆Activity类的名称。

  4. 由于依赖关系,您需要保留一些类。因此,请在所用库的文档中查找proguard规则。大部分库都包含它们是否需要proguard配置。

  5. 首先,如果您做错了任何事情,则在编译或运行应用程序时会出错。并且,如果您要检查代码是否被混淆以及混淆了多少代码,请you need to analyze apk

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。