当我构建应用程序Proguard运行的发布版本时,但在使用APK分析器查看APK时,一切都是可读的,显然没有应用混淆 .
我的目的是将混淆应用于APK,使逆向工程更加困难 .
Gradle:
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Proguard肯定正在运行,因为我可以在Gradle控制台中看到它 .
proguard-rules.pro:
-dontshrink
-dontoptimize
-keep class com.squareup.picasso.** { *; }
-dontwarn com.squareup.picasso.**
-keep class com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
-keep class kotlin.reflect.** { *; }
-dontwarn kotlin.reflect.**
-keep class javax.annotation.** { *; }
-dontwarn javax.annotation.**
-keep class org.codehaus.mojo.** { *; }
-dontwarn org.codehaus.mojo.**
Proguard文档说混淆默认运行 . 文档还说保持语句中指定的类不会被混淆,但是应用程序本身中的类没有在keep语句中指定,但仍然没有被混淆 .
在进一步查看时,build文件夹中有一个名为aapt_rules.txt的文件,其中包含应用程序中每个类的keep语句 . 我不明白为什么会这样 .
如何重新配置Proguard以使其混淆我的应用程序(而不是库)中的所有代码,而不缩小或删除任何类?
1 回答
通过查看
keep class com.squareup.picasso.** { *; }
和-keep class com.squareup.okhttp.** { *; }
行,你不会混淆任何属于上述包或子包的东西 .
Progaurd会混淆任何不属于上述包和子包的东西 .
你有这些包以外的课吗?