从 Android Studio 运行 Android 应用程序时如何启用协程调试模式?

Ste*_*ris 7 gradle kotlin android-studio kotlin-coroutines

我在通过 Android Studio 以调试模式运行 Android 应用程序时遇到协程异常。

kotlinx.coroutines.JobCancellationException:StandaloneCoroutine 已取消

协程调试文档中,我了解到,通过启用协程的调试模式,我可能会获得更完整的堆栈跟踪信息。

它可以通过设置系统属性 DEBUG_PROPERTY_NAME 或通过运行带有启用断言(-ea 标志)的 Java 来启用。

这就是我被困住的地方。在 Android Studio 中实现此目的的惯用方法是什么?我的项目是使用 Gradle 配置的,并且在 Windows 上运行。理想情况下,有一种方法可以通过 Gradle 配置进行配置,以便任何通过源代码控制拉入此项目的人都可以启用协程调试模式。

Ste*_*ris 5

我还没有找到通过 Android studio 或 Gradle 进行配置的方法。有关这样做的信息对我仍然有用。但是,以下内容已被验证有效;我得到了完整的堆栈跟踪。

“系统属性”是指Java 系统属性。它们可以在运行时使用设置System.setProperty

因此,我将以下代码添加到我的Application.onCreate().

override fun onCreate() {
    // Enable coroutines debug mode in debug builds.
    if (BuildConfig.DEBUG) {
        System.setProperty(
            kotlinx.coroutines.DEBUG_PROPERTY_NAME,
            kotlinx.coroutines.DEBUG_PROPERTY_VALUE_ON
        )
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)