无法在Android Studio中调试应用


81

我正在Android Studio中制作一个应用,现在尝试通过adb对其进行调试。当我单击Android一词和底部栏上的徽标时,logcat出现并识别出我的设备。然后我看到了:

屏幕截图

我需要对我的应用程序执行什么操作才能使其“可调试”?

FYI之前是在Eclipse中开发此应用的,而adb可以正常工作。


您找到解决方案了吗?
2013年

从设备上卸载应用程序,然后从Android Studio再次运行它解决了我的问题
Ahmad Behzadi

3
我今天遇到问题,断点无法停止该程序。这是因为在build.gradle中进行了设置。我将minifyEnabled的调试构建类型设置为true,将其删除并断点工作。
bai城堡

这里看我的答案。可能会解决问题的方法
Muahmmad Tayyib '18

Answers:


85

工具栏上有一个“调试”图标。它看起来像一个小“ bug”,位于“运行”图标(看起来像“播放”按钮)旁边。尝试以此启动应用程序。

Click here to debug

编辑:将Android Studio与Gradle结合使用时,以下内容已被弃用。

AndroidManifest.xml文件中还有一个调试标志。它位于应用程序标记下,应设置为“ true”,如下所示:

<application android:debuggable="true">
</application>

1
我们是否可以像日食一样一次跨一步?如果可以,该怎么做?
Ari R. Fikri

1
你当然可以。遇到断点后,将显示调试窗口,顶部的工具栏包含各种步骤命令。您还可以从File-> Settings-> Keymap-在Main menu->下配置各种调试键盘快捷键Run。请参阅以获取更多信息。
2013年

7
最新版本的android studio并没有要求您设置android:debuggable,实际上它显示出一个花样,建议在配置中而不是在清单中进行设置。这有助于避免意外发布带有调试信息的应用程序。
Soundararajan

