【发布时间】:2016-08-23 07:29:54
【问题描述】:
当我检查我的应用程序崩溃时,注意到了这个报告
上传您的 ProGuard 去混淆文件,以便去混淆此 APK 版本的未来堆栈跟踪。 检查了这个链接,但不明白 https://support.google.com/googleplay/android-developer/answer/6295281?hl=en
【问题讨论】:
当我检查我的应用程序崩溃时,注意到了这个报告
上传您的 ProGuard 去混淆文件,以便去混淆此 APK 版本的未来堆栈跟踪。 检查了这个链接,但不明白 https://support.google.com/googleplay/android-developer/answer/6295281?hl=en
【问题讨论】:
作为我的回答,Proguard 是您尝试编译 apk 时的主要过程之一(尤其是当您将 apk 发布到 google play 商店时)
混淆
优化
收缩
Android studio import problems. (Apktool)
简单来说,你可以看看使用一些逆向工程技术如何看待没有proguard的apk
https://ahbsa.wordpress.com/2015/04/30/decompiling-apk-reverse-engineering-android-application/
使用一些逆向工程技术,apk 中带有 proguard 的类会是这样的
你现在可能有想法了。即使您使用了 Proguard , .dex 类仍然可以被反编译。但是如果你使用 Proguard,代码几乎是不可读的。并且如果你使用一些更先进的技术(比如 Dexguard),它们可以提供更好的性能,并且在反编译 .dex 类后代码会更复杂。
【讨论】:
您使用 proguard 的原因有很多,如本问题中所述。 Should I use ProGuard?
如果链接断开,我将复制此问题的答案:
对 Android 应用程序进行逆向工程非常容易,所以如果你想防止这种情况发生,是的,你应该使用 ProGuard 的主要功能:混淆。
ProGuard 还有另外两个重要的功能:收缩,它消除了未使用的代码,显然非常有用,同时也是优化。不过,优化是使用 Java 字节码进行的,并且由于 Android 运行在从 Java 字节码转换而来的 Dalvik 字节码上,因此某些优化效果不会那么好。所以你应该小心那里。
在 Android 网站上有关于如何使用 proguard 的说明。你需要检查的主要事情是你有这条线
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 在您的 project.properties 文件中。由于您提到您使用 Android Studio 并且您没有此文件,但系统询问您配置文件,请尝试选择 Android SDK 中的一个(tools/proguard/proguard-android.txt)。
【讨论】:
在安卓工作室
1) 进入Project的“build.gradle”(Module的build.gradle不是根目录build.gradle文件)
2) 编辑它并在“buildTypes”下添加类型(因为我添加了发布和调试模式)
3)这里的“minifyEnable”是proguard选项,通过将其设置为TRUE(发布和调试,我在发布模式下设置为真,在调试模式下设置为假)启用在相应模式下运行proguard)
4) 之后的行 "proguardFiles getDefaultProguardFile('proguard-android.txt'),代表proguard规则文件 您将通过名称“proguard-rules.pro”在应用程序模块(模块)中获得此信息(因为您可以识别上一行中的最后一个条目) 编辑/添加 proguard 规则。
5) 你完成了!
如果我遗漏了什么,请告诉我。谢谢。
【讨论】: