【发布时间】:2015-02-24 15:14:49
【问题描述】:
我正在使用 Android Studio (A.S) 1.0.2 进行调试,并在 build.gradle 中设置了 compileSdkVersion 21。 当使用带有 API 21 的模拟器时,一切正常。 在具有 API 19 的设备上进行调试时会出现此问题。 调用堆栈中的每一行(在 A.S 中标记为“Frames”)都正确显示了与 API 19 匹配的函数名称、源文件和行号。 但是,当我单击与其中一个框架源(例如 Activity.java)相对应的行之一时,A.S 会错误地打开并显示文件的 API 21 版本而不是 API 19 版本。
在我的 android sdk 文件夹中,我有两个 ./sources/android-19 和 ./sources/android-21
知道为什么 A.S 会显示错误的文件版本吗?
我尝试过的事情(按顺序):
- 重置 Android Studio(通过删除 ~/.AndroidStudio*)
- 将 Android Studio 更新到最新版本
- 使用 API 21 在模拟器上运行 - A.S 显示文件的正确版本 (21)。
- 将 compileSdkVersion 更改为 19 并在 API 19 设备上运行 - A.S 在调用堆栈中显示正确的行号,并在正确的行中打开文件的正确版本 (API 19)。
- 将 compileSdkVersion 更改为 19 并在 API 21 模拟器上运行 - AS 在调用堆栈中显示对应于 API 21 的行号(在我看来这是正确的行为),但是,当单击它时,AS 错误地打开升级文件的 API 19 版本,而不是 API 21 版本。
总而言之,当单击调用堆栈中的一行时,A.S 会打开由 compileSdkVersion 表示的文件版本,而不是设备/模拟器在调试会话期间使用的版本。
【问题讨论】:
-
我想找到一个解决方案,其中
compileSdkVersion设置为 21,Android Studio 在 API 级别 19 设备上调试时会自动显示正确的源。我根本不想切换compileSdkVersion,因为我的构建应该针对 API 级别 21。
标签: android api debugging android-studio