不參與混淆的類或者組件,只要是為了讓應用在執行過程中能準確找到對應的類。像四大組件,我們知道一般情況下Activity的子類是不能混淆的,但是呢,并不是說完全不能混淆。
我們知道一般情況下Activity的子類是不能混淆的,但是呢這句話說的不完全。確切的說應該是在Manifest文件中注冊的Activity是不能混淆的。因為Manifest文件中要寫一個Activity的class的路徑的字符串。如果原始的類被混淆了,而字符串沒有修改,那么Android系統在做安全驗證的時候就會找不到Activity,那么就沒辦法通過安全驗證。但是設想一下如果我們的繼承關系是這個樣子的:MainActivity--->BaseActivity ---->Activity
那么試問,這個BaseActivity是不是可以混淆,經過驗證這個是可以混淆的。因為BaseActivity 不需要在Manifest文件中注冊,而MainActivity需要。那么我們變通一下。把這個繼承鏈加長a--->MainActivity--->BaseActivity ---->Activity
這個時候,a 類的實現是這個樣子的:public class? a? extends? MainActivity{}
其實a里面啥也沒有,就是個占位符,這個a并不是混淆生成的,而是我們本來就把這個類命名為a。并且在Manifest文件里面我們就注冊這個a類。那么試問這個時候,MainActivity 和 BaseActivity是不是就可以參與混淆。而這個時候我們的所有業務依然在MainActivity里面實現,a僅僅是個看起來像是混淆名字的占位符而已。。。。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态