目前,我正在开发一款基于第三方代码的Android应用程序。我开始设置断点来理解代码,很快就遇到了问题。突然间,我无法让Android Studio在断点处停止。
我试图在onCreate
方法中,在按钮的OnClickListener
s中设置断点,但没有任何效果。现在我发现它唯一有效的地方就是在应用程序模块内部。由于该项目在应用程序模块中只有一个活动类,而其他所有内容都在库模块中提供,事实上我根本无法调试。
我假设AndroidManifest.xml有问题,或者build.gradle文件更有可能有问题。当我刚刚从Eclipse切换到Android Studio时,所有这些gradle的东西对我来说都是新的。
如果我在应用程序运行时将鼠标悬停在库断点上,它会告诉我“在第行找不到可执行代码……”。我想这是我的问题的原因,但我不知道如何解决它。
在构建中的条目中是否有任何“常见嫌疑犯”。gradle那会给我带来麻烦吗?
我已经清理了我的项目,并使缓存无效,但没有成功。我甚至尝试过添加
编辑:我正在使用最新版本的Android Studio(2月18日起的1.1.0版),它应该修复了前一段时间存在的类似错误。
构建的内容。应用程序模块中的gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.MIN_SDK)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
signingConfigs {
release {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('xxx')
storePassword 'xxx'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
debuggable false
jniDebuggable false
zipAlignEnabled true
}
debug {
minifyEnabled false
debuggable true
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':firebase_plugin')
}
还有身材。图书馆模块的梯度:
apply plugin: 'com.android.library'
android {
compileSdkVersion 19
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.MIN_SDK)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
minifyEnabled false
debuggable true
}
}
productFlavors {
}
}
dependencies {
// Facebook SDK
compile project(':facebook')
// Used for StringUtils
compile files('libs/commons-lang3-3.3.2.jar')
// Bug tracking
compile files('libs/bugsense-3.6.1.jar')
compile fileTree(include: ['*.jar'], dir: 'libs')
//Google Play Services - For Google Maps
compile('com.google.android.gms:play-services:5.0.89') {
exclude group: 'com.google.android', module: 'support-v4'
}
// Support Library.
compile 'com.android.support:support-v13:18.0.+'
compile('com.android.support:appcompat-v7:19.1.0') {
exclude group: 'com.google.android', module: 'support-v4'
}
// Volley - Networking library from google.
compile('com.mcxiaoke.volley:library:1.0.0') {
exclude group: 'com.google.android', module: 'support-v4'
}
// Has is own support library in it so need to exclude it so no TOP_LEVEL_EXCEPTION will occur.
compile('de.greenrobot:greendao:1.3.0') {
exclude group: 'com.google.android', module: 'support-v4'
}
// Firebase
compile('com.firebase:firebase-simple-login:1.4.2') {
exclude group: 'com.android.support', module: 'support-v4'
}
// Super Toast
compile('com.github.johnpersano:supertoasts:1.3.4@aar') {
exclude group: 'com.android.support', module: 'support-v4'
}
// Croping images
compile('com.soundcloud.android:android-crop:0.9.10@aar') {
exclude group: 'com.android.support', module: 'support-v4'
}
compile('com.github.chrisbanes.actionbarpulltorefresh:library:0.9.9') {
exclude group: 'com.android.support', module: 'support-v4'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':firebase_plugin')
}
除了olik79的答案之外,我还想补充一点,这两行代码将使你的应用程序在碎片中命中断点。否则,它可能会造成越境碎片
-keep public class * extends android.support.v4.** {*;}
-keep public class * extends android.app.Fragment
这是我在sdk\tools\proGuard中对proguard-android.txt的完整编辑
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
-ignorewarnings
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-keep public class * extends android.support.v4.** {*;}
-keep public class * extends android.app.Fragment
我有点解决了它,尽管我还不完全理解。问题是ProGuard仍然像@Feantury建议的那样处于活动状态。我不知道为什么会这样,因为我在我能想象到的每一个build.gradle位置都指定了mini fy启用false
,但它似乎没有任何效果。
就在几分钟前,我撞车了,我在stacktrace中看到了这样的线条:
java.lang.NullPointerException
at com.example.MyClass(Unknown Source)
...
这让ProGuard成为我的头号嫌疑人。在四处搜索之后,我发现了另一个关于未知源问题的问题。我尝试了建议的解决方案,在启用ProGuard的情况下进行调试,结果成功了!
只需将以下行添加到proguard-rules.txt:
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
正如本期评论中所述,在调试版本中设置minifyEnabled false
是最佳实践。通过在应用程序模块中设置此变量,可以禁用整个proguard构建过程。它在优化发布版本时很有用,但在测试和开发时会出现一些问题。
问题内容: 我正在尝试拍摄JUnit。在源代码中,我在两个位置设置了断点:1)在初始化静态成员的行中2)在一个测试用例的第一行中。 调试器在静态字段初始化行中停止。但这并不会在测试用例中停止。无论我在测试用例中的何处设置断点,调试器都不会在那里停下来。我肯定知道测试用例已执行,因为我可以看到添加的日志消息出现在日志中。 任何帮助将不胜感激。 我正在使用Eclipse Galileo和JUnit4启
我在Netbeans上运行Glassfish,但是调试器不能在断点处停止。 我用“调试模式”启动Glassfish,将调试器附加到9009端口,就像我在日志文件中看到的那样。我在托管bean代码中的一行上设置了一个断点,右键单击项目并选择“debug”。 但是调试器从未停止,我找不到任何错误。即使我在其他行上设置断点,也不起作用。我还需要其他配置吗? 这里是我的环境。 JDK 1.8.0_60 N
https://github.com/discord-bot-tutorial/community-discord-bot在这个特定的项目中,vscode的C#调试器不会停在断点上。我尝试用 创建一个新项目,该项目工作正常,我还用我在Visual Studio Community 2017中创建的另一个项目进行了尝试,该项目也完全正常工作。
我想使用Lmax Disruptor进行性能测试: 配置DURUPTOR 以某种方式“暂停”处理 向RingBuffer添加多条消息 “取消暂停”处理 这样,我可以清楚地测量缓冲区清空的速度。如果我“混合”添加了许多消息(这会带来一些延迟)并进行处理,那么在处理速度方面可能会有不太确定的结果。 然而,我似乎没有在LMAX Disruptor(https://lmax-exchange.github
我已经按照Hannes Dorfmann的教程编写了一个Java注释处理器。我的项目使用Maven。当我尝试按照本文的建议使用调试它时,除了在Intellij中没有命中断点之外,一切都正常。 我可以从命令行运行。 我可以使用远程调试目标附加IntelliJ的调试器。 我的注释处理器运行正常。我已经将语句添加到方法中,并正确地记录了它们。 唯一不起作用的是断点。我设置的断点都没有命中。
在VSCode中使用Attach to Node Functions选项调试Azure函数时,函数会运行,但我无法在任何断点处停止执行 卸载/重新安装Azure功能核心工具 我真的很困惑,因为我相信我最近没有对调试配置进行任何更改。