小米8手机Jetpack Compose 不显示崩溃日志

561 阅读1分钟
@Composable
fun ExampleException1() {
    var errorState by remember { mutableStateOf(false)}
    if (errorState) {
        throw IllegalArgumentException("Argument error!")
    }
    Button(onClick = {
            errorState = true
    }) {
        Text(text = "Button1")
    }
}


@Composable
fun ExampleException2() {
    Button(onClick = {
        throw IllegalArgumentException("Argument error!")
    }) {
        Text(text = "Button2")
    }
}

在小米8手机上面在点击Button1 和 Button2 在Android Studio的Logcat上都没有显示崩溃日志,用其他的手机在Logcat就有显示崩溃日志。(小米10 有崩溃日志打印),这就会导致在小米8手机上很难定位到崩溃的问题。

image.png

看log发现,以上两个崩溃日志在compose里面都用到了kotlin的协程,我就想协程里面引起的崩溃也会不会有这个情况。

然后我又写了个例子在协程里面抛出异常看看:

fun doSomeThing(){
    viewModelScope.launch {
            throwAnyException()
    }
}

fun doSomeThing1(){
    viewModelScope.launch {
        coroutineScope {
            withContext(Dispatchers.IO){
                throwAnyException()
            }
        }
    }
}

fun throwAnyException(){
    throw IllegalArgumentException("Coroutine error!")
}

结果发现用小米8手机, 在Logcat上果然没有显示崩溃日志;终于破案了。

image.png

这个是我小米8手机的 型号和版本号。不知道大家的小米手机也是不是这样的,或者通过什么方法设置它可以在Logcat显示崩溃日志。还是小米做的什么负优化,导致看不到协程里面的崩溃日志。