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