Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android studio中混淆软件包名称_Android_Android Studio_Obfuscation_Android Proguard - Fatal编程技术网

如何在android studio中混淆软件包名称

如何在android studio中混淆软件包名称,android,android-studio,obfuscation,android-proguard,Android,Android Studio,Obfuscation,Android Proguard,我已经使用以下代码成功地混淆了类名和方法 buildTypes { release { shrinkResources false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } }

我已经使用以下代码成功地混淆了类名和方法

buildTypes {
    release {
        shrinkResources false
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}
应用程序级
build.gradle
文件中

proguard rules.pro中

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

那我怎么才能做到呢,请帮忙


多亏了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
-flattePackageHierarchy选项通过展平模糊包的包层次结构,进一步模糊包名称:

-flattenpackagehierarchy 'myobfuscated'
或者,-repackageclasses选项通过将模糊的类组合到单个包中来模糊整个包:

-repackageclasses 'myobfuscated'
模糊的类名如下所示:

mycompany.myapplication.MyMain 
mycompany.myapplication.a 
mycompany.myapplication.b 
myobfuscated.a 
myobfuscated.b 
myobfuscated.c 
myobfuscated.d
mycompany.myapplication.MyMain 
myobfuscated.a 
myobfuscated.b 
myobfuscated.c 
myobfuscated.d 
myobfuscated.e 
myobfuscated.f 
另外,指定-allowaccessmodification选项可以扩大类和类成员的访问权限,从而打开重新打包所有模糊类的机会:

-repackageclasses 'myobfuscated' 
-allowaccessmodification
模糊的类名如下所示:

mycompany.myapplication.MyMain 
mycompany.myapplication.a 
mycompany.myapplication.b 
myobfuscated.a 
myobfuscated.b 
myobfuscated.c 
myobfuscated.d
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中只需访问即可

或者将代码导入到 NetBeans并使用其内置函数编译、预验证、混淆和打包代码)