安卓:什么是Proguard和ProGuard mapping

9
4个回答

4
作为我的回答,Proguard 是在编译 apk 时的主要过程之一(特别是当您将 apk 发布到 Google Play 商店时)。
- 混淆 - 优化 - 缩减 Android Studio 导入问题。 (Apktool) 简单来说,您可以通过使用一些反向工程技术来查看没有 Proguard 的 apk。

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

使用混淆工具后,apk内部的类可能会被某些反向工程技术转换成类似以下的形式。

enter image description here

你可能已经意识到了,即使使用了Proguard,.dex类仍然可以被反编译。但如果使用了Proguard,代码几乎是无法阅读的。如果使用了一些更高级的技术(例如Dexguard),它们可以提供更好的性能,并且在反编译.dex类后代码会更加复杂。

0

在这个问题中提到了许多原因,你可以使用ProGuard。

如果链接失效,我将从这个问题中复制答案:

反编译Android应用程序非常容易,因此,如果您想防止这种情况发生,是的,您应该使用ProGuard进行混淆。

ProGuard还有另外两个重要的功能:缩小未使用的代码并显然非常有用的优化。优化操作与Java字节码一起运行,但由于Android运行在从Java字节码转换而来的Dalvik字节码上,因此某些优化效果不佳。因此,您需要小心处理。

有关如何在Android网站上使用proguard的说明。您需要检查的主要事项是您是否在project.properties文件中具有以下行:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

由于您提到使用Android Studio并且没有此文件,但被要求选择配置文件,请尝试选择位于Android SDK(tools/proguard/proguard-android.txt)中的文件。


0

在Android Studio中

1)进入项目的“build.gradle”(模块的build.gradle文件,而不是根目录的build.gradle文件)

2)编辑它,在“buildTypes”下添加类型(如我添加了发布和调试模式)

3)这里,“minifyEnable”是Proguard选项,将其设置为TRUE以在相应模式下运行Proguard(我在发布模式下设置为true,在调试模式下设置为false)

4)在此之后的一行,“proguardFiles getDefaultProguardFile('proguard-android.txt')”,代表Proguard规则文件,您可以在应用程序模块(Module)中找到名为“proguard-rules.pro”的文件(如上一行的最后一个条目所示),编辑/添加Proguard规则。

5)完成!

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

Proguard规则


0

Proguard可以执行多个操作,如缩小(shrinking)、混淆(obfuscating)等...(Proguard),并将它的工作记录到特定文件中(ProGuard mapping)。

[在此阅读更多]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接