【问题标题】:How to enable coroutine debug mode when running an Android App from Android Studio?从 Android Studio 运行 Android App 时如何启用协程调试模式?
【发布时间】:2021-09-12 18:38:18
【问题描述】:
我在通过 Android Studio 在调试模式下运行我的 Android 应用时遇到协程异常。
kotlinx.coroutines.JobCancellationException: StandaloneCoroutine 被取消
从coroutines debugging documentation 得知,通过启用协程的调试模式,我可能会获得更完整的堆栈跟踪信息。
可以通过设置系统属性 DEBUG_PROPERTY_NAME 或通过运行启用了断言(-ea 标志)的 Java 来启用它。
这就是我卡住的地方。在 Android Studio 中实现这一点的惯用方法是什么?我的项目是使用 Gradle 配置的,并且我在 Windows 上运行。理想情况下,有一种方法可以通过 Gradle 配置进行配置,以便通过源代码控制拉入此项目的任何人都可以启用协程调试模式。
【问题讨论】:
标签:
android-studio
kotlin
gradle
kotlin-coroutines
【解决方案1】:
我还没有找到通过 Android Studio 或 Gradle 进行配置的方法。这样做的信息对我仍然有用。但是,以下内容已验证有效;我得到了完整的堆栈跟踪。
“系统属性”指的是Java System Properties。它们可以在运行时使用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
)
}
...
}