如何编写android proguard规则?

Pro*_*mer 4 documentation obfuscation android proguard android-studio

我想学习如何编写 android proguard 规则,以便混淆代码并使对应用程序进行逆向工程变得更加困难。

我已经搜索了很多简单的解释,但似乎找不到有用的东西,我在这里阅读了 proguard 的文档(https://www.guardsquare.com/en/products/proguard/manual/usage),但我发现它非常令人困惑并且我什么都不明白,还阅读了这个文档。(https://developer.android.com/studio/build/shrink-code#obfuscate)但除了介绍之外什么也没有。

也在 Youtube 上搜索了很多,但我发现没有任何帮助,以及在互联网上搜索文章。

我想要一个简单的解释,解释混淆器规则文件中应该写什么,什么是 Keep 和 dontwarn .. 等等以及如何在混淆后测试应用程序以及如何确保发布后不会因为混淆而出现错误它在 Play 商店中。提前致谢。

shr*_*ari 7

虽然progaurd 介绍progaurd 使用文档提供了有关它的简要详细信息,但以下几个示例可以帮助您理解:

\n\n

基本上,Progaurd 默认情况下会缩小并混淆应用程序中的所有代码,但有时我们可能不需要它,因此我们需要描述必要的 -keep 选项。

\n\n

当任何库不\xe2\x80\x99 不提供规则或者你不知道哪些类要避免混淆时,要提出规则吗?

\n\n

读取构建输出和 logcat:

\n\n

构建警告将告诉您要添加哪些 -dontwarn 规则\nClassNotFoundException、MethodNotFoundException 和 FieldNotFoundException 将告诉您要添加哪些 -keep 规则

\n\n

要在整个类上添加 @Keep 注释或在所有模型上添加通配符规则:

\n\n
-keep class com.somaapp.abc.model.** { *; }\n
Run Code Online (Sandbox Code Playgroud)\n\n

ProGuard 默认会删除程序执行不需要的许多代码属性和隐藏元数据。其中一些实际上对开发人员有用 \xe2\x80\x94 例如,您可能希望保留堆栈跟踪的源文件名和行号以使调试更容易:

\n\n
-keepattributes SourceFile, LineNumberTable\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可以查看ProGuard手册中的属性列表

\n\n

progaurd 手册的“用法”部分描述了必要的 -keep 选项,“示例”部分提供了大量示例。

\n