项目用到了 okhttp+okio,之前是 Java+Kotlin 混合开发,没有任何问题。
后来重构的时候,考虑到Kotlin部分同事还不会,就去掉了Kotlin代码和环境。

一开始 Debug 也没有啥问题,直到 release 时出问题了,一直报如下问题:

  1. java.lang.NoClassDefFoundError: didn't find class kotlin.text.charsets

WTF !!! 我都没用 Kotlin,咋会有 kotlin.text.charsets 问题???

嗯,一定是第三方 jar 用到了,排查吧……

一个个 jar 打开看,最后在 okio 下发现了大量的 kotlin 代码:
[app]okio出现kotlin.text.charsets 找不到 - 图1

PS: 不用一个个 jar 解压出来看,jar 包引入之后,到 lib 里就能把它展开了。

okio 为啥会是 kotlin 实现的?
一通百度之后,知道了,原来 1.16 之后的版本,okio就已经切换成 kotlin 了。

解决办法

换个1.16的版本,再试 OK。