我的 Eclipse Android 应用程序是使用 android-sdk\platforms\android-16 中的 android.jar 构建的,在断点处我想查看调用堆栈中的以下代码:
ViewRoot.draw(boolean) line: 1522
我在 android-sdk\sources\android-16 中有 android-16 的源代码。但是,没有 ViewRoot.java - 我最接近的是 android-sdk\sources\android-16\android\view 中的 ViewRootImpl.java。draw(boolean) 函数在那里,但从第 2050 行开始。第 1522 行的功能完全不同。
所以我的问题是:为什么文件名和行号不匹配?
我的清单有 targetSdkVersion="15",但这应该没什么区别,对吧?我在源文件夹中搜索了 ViewRoot.java,但只找到了 ViewRootImpl.java 和 ViewRootImpl_Delegate.java(不管是什么)。
编辑:添加了完整的调用堆栈
Spine [Android Application]
DalvikVM[localhost:8613]
Thread [<1> main] (Suspended (breakpoint at line 670 in ChartView))
<VM does not provide monitor information>
ChartView.onDraw(Canvas) line: 670
ChartView(View).draw(Canvas) line: 6880
NineFrameLayout(ViewGroup).drawChild(Canvas, View, long) line: 1646
NineFrameLayout(ViewGroup).dispatchDraw(Canvas) line: 1373
LinearLayout(ViewGroup).drawChild(Canvas, View, long) line: 1644
LinearLayout(ViewGroup).dispatchDraw(Canvas) line: 1373
FrameLayout(ViewGroup).drawChild(Canvas, View, long) line: 1644
FrameLayout(ViewGroup).dispatchDraw(Canvas) line: 1373
PhoneWindow$DecorView(ViewGroup).drawChild(Canvas, View, long) line: 1644
PhoneWindow$DecorView(ViewGroup).dispatchDraw(Canvas) line: 1373
PhoneWindow$DecorView(View).draw(Canvas) line: 6883
PhoneWindow$DecorView(FrameLayout).draw(Canvas) line: 357
PhoneWindow$DecorView.draw(Canvas) line: 1862
ViewRoot.draw(boolean) line: 1522
ViewRoot.performTraversals() line: 1258
ViewRoot.handleMessage(Message) line: 1859
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 3683
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 507
ZygoteInit$MethodAndArgsCaller.run() line: 839
ZygoteInit.main(String[]) line: 597
NativeStart.main(String[]) line: not available [native method]
Thread [<8> Binder Thread #2] (Running)
Thread [<7> Binder Thread #1] (Running)
Thread [<10> Binder Thread #3] (Running)
Thread [<11> Binder Thread #4] (Running)
这是我感兴趣的 ViewRoot.draw 中发生的事情,因为这是调用堆栈中的点(在调试器中使用 step return),其中视图屏幕在运行 Gingerbread 的手机上被空白(在我的情况下是 AVD -我没有那个硬件)。这是因为我升级了 UI 以使用 SherlockActionBar,但是有问题的代码是从 Android 导入的,而不是从 Sherlock 库导入的。但我的问题仍然存在 - 为什么我在 android-16 源代码中找不到 ViewRoot.java,只有一个类似的模块,其中行号不相关?