我想构建一个库,但我不希望某些类暴露给开发人员,但我确实希望它们暴露给我的库代码并轻松测试。
有没有办法使用 ProGuard 或任何其他方式(如 Android SDK 中使用的@hide 符号)隐藏特定的公共类?
也许门面(http://en.wikipedia.org/wiki/Facade_pattern)会有所帮助。此模式的目的与您的问题相似。它提供了一个简化的外部世界,同时它保留了图书馆内的所有花里胡哨。
混淆的全部意义在于它为外部人员隐藏了方法,但库内的引用被更新了。通常,您将拥有一个
void myMethodWithAVeryExplicitName() {
// Do Stuff
}
void otherMethod() {
// Call the first method
myMethodWithAVeryExplicitName();
}
它将被混淆为:
void a() {
// Do Stuff
}
void b() {
// Call the first method
a();
}
然后 Proguard 有很多选项用于混淆或保留公共类、扩展特定类的类、成员......