Android ProGuard 如何隐藏/混淆导出库的源代码

标签 android proguard android-proguard

我正在开发 Android 库,我想隐藏/混淆库的源代码实现。

用户项目应用程序使用库的方式是:

startActivity( new Intent(context, LibraryActivityName.class) );

所以我只需要在库项目中保留入口点 Activity 的名称,仅此而已。

当我使用默认的 ProGuard 设置时:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

以及 suggested example for library - 没有任何反应,通过单击用户应用程序中的 Activity 名称(当他导入它时)- 可以看到源代码。

谢谢,

最佳答案

由于您没有典型的库,因此不应包括典型的库示例。

首先需要开启Proguard执行,修改这一行:

 minifyEnabled true

其次,您不想保留所有公共(public)类(class),而只保留 Activity :

 -keep class LibraryActivityName { public protected <methods>; }

如果我正确理解你的问题,剩下的类可以被完全混淆,所以应该不需要进一步的配置,除非你在某处使用反射。

如果您将混淆后的类重新打包到内部包或使用其他东西,这也很好

 -repackageclasses my.library.package.internal

这可能还需要

 -allowaccessmodification

顺便说一句。 ProGuard 不会混淆代码本身,只会混淆类/方法名称。

关于Android ProGuard 如何隐藏/混淆导出库的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167966/

相关文章:

android - TableLayout 中的行间距

java - 应用程序无法在 Activity 之间传递值

android - Paypal MPL延迟链式支​​付

android - 使用启用了 proguard 的 GSON

java - 如何使用 Proguard 保留 InnerClass 中的特定字段

netbeans - 如何在 NetBeans 6.7/6.8 中使用 ProGuard?

android - 如何检测用户何时在 android 设备上插入耳机? (与 ACTION_AUDIO_BECOMING_NOISY 相反)

android - 如何在 android studio 中获取 proguard 错误

java - ButterKnife 5.1.1 Proguard 错误

java - 使用 ProGuard 混淆私有(private)字段