2016-03-10 17 views
1

是否有可能,使用ProGuard,到所有的混淆類移動到指定包和改變它們的公共或受保護的方法或者成員變量來包裝保護?Can ProGuard可以將訪問修改器更改爲封裝專用?

我知道你可以使用-repackageclasses移動類,但它似乎-allowaccessmodification改變訪問修飾符爲public。 目標是防止我的圖書館的用戶能夠使用除暴露的公共API之外的任何內容。任何幫助表示讚賞。

編輯:我的意思是包私有不包保護。

+0

也許值得設置使用ProGuard一個Hello World項目啓用和分享在GitHub上?它會減少摩擦,幫助人們分手並嘗試他們的想法? – Mark

回答

0

我不認爲你能做到,我不認爲你應該。當編譯類並且代碼不會改變時,放寬對象/方法限定符不會改變訪問模式;換句話說,如果限定符更改爲public,則成功調用protected方法/對象的對象仍然可以訪問它。相反是不正確的;一個public對象/方法,輪流protected可能成爲隱形/不可直接調用對象一下子 - 渲染嚴重編譯代碼。我之前使用過ProGuard,但我的回答是基於邏輯而不是實驗。

+0

我的意思是package-private不受保護。我認爲(我可能是錯的),我們可以創建一個像罐子一樣密封的aar。如果是這樣的話,那麼不在aar中的任何類都不能訪問包私有成員。 – agent8261

相關問題