mic*_*ael 4 android proguard android-proguard
我正在开发Android库,我想隐藏/混淆库的源代码实现.
用户项目应用程序将使用该库的方式是:
startActivity( new Intent(context, LibraryActivityName.class) );
Run Code Online (Sandbox Code Playgroud)
所以我需要Activity在库项目中保留入口点的名称,这就是全部.
当我使用默认的ProGuard设置时:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
以及库的建议示例 - 没有发生任何事情,通过单击用户应用程序内的活动名称(当他导入它时) - 可以看到源代码.
谢谢,
由于您没有典型的库,因此不应包含典型的库示例.
首先,您需要启用Proguard执行,更改此行:
minifyEnabled true
Run Code Online (Sandbox Code Playgroud)
其次,您不希望保留所有公共类,而只保留活动:
-keep class LibraryActivityName { public protected <methods>; }
Run Code Online (Sandbox Code Playgroud)
如果我正确理解你的问题,其余的类可以完全混淆,所以除非你在某处使用反射,否则不需要进一步配置.
如果将混淆的类重新打包到内部包或使用的东西中,也会很好
-repackageclasses my.library.package.internal
Run Code Online (Sandbox Code Playgroud)
这可能也需要
-allowaccessmodification
Run Code Online (Sandbox Code Playgroud)
顺便说一句.ProGuard不会混淆代码本身,只会混淆类/方法名称.