【问题标题】:How to obfuscate package name in android studio如何在android studio中混淆包名
【发布时间】:2017-10-23 07:52:31
【问题描述】:

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

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

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

那么我该如何实现呢,请帮忙。

谢谢

【问题讨论】:

    标签: android android-studio obfuscation android-proguard


    【解决方案1】:

    在 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 并使用其内置函数来编译、预验证、混淆和打包代码)))。

    【讨论】:

      猜你喜欢
      • 2021-01-23
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多