10

我正在调查在我的应用程序启动过程中发生的一些问题,但 DDMS 在启动过程之前不会启动调试模式,没有办法可以更早地捕获事件?

4

4 回答 4

19

我知道这已经晚了几年,但对于未来的任何搜索:

放入WaitForDebugger您的代码是一种方法。

在设置中解锁开发者选项(通过点击安卓设备系统信息中的内部版本号)允许我们选择要调试的应用程序,然后在程序启动时选择等待调试器。这使我们可以在WaitForDebugger不修改和重新安装代码的情况下进行等效的添加和删除操作。

于 2015-05-29T15:09:57.340 回答
13

对于 Android Studio,这对我有用:

  1. 添加

android.os.Debug.waitForDebugger();

你想从哪里开始调试。

  1. 然后在代码中添加一个断点
  2. 编译您的应用程序并将其传递到您的设备
  3. 重新启动您的设备
  4. 启动后,附加调试器:在此处输入图像描述

  5. 开始调试

于 2017-12-19T20:20:26.887 回答
1

您应该实现自己的 Application 类,该类扩展 Application 并覆盖 onCreate 等方法。此类将是您的应用程序的起点。

还将其设置为清单中的应用程序。

于 2013-06-05T00:30:37.450 回答
0

在应用程序启动之前,Android 可以等待调试器附加到您的应用程序。这是一个名为Wait for debugger的开发人员选项。

脚步

  • 启用开发者选项(点击构建版本 7 次)

  • 启用 USB 调试

  • 使用调试模式将您的应用程序安装到您的设备上

  • 在开发者选项中:按下Select debug app并选择应用程序

  • 启用Wait for debugger,如屏幕截图所示: 在此处输入图像描述

  • 启动您的应用程序:

    • 例如,如果测试应用程序从推送通知的终止状态启动,则将该推送通知发送到设备。
    • 例如,如果测试从 Google Assistant 启动的应用程序,请使用 Google Assistant 来触发它。
  • 该应用程序尚未启动,而是会显示一个对话框: 在此处输入图像描述

  • Attach Debugger to Android Process通过按下按钮 连接调试器在此处输入图像描述

我的情况

对于任何有兴趣/供我将来参考的人:我想调试我的 Android 应用程序,当应用程序处于终止状态时接收推送通知消息。它实际上是在 Android 上运行的 Flutter 应用程序,因此这与 Android 和 Flutter 都相关。

在此处输入图像描述

我已撤销此 GIF 中显示的 API 密钥。

小费

如果Wait for debugger启用,有时您需要分离或关闭 Android Studio 的调试器并重新附加它,以便成功处理后续应用程序启动。否则,该应用程序将永远无法启动。

请注意,我从设备(左侧设备,iOS)发送推送通知,推送通知导致应用程序在(右侧设备,Android)上启动。然后我附加调试器,程序在我设置的断点处暂停FirebaseMessagingReceiver

我在这里写了这些步骤的另一个版本。

于 2021-09-12T12:05:47.053 回答