我有一个将被应用程序使用的库。该模块具有接口和辅助类。
如何对整个模块进行模糊处理,但仍允许访问所有这些接口和辅助类?
我试过了:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
然后我发现自己必须在proguard的所有课程上--keep
。有什么我可以添加到专业保护,以便我可以保留所有这些接口/辅助类,仍然有它混淆了吗?
答案 0 :(得分:1)
如果您希望仅对库的公共API进行模糊处理,则需要指定此公共API。图书馆有各种方法:
为公共API和实际实施提供单独的包,例如: com.example.library
包含公共API,而com.example.library.internal
包含隐藏的实际实现。
将实际的实施包私有化
ProGuard规则将如下所示:
-keep public class com.example.library.* { public protected *; }
这将只保留公共类以及com.example.library包中的公共类或受保护的方法/字段。