我正在调查在我的应用程序启动过程中发生的一些问题,但 DDMS 在启动过程之前不会启动调试模式,有没有办法可以更早地捕获事件?
4 回答
我知道这已经晚了几年,但对于未来的任何搜索:
放入WaitForDebugger
您的代码是一种方法。
在设置中解锁开发者选项(通过点击安卓设备系统信息中的内部版本号)允许我们选择要调试的应用程序,然后在程序启动时选择等待调试器。这使我们可以在WaitForDebugger
不修改和重新安装代码的情况下进行等效的添加和删除操作。
您应该实现自己的 Application 类,该类扩展 Application 并覆盖 onCreate 等方法。此类将是您的应用程序的起点。
还将其设置为清单中的应用程序。
在应用程序启动之前,Android 可以等待调试器附加到您的应用程序。这是一个名为Wait for debugger的开发人员选项。
脚步
启用开发者选项(点击构建版本 7 次)
启用 USB 调试
使用调试模式将您的应用程序安装到您的设备上
在开发者选项中:按下Select debug app并选择应用程序
启动您的应用程序:
- 例如,如果测试应用程序从推送通知的终止状态启动,则将该推送通知发送到设备。
- 例如,如果测试从 Google Assistant 启动的应用程序,请使用 Google Assistant 来触发它。
我的情况
对于任何有兴趣/供我将来参考的人:我想调试我的 Android 应用程序,当应用程序处于终止状态时接收推送通知消息。它实际上是在 Android 上运行的 Flutter 应用程序,因此这与 Android 和 Flutter 都相关。
我已撤销此 GIF 中显示的 API 密钥。
小费
如果Wait for debugger启用,有时您需要分离或关闭 Android Studio 的调试器并重新附加它,以便成功处理后续应用程序启动。否则,该应用程序将永远无法启动。
请注意,我从设备(左侧设备,iOS)发送推送通知,推送通知导致应用程序在(右侧设备,Android)上启动。然后我附加调试器,程序在我设置的断点处暂停FirebaseMessagingReceiver
。
我在这里写了这些步骤的另一个版本。