天天看點

android統計代碼中api,Android-檢視隐藏的API源碼

介紹

在檢視Android API源碼時,Android.jar内部有大量@hide注解的代碼,

無論是用Eclipse還是Android Studio都會隐藏有@hide注解的代碼!

是以我們檢視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!