雖然也有類似的問題(如this和this),但他們的回答並不能解決我的問題。我正在使用Android Studio 1.5.1,目標是Android API 18(在Android KitKat 4.4之前,所以我正在處理Dalvik,而不是ART運行時)。如何使用Java反射調用Android Dalvik內部方法?
我的問題是:
(1)是否有可能使用反射來調用的Dalvik內部的方法呢?如果是這樣,你能展示一個代碼示例嗎?例如,Dalvik有自己的位於源代碼here (Interpreter)的棧,我可以通過反射調用函數dvmDumpRunningThreadStack()嗎? (2)如果(1)是不可能的,因爲堆棧是用本地代碼寫的,是否有可能調用任何 Dalvik內部方法使用反射嗎?(012)。如果是這樣,你能展示一個代碼示例嗎?例如,Dalvik有很多位於源代碼here (Dalvik)的方法,我可以通過反射調用任何方法嗎?
我認爲不可能。基於你的問題,我期待看看它將如何在Java JVM中完成,並發現這篇文章/博客文章:http://blog.takipi.com/using-reflection-to-look-inside-the-jvm-並且認爲關鍵句子是:'通過一系列C++宏和許多艱苦的工作,HotSpot團隊手動將幾十個內部C++類的字段結構映射並加載到全局gHotSpotVMStructs中。這個過程使他們可以從外面反思。「我在達爾維克沒有找到類似的結構,但我可能弄錯了。 –