如何在android studio中混淆包名

时间:2017-10-23 07:52:31

标签: android android-studio obfuscation android-proguard

我使用以下代码

成功地模糊了类名和方法
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

中的

但我的问题是包名称没有混淆。

那我怎么能得到它,请帮助。

由于

1 个答案:

答案 0 :(得分:2)

在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工作室只需访问this post

或者将您的代码导入 NetBeans 并使用其内置函数来编译,预验证,混淆和打包代码)))。