【问题标题】:Debugging an App that does not have a launcher Activity调试没有启动器活动的应用程序
【发布时间】:2016-12-20 16:53:53
【问题描述】:

我当前的应用程序没有任何活动。它基本上是一堆没有活动启动器的服务 android 组件(就像标题所说的)。基本上,它通过 Android 操作系统的广播接收器自动触发。

我很难将调试器附加到我的 android 进程以调试应用程序。

知道如何强制调试器附加到应用程序吗?

【问题讨论】:

  • 我当前的应用程序没有任何活动。那么显然不会工作......(在 API 13+ 上)
  • @Selvin 不,它确实有效。不是因为您没有活动,您的应用程序将无法正常工作。您完全可以拥有一个只有服务、内容提供者和广播接收器的应用程序。此外,我可以看到我的日志正在运行并且我的应用程序正在运行,现在唯一棘手的部分是将调试器附加到 Android 进程。 (我的安卓:minSdkVersion = 15)
  • 不,它不会 Applications are in a stopped state when they are first installed but are not yet launched 这样的应用程序不会收到任何广播

标签: android adb android-debug


【解决方案1】:

您可以为此使用Debug.waitingForDebugger() 实用程序方法。

来自文档:

等到调试器附加。一旦调试器附加,它就会返回,因此如果您想立即开始跟踪,您将需要在 waitForDebugger() 调用之后放置一个断点

【讨论】:

  • 我确实添加了 Debug.waitingForDebugger() 并且我认为这是一个聪明的主意,但是我无法从 Android Studio“将调试器附加到 Android 进程”中将调试器附加到 Android 应用程序。
  • 你会如何使用这个?我可以将它添加到我的应用程序类中并将其留在那里还是会等待调试器,即使没有使用调试器?
  • 没错。应用程序将挂起,直到您附加调试器,这意味着您永远不应将其添加到生产代码中。
【解决方案2】:

找到罪魁祸首。除了@Edson 的建议之外,我忘记在我的构建类型上设置debuggable true,因为它默认设置为false。现在它正在工作!

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多