【问题标题】:Android: how to debug app's start-up processAndroid:如何调试应用程序的启动过程
【发布时间】:2013-05-31 12:45:02
【问题描述】:

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

【问题讨论】:

  • 没关系,我只是在代码里放了WaitForDebugger,它可以让我调试启动过程。

标签: android process startup ddms


【解决方案1】:

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

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

在设置中解锁开发者选项(通过点击安卓设备系统信息中的内部版本号)允许我们选择要调试的应用程序,然后在程序启动时选择等待调试器。这让我们可以做相当于添加和删除WaitForDebugger 的操作,而无需每次都修改和重新安装代码。

【讨论】:

  • 正是我想要的。当从 Google Assistant 调用时,我需要在应用启动之前将调试器附加到应用。
【解决方案2】:

对于 Android Studio,这对我有用:

  1. 添加

android.os.Debug.waitForDebugger();

你想从哪里开始调试。

  1. 然后在代码中的后面添加一个断点
  2. 编译您的应用并将其传递到您的设备
  3. 重启设备
  4. 一旦启动,附加调试器:

  5. 开始调试

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      步骤

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

      • 启用 USB 调试

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

      • 在开发者选项中:按选择调试应用并选择应用

      • 启用等待调试器,如截图所示:

      • 启动您的应用:

        • 例如如果通过推送通知测试应用从终止状态启动,请将该推送通知发送到设备。
        • 例如如果测试从 Google 助理启动的应用,请使用 Google 助理来触发此操作。
      • 应用程序尚未启动,而是会显示一个对话框:

      • 附加调试器,按 Attach Debugger to Android Process 按钮

      我的情况

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

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

      提示

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

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

      我编写了这些步骤的另一个版本here

      【讨论】:

        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2015-03-02
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2016-11-21
        • 1970-01-01
        相关资源
        最近更新 更多