如何在Android Studio中混淆包名

4
我已成功使用以下代码对类名和方法进行混淆:

我已成功使用以下代码对类名和方法进行混淆:

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个回答

8
在 Pro-Guard 中,包名可以通过多种方式进行混淆,并且可以逐渐增加混淆和紧凑性。例如,考虑以下类:
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

请注意,并非所有包名称混淆级别都适用于所有代码。特别是,您可能需要考虑您的应用程序可能包含必须进行调整的资源文件。
要混淆代码,请访问this post以在Android Studio中进行操作。
或者将您的代码导入到NetBeans中,并使用其内置功能编译、预验证、混淆和打包代码。

你好!我按照你的规则使用了repackage和allow,但是com.myApp.**没有被混淆。它混淆了除com文件夹以外的所有内容。即使我只有这两个规则。是否需要插入另一条规则? - poPaTheGuru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接