模糊模块/库

时间:2016-06-26 17:47:31

标签: java android proguard obfuscation android-proguard

我有一个将被应用程序使用的库。该模块具有接口和辅助类。

如何对整个模块进行模糊处理,但仍允许访问所有这些接口和辅助类?

我试过了:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

然后我发现自己必须在proguard的所有课程上--keep。有什么我可以添加到专业保护,以便我可以保留所有这些接口/辅助类,仍然有它混淆了吗?

1 个答案:

答案 0 :(得分:1)

如果您希望仅对库的公共API进行模糊处理,则需要指定此公共API。图书馆有各种方法:

  1. 为公共API和实际实施提供单独的包,例如: com.example.library包含公共API,而com.example.library.internal包含隐藏的实际实现。

  2. 将实际的实施包私有化

  3. ProGuard规则将如下所示:

    -keep public class com.example.library.* { public protected *; }
    

    这将只保留公共类以及com.example.library包中的公共类或受保护的方法/字段。