Android:什么是Proguard和ProGuard映射

Android: What is Proguard and ProGuard mapping

当我检查我的应用程序崩溃时,注意到这个报告

上传您的 ProGuard 反混淆文件,以反混淆此 APK 版本的未来堆栈跟踪。 检查了这个 link 但不明白 https://support.google.com/googleplay/android-developer/answer/6295281?hl=en

proguard 您出于本问题中提到的多种原因而使用。 Should I use ProGuard?

我正在复制这个问题的答案以防 link 损坏:

对 Android 应用程序进行逆向工程非常容易,因此如果您想防止这种情况发生,是的,您应该使用 ProGuard 来实现其主要功能:混淆。

ProGuard 还有另外两个重要的功能:收缩,消除未使用的代码,显然非常有用,还有优化。但是,优化使用 Java 字节码进行操作,并且由于 Android 在从 Java 字节码转换而来的 Dalvik 字节码上运行,因此某些优化不会很好地工作。所以你要小心那里。

Android 网站上有关于如何使用混淆器的说明。你需要检查的主要事情是你有行

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 在你的 project.properties 文件中。由于您提到您使用 Android Studio 而您没有此文件,但系统会询问您有关配置文件的信息,请尝试选择 Android SDK 中的那个文件(tools/proguard/proguard-android .txt).

在android工作室

1) 转到项目的 "build.gradle"(模块的 build.gradle 不是根目录 build.gradle 文件)

2) 编辑它并在 "buildTypes" 下添加类型(因为我添加了发布和调试模式)

3) 这里 "minifyEnable" 是 proguard 选项,通过将其设置为 TRUE 使其在各自的模式下启用 运行 proguard(发布和调试,我在发布模式下设置为 true,在调试模式下设置为 false)

4)之后的一行 "proguardFiles getDefaultProguardFile('proguard-android.txt'),表示proguard规则文件 您将在应用程序模块(模块)中通过名称“proguard-rules.pro”得到这个(因为您可以识别上一行中的最后一个条目) edite/add proguard 规则。

5) 大功告成!

如果我遗漏了什么请告诉我。谢谢。

proguard rules

作为我在这里的回答,Proguard 是您尝试编译 apk 时的主要过程之一(尤其是当您将 apk 发布到 google play store 时)

  1. 混淆

  2. 优化

  3. 缩小

通俗地说,你可以通过一些逆向工程技术看到没有proguard的apk是怎样的

https://ahbsa.wordpress.com/2015/04/30/decompiling-apk-reverse-engineering-android-application/

类 带有 proguard 的 apk 中的 类 通过使用一些逆向工程技术会是类似的东西

你现在可能有想法了。即使您使用了 Proguard ,.dex 类 仍然可以被反编译。但是如果你使用 Proguard,代码几乎不可读。而如果你使用了一些更高级的技术(比如Dexguard),它们可以提供更好的性能,反编译.dex后代码会更复杂类。