問題描述
我正在使用 Android Studio 2.1.3 和 gradle 開發(fā)一個 android 應(yīng)用程序.
問題是簡單方法中的斷點(diǎn)永遠(yuǎn)不會被命中,盡管它必須被命中,因?yàn)樵趹?yīng)用程序調(diào)試期間滿足條件.
首先,我認(rèn)為這個問題與這個問題的答案中描述的問題有關(guān):
這也不是唯一的情況.碰巧編譯器在 Stepping 時完全跳到了代碼的另一部分,而不是被調(diào)試的部分.
這里有什么合理的解釋嗎?Suspend: "thread" 和 "all" 都試過了,結(jié)果一樣.
更新 1:使用 Eclipse 重新創(chuàng)建項(xiàng)目,一切正常.還是很奇怪為什么用 Android studio 不行!
使用 Eclipse 重新創(chuàng)建應(yīng)用程序并觀察正確行為后,我返回 Android Studio 以檢查是否有任何我錯過的選項(xiàng).
在嘗試了文件 -> 設(shè)置中的所有選項(xiàng)后,我得出結(jié)論,即時運(yùn)行是導(dǎo)致我浪費(fèi)如此多寶貴時間的邪惡.
我不明白它與我的問題有什么關(guān)系,但是在清除所有復(fù)選框后:
我最終得到了一個按照開發(fā)人員期望的方式執(zhí)行的代碼:
I am developing an android application using Android Studio 2.1.3 and gradle.
The problem is that the breakpoint in a simple method is never hit, although it must be hit because the condition is met during application debugging.
First, I thought that the problem is related to the issue described in the answer for this question:
BuildConfig.DEBUG always false when building library projects with gradle
To test this, I removed library project and integrated all my source code into the main app module. It solved nothing. To be noted that the following is the build.gradle, where minify is set to false for both debug/release:
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'
}
Here is the screenshot with what Android Studio shows to me:
This is also not the only case. It happens that the compiler, while Stepping over, jumps to completely another part of the code than the one being debugged.
Is there any reasonable explanation here? Suspend: "thread" and "all" tried, same result.
UPDATE 1: Re-created the project using Eclipse, and everything works fine. It is still amazing why using Android studio this does not work!
After re-creating the application using Eclipse and observing the correct behavior, I returned to Android Studio in order to check if there is any option that I missed.
After trying all the options from File -> Settings that I could, I made the conclusion that Instant Run is the evil that caused me to waste so much precious time.
I don't understand how it is related with my problem, but after clearing all check-boxes:
I ended up with a code that executes the way I as a developer expect:
這篇關(guān)于Android studio gradle 斷點(diǎn)在行中找不到可執(zhí)行代碼的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!