3
2015年无法正常运行,build.gradle将buildTypes {调试{可调试true

2
这是我的工作。我将清单放入<application android:debuggable =“ true”> </ application>清单中,并调试完美。谢谢
安迪·路易斯

111

执行以下步骤后,我解决了此问题:

转到工具==> android ==>禁用ADB集成,然后再次启用它。

之后,从设备上拔下USB,然后重新插入。

最后按shift + F9


这就是帮助我的原因。在再次工作之后,调试突然停止工作。
Rui Santos

直到今天Stil仍在工作,尝试重新启动所有内容。
Mathijs Segers

1
我只需要关闭并重新打开该项目实例的android studio,以使该错误起作用:/
Rachael 2015年

18
在Android Studio版本3.1.3中没有称为“工具==>安卓”的菜单项,我在任何地方都找不到此选项
James Watkins

1
Android Studio 4菜单中的任何地方都没有“ adb”选项
spartygw

34

要注意的另一件事(我这样做是为了知道,嗯)。确保不启用Proguard进行调试!


6
谢谢,不得不将minifyEnabled设为false,并将rinkResources设为false
Janardhan R

16

即使在Android Studio中多次调试后,我也随机遇到此问题。有一天,调试器将无法连接。我只需要退出Android Studio并重新打开它,调试器就会重新开始工作。


15
    <application android:debuggable="true">
</application>

这不再有效!无需在清单中使用debuggable =“ true”。

相反,您应该将Build Variants设置为“ debug”

调试模式

在Android Studio中,转到BUILD- >选择Build Variant

现在尝试调试。谢谢


“生成”菜单没有“选择生成变体”选项。
皮特·阿尔文,

14

这对我有用:

  1. 关闭Android Studio。
  2. 打开外壳,然后输入:

    adb kill-server

    adb start-server


正是我想要的。以前,我可以使用一个简单的adb reconnect命令来完成此操作,但在AS 3.1中不再这样做(也许我做错了,还是不够?
VictorB

顺便说一句,此解决方案对我有效,而无需关闭AS或终端会话。
VictorB

11

确保已启用ADB集成。

在菜单中:工具-> Android->启用ADB集成(v1.0)


11

如果您的应用程序以前是可调试的,突然之间它不再可调试。这是我的解决方案

  1. 禁用并启用USB debug手机中的开关。
  2. 卸载您的应用程序。
  3. 点击在Android Studio中运行。

8

您可能无法在Android Studio中调试应用程序的一种情况是,选择了“发布”构建变体。发生在我身上-Gradle构建了该应用的发行版(不可调试),然后Android Studio无法尝试连接调试器。


1
即使在其他IDE中,这也使我震惊了很多次。我相信,在大多数IDE中都可以配置调试发布的功能,并且有时建议您是否要将调试器附加到发布的应用程序上。
visc

7

这偶尔发生在我身上,但我还没有弄清楚为什么。没有一个已经发布的解决方案对我有用。对我唯一有效的是:

  1. 从设备上卸载应用程序。
  2. 清洁项目。“构建->清洁项目”。
  3. 重建并安装。

7

当您在清单文件中设置自定义“ android:process”时,应使用“将调试器附加到Android进程”图标。
就我而言,我应该选择合适的过程,然后在“等待调试器”对话框出现后单击“确定”按钮。
在此处输入图片说明


可怕的解决方法,但是现在对我唯一有用的东西,谢谢!!!
Jules

即使我的清单文件中没有自定义的“ android:process”,也为我工作。
杰森·鲍尔斯

这是我的解决方案。谢谢
gmartinsnull

4

检查是否在调试按钮旁边的下拉菜单中选择了您的应用项目。有时Android Studio会重置此选择...

在此处输入图片说明


4

如果启用

<application android:debuggable="true">
</application>

在应用程序manifest.xml中,请确保在生成最终签名的apk时将其禁用,因为这可能会成为攻击者的安全漏洞。仅当只有一个应用程序不显示日志时才使用它。但是,在考虑该选项之前,请尝试以下操作:

导航到android studio中的工具

 Tools==>android==>disable adb integration and again enable it


3

我测试了所有方法,但没有一个起作用!

最终不得不更改adb端口,它正常工作。首先杀死adb服务器,如下所示:

adb kill-server

然后使用另一个端口重新启动

adb -P 5038 start-server

3

我没有使用下面的命令清理构建。

sh gradlew干净的版本

希望有人得到帮助!


1
我们必须在哪个控制台中启动它?
DmitryBoyko '18

运行在Android工作室终端或导航命令到你的项目从外部终端
海德尔·阿里

3

在我的情况下,在任何行附近,都有一个红色的圆圈,上面有一个十字和红线,并显示一条消息:“在第...行上找不到可执行代码...”,就像在Android Studio gradle断点中一样。

更新后出现问题 build.gradle。我们包括Kotlin支持,因此许多方法超过了64K。问题行:

buildTypes {
    debug {
        minifyEnabled true

将它们更改为:

buildTypes {
    debug {
        minifyEnabled false
        debuggable true

然后使用按钮“用Gradle文件同步项目”同步gradle。如果重新启动您的应用程序后,您将收到错误消息:“错误:.dex文件中方法引用的数量不能超过64K。在https://developer.android.com/tools/building/中了解如何解决此问题multidex.html ”,然后,像方法引用的在.DEX文件数不能超过64K API 17添加下列行来build.gradle

android {

    defaultConfig {
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
    implementation 'com.android.support:multidex:1.0.2'
}

更新

根据 https://developer.android.com/studio/build/multidex.html执行以下操作,以在Android 5.0以下启用multidex支持。否则它将无法在这些设备中启动。

打开AndroidManifest并找到标签<application>。Nearandroid:name=是对Application类的引用。打开这个课。用以下方式扩展Application类MultiDexApplication

public class MyApplication extends MultiDexApplication { ... }

如果未设置应用程序类,请这样编写:

<application
        android:name="android.support.multidex.MultiDexApplication" >
    ...
</application>

2

确保在设备或仿真器上启用开发人员模式和USB调试。(设置新的时容易忘记。)


2

您还应该激活工具-> Android->启用ADB集成。




1

对我而言,这是在我使用Proguard时发生的,因此通过尝试所有解决方案,我清理了项目并按下Android Studio上的debug按钮,它开始进行调试


1
我在android studio 4.1中遇到了这个问题,您的解决方案帮助了我。谢谢
Buckstabue

1

就我而言,必须通过完全清除文本文件proguard-rules.pro并制作minifyEnabled falsebuild.gradle文件来删除debug Build Type中的proguard

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

1
<application android:debuggable="true">
</application>

上面的代码不再是解决方案。您需要在build.gradle文件中启用调试。如果您使用不同的buildType,请确保在其中一种构建类型中设置“ debuggable true”。这是我的一个项目的示例代码。

buildTypes {
    debug {
        debuggable true
    }

    release {
        debuggable false
    }
}

**我已从我的gradle文件中删除了与该问题无关的buildTypes内部的其他行。

另外,请确保在进行调试时在android studio中选择正确的构建版本。

在此处输入图片说明


1

多年来,我已经多次访问此线程,总是有不同的响应对我有所帮助。这次我发现是USB集线器阻止了调试器正常工作。听起来很奇怪,我没有直接通过USB集线器将手机连接到计算机,而是不得不将其直接连接到Mac并开始调试。


1

就我而言,我在调试buildType中忘记了minifyEnabled = true和rinkleResources = true。我将这些值更改为false,然后再次使用!

在此处输入图片说明


0

这可能会引起一些麻烦:偶然为logcat输出窗口(带有放大镜的文本框)键入一个过滤器而忘记它是很容易的。可能会过滤掉所有输出并使其看起来好像什么都没有的东西。


0

就我而言,我遇到了同样的问题,因为我尝试调试带符号的apk。在我的gradle配置中,我进行了不同的构建变体,并尝试使用生产keystore.jks调试发行版本。



0

从android studio重新启动adb服务器:工具->“ Troubleshhot Device Connection

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.