在使用某些類的方法時,發現其內部就一行throw new RuntimeException("Stub!"),但是實際運行中並沒有拋出該錯誤,該方法也並沒有語法報錯。
因此可能是系統設計者故意隱藏此部分的實現源碼。
- 使用的Android Studio或者其他IDE看jar包的源碼的時候,編譯工具只讓你看到方法簽名,不讓你看方法的實現;
- Android SDK自帶的Source源碼包很小,並沒有包括所有的Android Framework的源碼,僅僅提供給應用開發參考用,一些比較少用的系統類的源碼並沒有給出,所以有時候你會看到throw new RuntimeException("Stub!")。
- 此外,在IDE里看源碼的時候,有時候一些方法或者類會出現報紅(找不到)的情況:這是因為這些方法或者類是被Android SDK隱藏的,出於安全或者某些原因,這些API不能暴露給應用層的開發者,所以編譯完成的android.jar包里會把這些API隱藏掉,而我們的Android項目是依賴android.jar的,查看源碼的時候,IDE會自動去android.jar找對應的API,自然會找不到。當然,這些API在ROM中是實際存在的,有些開發者發現了一些可以修改系統行為的隱藏API,在應用層通過反射的方式強行調用這些API執行系統功能,這種手段也是一種HACK。