一.介紹
在檢視Android API源碼時,Android.jar内部有大量@hide注解的代碼,
無論是用Eclipse還是Android Studio都會隐藏這些代碼,是以檢視API源碼會出現很多錯誤,
基本上都是找不到方法或類字段等等錯誤,如PhoneWindow,ActivityThread等都沒有找到, 我早期看API時就很惱火!
這時隻能去Android SDK源碼目錄搜尋PhoneWindow.java, 用文本編輯器打開檢視,非常不友善啊啊啊。。。
二.解決方法
方法一
将SDK源碼全部導入AS或Eclipse,依然麻煩,為了檢視一兩個API而導入上百M的代碼很不劃算!
方法二
在萬能的GitHub已有人去除Android.jar中@hide注解
位址: https://github.com/anggrayudi/android-hidden-api
1.下載下傳對應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無法調用endCall(),隻能通過反射調用;
用去除@hide的Android.jar,就可直接調用endCall();
直接調用隐藏API的缺點:
1.Android隐藏API是因為不能保證這些API還存在新系統版本, 是以盡量少用隐藏API!
2.不利于團隊合作,如果有人使用正常Android.jar就無法編譯如endCall()之類的隐藏API!
簡書: http://www.jianshu.com/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