我尝试在android studio中使用Proguard,但Proguard似乎没有混淆类名,例如,我的应用程序结构和配置:
和配置
但当我尝试在应用程序中触发异常时:
ADB控制台中列出了异常:
只有方法被混淆了,MainActivity.class没有
我也面临着同样的问题,
在为Gradle更新Android插件后,Proguard停止混淆我的实用程序和其他类文件。
经过几次搜索,我发现Android studio gradle现在使用的是更新版本的Proguard。
根据这个堆栈溢出的答案,其中指出:proGuard会自动添加特定于android/google包的规则。
因此,在我的应用程序中更改了一些规则后,Proguard再次混淆了类名。
旧的proguard规则。赞成的意见:
#support-v4
#@link https://stackoverflow.com/questions/18978706/obfuscate-android-support-v7-widget-gridlayout-issue
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
#support-v7
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
#https://stackoverflow.com/a/34895791/4754141
-keep class !android.support.v7.view.menu.**
-keep interface android.support.v7.* { *; }
#support design
#@link https://stackoverflow.com/a/31028536
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }
#error : Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService'
#solution : @link https://stackoverflow.com/a/14463528
-dontnote com.google.vending.licensing.ILicensingService
-dontnote **ILicensingService
#updating to Gradle 2.14.1 caused error : https://stackoverflow.com/q/17141832/4754141
-keepattributes EnclosingMethod
#render script
#@link https://stackoverflow.com/questions/22161832/renderscript-support-library-crashes-on-x86-devices
-keepclasseswithmembernames class * { native <methods>; }
-keep class android.support.v8.renderscript.** { *; }
新的proguard规则。赞成的意见:
#https://stackoverflow.com/a/41901653/4754141
#https://stackoverflow.com/a/23840049/4754141
-keep class android.support.** { *; }
-keep interface android.support.** { *; }
这是一种预期行为,因为课堂是一种活动!
AndroidM中提到的所有类anifest.xml必须保留它们的名称(活动、服务、提供者、接收者、应用程序、检测)。否则系统将无法找到它们。
Gradle build会自动为您的ProGuard配置生成一些规则来实现这一点。它扫描AndroidManifest。xml并为其中找到的每个类添加规则。
如果要查看使用的所有规则,请将此行添加到ProGuard规则中:
-printconfiguration "build/outputs/mapping/configuration.txt"
它将创建配置。包含所有规则的txt文件。
应该有这样的东西:
# view AndroidManifest.xml #generated:50
-keep class com.github.browep.proguard.MainActivity {
<init>(...);
}
我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?
我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?
问题内容: 是否可以仅将ProGuard用于混淆。我不希望ProGuard从我的项目中删除任何类。我打算使用ProGuard只是为了混淆,以防止进行反向工程。 问题答案: 是的,通过指定 您可以在ProGuard手册中找到有关所有配置选项的详细信息。 请注意,缩小和优化可能有助于防止反向工程。
看起来在Android Studio中创建的任何APK文件都可以通过www.limelect轻松反编译。com/android/utility快速反向工程APK文件。 有人成功地在Android Studio中混淆了他们的APK文件吗? 在谷歌,似乎没有人对此发表评论,尽管我试图用谷歌群组向Android工具团队的任何人发送信息。 我能够建立- 文件生成正常,但源Java文件很容易反编译和检查。
我尝试使用。 当我在没有的情况下运行应用程序时,应用程序运行成功。当我用运行我的应用程序时,我的应用程序崩溃。 我认为问题是:将我的类的属性重命名为简短的。 保留my one(静态)类的方法和属性的正确方法是什么?
我有一个项目,下面给出了文件。当我发出命令时,我希望Maven生成一个JAR,其中包含 所有依赖项和 我的代码的模糊版本。 为了拥有一个包含所有依赖项和模糊代码的JAR文件,我可以做些什么呢? 更新1(17.01.2016 19:54 MSK):更改了ProGuard配置,如下所示,但仍然生成一个带有未混淆类文件的JAR。 更新2(17.01.2016 20:29 MSK):失败。最后的消息可以在