ProGuard可以将访问修改程序更改为package-private吗?

时间:2016-03-10 20:21:46

标签: java proguard android-proguard

是否可以使用ProGuard将所有混淆的类移动到命名包并将其公共或受保护的方法或成员变量更改为包受保护?

我知道你可以使用-repackageclasses来移动类,但似乎-allowaccessmodification将访问修饰符更改为public。 目标是防止我的库的用户能够使用除暴露的公共API之外的任何东西。任何帮助表示赞赏。

编辑:我的意思是package-private不受包保护。

1 个答案:

答案 0 :(得分:0)

我认为你不能,我认为你不应该这样做。当编译类并且代码不会改变时,放松对象/方法限定符将不会改变访问模式;换句话说,如果限定符更改为protected,则成功调用public方法/对象的对象仍然可以访问它。相反的情况并非如此;变为public的{​​{1}}对象/方法可能会突然变为对调用对象不可见/不可访问 - 呈现编译错误的代码。我之前使用过ProGuard,但我的回答是基于逻辑而不是实验。