我已经使用下面的代码成功混淆了类名和方法
buildTypes {
release {
shrinkResources false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
在应用级build.gradle
文件
和
-dontwarn mypackage.**
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontwarn
在 proguard-rules.pro
但我的问题是包名没有被混淆。
那么我该如何实现,请帮忙。
谢谢
最佳答案
在 Pro-Guard 中,包名可以在 various ways 中混淆,随着混淆和紧凑程度的增加。例如,考虑以下类:
mycompany.myapplication.MyMain
mycompany.myapplication.Foo
mycompany.myapplication.Bar
mycompany.myapplication.extra.FirstExtra
mycompany.myapplication.extra.SecondExtra
mycompany.util.FirstUtil mycompany.util.SecondUtil
假设类名 mycompany.myapplication.MyMain 是配置保留的主要应用程序类。 除 Main 之外的所有其他类名都可以被混淆。
默认情况下,包含无法重命名的类的包也不会重命名,并且保留包层次结构。这会导致像这样混淆的类名:
mycompany.myapplication.MyMain
mycompany.myapplication.a
mycompany.myapplication.b
mycompany.myapplication.a.a
mycompany.myapplication.a.b
mycompany.a.a
mycompany.a.b
-flattenpackagehierarchy 选项通过展平混淆包的包层次结构来进一步混淆包名称:
-flattenpackagehierarchy 'myobfuscated'
或者,-repackageclasses 选项通过将混淆的类组合到一个包中来混淆整个包:
-repackageclasses 'myobfuscated'
混淆后的类名如下所示:
mycompany.myapplication.MyMain
mycompany.myapplication.a
mycompany.myapplication.b
myobfuscated.a
myobfuscated.b
myobfuscated.c
myobfuscated.d
另外指定 -allowaccessmodification 选项允许扩大类和类成员的访问权限,从而提供重新打包所有混淆类的机会:
-repackageclasses 'myobfuscated'
-allowaccessmodification
混淆后的类名如下所示:
mycompany.myapplication.MyMain
myobfuscated.a
myobfuscated.b
myobfuscated.c
myobfuscated.d
myobfuscated.e
myobfuscated.f
指定的目标包始终可以是根包。例如:
-repackageclasses ''
-allowaccessmodification
混淆后的类名是尽可能短的名称:
mycompany.myapplication.MyMain
a
b
c
d
e
f
请注意,并非所有代码都可以接受所有级别的包名称混淆。值得注意的是,您可能必须考虑到您的应用程序可能包含必须调整的资源文件。
混淆代码 在 Android studio 中只需访问 this post .
或者将您的代码导入 NetBeans 并使用其内置功能来编译、预验证、混淆和打包代码)))。
关于android - 如何在android studio中混淆包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46884364/