Android Studio步入错误的sdk源

时间:2015-02-21 00:24:29

标签: android debugging android-studio

我有以下build.gradle设置。

compileSdkVersion 21
buildToolsVersion '21.1.1'

defaultConfig {
    minSdkVersion 18
    targetSdkVersion 21
}

问题在于,当我在KitKat设备(Genymotion或Device上的19)上进入Android SDK源时,它仍然坚持步入Android-21源而不是19。

由于我有v21代码,因此更改上述任何设置只会破坏我的应用程序的编译。所有19个调用都得到了正确保护,代码在19上工作,只是源代码链接不正确。

提前干杯Stack Overflow兄弟姐妹们!

3 个答案:

答案 0 :(得分:10)

编辑(2016年7月1日):
Android Studio 2.2修复了它,并将跳转到与您实际运行的设备相对应的API级别的源(只要您安装了这些源)。宣布here

以下解决方法对我有用:

  1. 编译应用程序而不做任何更改。
  2. 以调试模式启动应用程序(并可选择在断点处中断)。
  3. 转到File> Project Structure,找到您的app模块(或/和/或任何其他模块),并将Compile Sdk Version更改为与您正在调试的设备(即19)匹配的模块。
  4. 进入框架代码 - 它应该进入SDK 19源代码。

答案 1 :(得分:6)

正如另一个答案所述,它已在Android Studio 2.2(bug report)中得到修复。

然而,即使在Android Studio 3.0中,它仍然不适合我 它只在我检查了"显示替代源切换器"之后才开始工作。在“设置”中。

screenshot

答案 2 :(得分:1)

如果您尝试在运行Android 5.0.x Lollipop映像的模拟器上调试源代码,会发生什么?它是否突出了正确的来源?我一直在努力解决这个问题,我得出的结论是问题是由于硬件供应商对android源的定制。

我一直试图在运行4.4.2 KitKat的三星设备上逐步浏览android源代码。有些文件排成一行,有些文件排成几行,其余文件都没有出现问题。 Instrumentation.java是我经常发现自己的东西。它大概是5行左右。

那么为什么我认为供应商定制了android源码呢?我在ActivityThread.java和Instrumentation.java中完成了应用程序启动。即使源不排队,调试器仍将正确步进。我在grepcode.com上用android源代码交叉引用了我的例程。最后,我看到调试器进入函数调用,该函数调用在grepcode上发布的任何java文件版本中都不存在。

以下是一个具体示例:ActivityThread.HandleLaunchActivity。我亲眼目睹了调试人员进行这些调用

unscheduleGcIdler          : present in android source
intent.getWindowStyle      : not present. Samsung customization?
handleConfigurationChanged : present

如果我是对的,那么调试器应该正确地逐步调试模拟图像,因为它不包含供应商自定义代码。