7

我想构建一个库,但我不希望某些类暴露给开发人员,但我确实希望它们暴露给我的库代码并轻松测试。

有没有办法使用 ProGuard 或任何其他方式(如 Android SDK 中使用的@hide 符号)隐藏特定的公共类?

4

2 回答 2

0

也许门面(http://en.wikipedia.org/wiki/Facade_pattern)会有所帮助。此模式的目的与您的问题相似。它提供了一个简化的外部世界,同时它保留了图书馆内的所有花里胡哨。

于 2013-07-15T21:23:11.520 回答
0

混淆的全部意义在于它为外部人员隐藏了方法,但库内的引用被更新了。通常,您将拥有一个

void myMethodWithAVeryExplicitName() {
    // Do Stuff
}

void otherMethod() {
    // Call the first method
    myMethodWithAVeryExplicitName();
}

它将被混淆为:

void a() {
    // Do Stuff
}

void b() {
    // Call the first method
    a();
}

然后 Proguard 有很多选项用于混淆或保留公共类、扩展特定类的类、成员......

于 2013-07-15T16:12:07.070 回答