我正在使用 Android Studio 2.1.3 和 gradle 开发一个 android 应用程序。
问题是简单方法中的断点永远不会命中,尽管它必须命中,因为在应用程序调试期间满足条件。
首先,我认为这个问题与这个问题的答案中描述的问题有关: BuildConfig.DEBUG always false when building library projects with gradle
为了对此进行测试,我删除了库项目并将所有源代码集成到主应用程序模块中。它什么也没解决。需要注意的是,以下是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 向我显示的屏幕截图:
这也不是唯一的案例。碰巧编译器在 Stepping over 时完全跳转到代码的另一部分而不是被调试的部分。
这里有什么合理的解释吗?挂起:“thread”和“all”都试过了,结果一样。
更新 1: 使用 Eclipse 重新创建项目,一切正常。仍然很奇怪为什么使用 Android studio 这不起作用!
原文由 XMight 发布,翻译遵循 CC BY-SA 4.0 许可协议
在使用 Eclipse 重新创建应用程序并观察到正确的行为后,我返回到 Android Studio 以检查是否有任何我遗漏的选项。
在尝试了文件 -> 设置中的所有选项后,我得出的结论是 Instant Run 是导致我浪费如此多宝贵时间的罪魁祸首。
我不明白它与我的问题有什么关系,但在清除所有复选框后:
我最终得到了一个按照我作为开发人员期望的方式执行的代码: