介紹
在查看Android API源碼時,Android.jar內(nèi)部有大量@hide注解的代碼,
無論是用Eclipse還是Android Studio都會隱藏有@hide注解的代碼!
因此我們查看API源碼會發(fā)現(xiàn)很多類找不到錯誤,如PhoneWindow,ActivityThread等都沒有找到,我早期看API時就很惱火!
這時只能去Android SDK源碼目錄搜索PhoneWindow.java來查看源碼,非常不方便啊啊啊。。。
解決辦法兩個
方法一.將SDK源碼全部導(dǎo)入AS或Eclipse,依然麻煩,為了查看一兩個API而導(dǎo)入上百M的代碼很不劃算!
方法二.在萬能的GitHub已有人去除Android.jar中@hide注解
地址: https://github.com/anggrayudi/android-hidden-api
1.下載對應(yīng)API版本Android.jar
2.替換SDK/platforms/android-版本/Android.jar
3.重新打開IDE就可以查看
方法二還有額外便利,就是可以直接使用隱藏API,不需要反射(浪費性能又麻煩又易寫錯)
Android.jar并不會打包到APK,所以去除@hide的Android.jar,只是欺騙IDE/編譯器,方便程序員查看使用!
例如,掛斷電話API被隱藏了TelephonyManager.getDefault().endCall(),
用正常Android.jar無法調(diào)用endCall(),只能通過反射調(diào)用;
用去除@hide的Android.jar,就可直接調(diào)用endCall();
直接調(diào)用隱藏API的缺點:
1.Android隱藏API是因為不能保證這些API還存在新系統(tǒng)版本,所以盡量少用隱藏API!
2.不利于團隊合作,如果有人使用正常Android.jar就無法編譯如endCall()之類的隱藏API!
簡書: http://www.itdecent.cn/p/c5d061d16b30
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/71436885
GitHub博客:http://lioil.win/2017/05/08/Android-HiddenAPI.html
Coding博客:http://c.lioil.win/2017/05/08/Android-HiddenAPI.html