我以前曾经在Proguard指定的项目中使用过每个项目,最终都放弃了这个项目,因为它导致了许多问题,导致它无法使用,并导致资源耗尽。但是我目前的项目确实需要混淆才能使逆向工程变得更加困难。由于我使用的Android Studio和摇篮我启用了它在构建配置:如何获得一个简单的Android(Studio)Proguard配置工作
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
我再建一个发布版本,看看292页的警告和建设的失败。大多数情况如下,并涉及到库(改造,约达时间,Butterknife等)
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement
OK,所以我认为它是优化掉库中的部分。所以,我想加入这样的线给proguard-rules.pro文件(在摇篮文件,并自动创建由Android工作室指定):
-keep class butterknife.internal.** { *; }
没有区别。好的,所以我会尝试禁用所有缩小和优化,希望只能从混淆中受益(即使公认会减少混淆的好处)。我添加了这些行Proguard的配置文件:
-dontshrink
-dontoptimize
我重新编译,绝对没有什么变化,我还是留下了292个相当无意义的编译警告。现在我真的很困惑。
- 我该如何让100%确定Proguard实际上是在阅读我的Proguard配置文件?还是使用它,但我设置了一个不正确的选项?
- 什么可以添加到Proguard文件,以减少其工作只是混淆,所以我有一个Proguard启用构建配置,作为一个起点(没有打破我的应用程序),并没有优化掉任何代码。
我希望有任何帮助可以帮助减少我对Proguard的仇恨。
你的回答可以帮助在加上几行影响了身材,所以我知道正在使用ProGuard的配置文件。但我不想逐个修复每个库,我想禁用所有优化,删除代码,所以Proguard只会混淆代码。我尝试过使用你提到的方法(特别是 - 以前没有使用过的方法),所以添加“-dontwarn okio。**”这样的行可以让我解决构建警告并创建一个很棒的APK,但是APK以各种各样的方式崩溃,它并非没有Proguard。我需要停止Proguard删除代码。 – 2014-12-04 10:23:31
看看Proguard手册,看起来像我需要的是保持一切的能力。我想从不删除任何代码的位置开始,只是优化混淆,但我不知道如何保留所有代码,似乎需要我单独地将每个类错误地删除,但这不是直截了当的。 – 2014-12-04 11:23:55