android-16的源代码与jar文件不匹配

时间:2012-11-18 10:11:19

标签: android

我的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”,但这肯定不会有任何区别吗?我在sources文件夹中搜索了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中发生的事情,因为这是调用堆栈中的一点(在调试器中使用步骤返回),在运行Gingerbread的手机上查看屏幕被清空(在我的情况下) AVD - 我没有那个硬件)。这是因为我升级了UI以使用SherlockActionBar,但有问题的代码是从Android导入的 - 而不是Sherlock库。但我的问题仍然存在 - 为什么我不能在android-16源代码中找到ViewRoot.java,只有一个类似的模块,其中的行号不能绑定?

1 个答案:

答案 0 :(得分:2)

您在堆栈跟踪中看到的行号和类与您运行的apk的android版本有关。在您的情况下 Gingerbread ,因此您需要在该版本的sdk中查找源代码。 在您的情况下,相应的源代码应该是this,假设这是您正在使用的sdk版本。如果它只是改变该网站上的版本而你应该拥有你想要的东西。