我有一个将被应用程序使用的库。该模块具有接口(interface)和辅助类。
我怎样才能混淆整个模块,但仍然允许访问所有这些接口(interface)和帮助类?
我试过这个:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
然后我发现自己必须在 proguard 中的所有类上执行 --keep
。有什么我可以添加到 pro guard 中的东西,这样我就可以保留所有这些接口(interface)/帮助类,并且仍然将其混淆?
最佳答案
如果你只想让你的库的公共(public) API 不被混淆,你需要指定这个公共(public) API。图书馆有多种方法:
为公共(public) API 和实际实现提供单独的包,例如
com.example.library
包含公共(public) API,而com.example.library.internal
包含隐藏的实际实现。将实际的实现包设为私有(private)
ProGuard 规则将如下所示:
-keep public class com.example.library.* { public protected *; }
这将只在 com.example.library 包中保留公共(public)类及其公共(public)或 protected 方法/字段。
关于java - 混淆模块/库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041396/