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