Android studio gradle断点在该行找不到可执行代码

问题描述 投票:0回答:12

我正在使用 Android Studio 2.1.3 和 gradle 开发一个 Android 应用程序。

问题在于,简单方法中的断点永远不会被命中,尽管在应用程序调试期间必须满足条件,因此必须命中断点。
首先,我认为这个问题与这个问题的答案中描述的问题有关: 使用 gradle 构建库项目时,BuildConfig.DEBUG 始终为 false

为了测试这一点,我删除了库项目并将所有源代码集成到主应用程序模块中。它什么也没解决。 需要注意的是,以下是 build.gradle,其中 minify 对于 debug/release 都设置为 false:

apply plugin: 'com.android.application'  

android {  
    compileSdkVersion 23  
    buildToolsVersion "23.0.2"  
    defaultConfig {  
        applicationId "com.mycompany.mymobileapp"  
        minSdkVersion 21  
        targetSdkVersion 21  
        versionCode 1  
        versionName "1.0"  
    }  
    buildTypes {  
        release {  
            minifyEnabled false  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
            debuggable true  
            jniDebuggable true  
            renderscriptDebuggable true  
            zipAlignEnabled false  
        }  
        debug {  
            debuggable true  
            minifyEnabled false  
            zipAlignEnabled false  
            jniDebuggable true  
            renderscriptDebuggable true  
        }  
    }  
    productFlavors {  
    }  
}  
  
dependencies {  
    compile fileTree(include: ['*.jar'], dir: 'libs')  
    testCompile 'junit:junit:4.12'  
    testCompile 'org.mockito:mockito-core:2.0.5-beta'  
    testCompile 'com.android.support:support-v4:23.1.1'  
    testCompile 'org.powermock:powermock-api-mockito:1.6.2'  
    testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.6.2'  
    testCompile 'org.powermock:powermock-module-junit4-rule:1.6.2'  
    testCompile 'org.powermock:powermock-module-junit4:1.6.2'  
    compile 'com.android.support:appcompat-v7:23.1.1'  
}

这是 Android Studio 向我展示的屏幕截图:

No executable code found problem

这也不是唯一的案例。编译器在单步执行时,会完全跳转到代码的另一部分,而不是正在调试的部分。

这里有什么合理的解释吗? 暂停:尝试了“线程”和“全部”,结果相同。

更新1: 使用 Eclipse 重新创建项目,一切正常。 令人惊讶的是为什么使用 Android studio 这不起作用!

android debugging android-studio android-gradle-plugin breakpoints
12个回答
60
投票
buildTypes {

release {
    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile('proguard-android.txt')

}
debug {
    debuggable true
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt')

    }
}

在 build.gradle 文件的调试块中设置 minifyEnabled false


8
投票

使用 Eclipse 重新创建应用程序并观察正确的行为后,我返回 Android Studio 以检查是否有任何我错过的选项。

在尝试了“文件”->“设置”中的所有选项后,我得出的结论是“即时运行”是导致我浪费如此多宝贵时间的邪恶因素。

我不明白它与我的问题有何关系,但清除所有复选框后:

enter image description here

我最终得到了一个按照我作为开发人员期望的方式执行的代码:

enter image description here


7
投票

工作室缓存有问题。
文件 -> 使缓存无效/重新启动...可能会帮助你。


6
投票

我也面临着类似的问题。

我已经尝试过:

  • 清理项目
  • 重置 Android Studio
  • 重建项目
  • 禁用即时运行

但没有成功。

我最终所做的就是按Ctrl+Shift++。这是扩展所有代码块的快捷方式。之后我刚刚运行了该项目并且成功了。


2
投票

尝试清理并重建项目。 尝试在此方法中进行一些登录以检查它是否正在执行。

LOG.(TAG,"method being executed")

2
投票

在测试设备上卸载并安装应用程序解决了我的问题。

我尝试过:

  • 清理/重建项目
  • 重置Android Studio,清理缓存
  • 将调试器设置为在所有线程上停止
  • 我的调试变体中没有 minifyEnabled。

从 Android Studio 3.6 开始,无法选择禁用即时运行 所以我没有尝试。 查看这个 StackOverflow 问题


2
投票

我也遇到了和你一样的问题。我认为这是由于某种原因在我清理代码时发生的,并且我正在折叠一些代码块。

解决方案是使用快捷键 CTRL + SHIFT + + 展开我的所有代码块,然后单击 文件>无效缓存/重新启动...

我正在使用Android Studio Arctic Fox | 2020.3.1 和构建:gradle:4.1.3


1
投票

就我而言,问题是

Build Variants
设置为
release
,这当然不是可调试的版本。

enter image description here

(我之前忘记设置它来尝试分析。)


1
投票

断点不起作用的另一个原因可能是,您将其放置在运行时不使用的源代码中。

就我而言,我使用多个模块/依赖项。因此,如果我想放置一个断点,例如在

RecyclerView
中,我必须注意运行时将使用哪个版本,因为 Android Studio 会建议所有可用源(按 Ctrl+N 两次)。

enter image description here


0
投票

重新启动Android Studio

如果您知道没有任何更改可能会导致此问题,因为它之前一直在工作。然后尝试关闭并重新启动 Android Studio。这对我有用

Android Studio 3.5

干净的构建对我不起作用


0
投票

我也面临着类似的问题。

添加到你的文件build.gradle中

DEV {
      initWith debug
    }

-4
投票

确保文件名和类名没有拼写错误。

© www.soinside.com 2019 - 2024. All rights reserved.