如何使用ProGuard(或任何其他方式)隐藏库Jar中的公共类?

时间:2013-07-15 16:04:21

标签: java android proguard

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

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

2 个答案:

答案 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)会有所帮助。此模式的目的与您的问题类似。它提供了一个减少外部世界,同时它保留了图书馆内的所有花里胡哨。