由于比赛训练需要,我就手动下载了 Okhttp 的 jar 包然后手动导入到项目,但是使用的时候居然闪退,报错说 okio.Buffer 类不存在。详细错误如下

Caused by: java.lang.ClassNotFoundException: Didn't find class "okio.Buffer" on path: DexPathList[[dex file "/data/data/com.zmide.demo/code_cache/.overlay/base.apk/classes5.dex", zip file "/data/app/~~LpkBlgSgaJ60gL-3uERt-Q==/com.zmide.demo-eXi02cl0E6mkSVkTd_fqGA==/base.apk"],nativeLibraryDirectories=[/data/app/~~LpkBlgSgaJ60gL-3uERt-Q==/com.zmide.demo-eXi02cl0E6mkSVkTd_fqGA==/lib/arm64, /system/lib64, /system_ext/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at okhttp3.ResponseBody$Companion.create(ResponseBody.kt:248) 
        at okhttp3.ResponseBody$Companion.create$default(ResponseBody.kt:247) 
        at okhttp3.internal.Util.<clinit>(Util.kt:66) 
        at okhttp3.internal.Util.immutableListOf(Unknown Source:0) 
        at okhttp3.OkHttpClient.<clinit>(OkHttpClient.kt:1073) 

全网都在说是因为没有 okio 的 jar 包,下载一个 okio 的包导入就好了,于是我天真的下载了一遍又一遍最新版的 okio-3.0.jar 问题也依旧…

后来我发现 okio 3.0 好像是一个 Kotlin 的包,于是下载了一个 2.1.0 版本的 okio 才可用。

okhttp jar 包版本:4.9.3 下载地址: https://search.maven.org/remote_content?g=com.squareup.okhttp3&a=okhttp&v=4.9.3

okio jar 包版本:2.1.0 下载地址: https://search.maven.org/remote_content?g=com.squareup.okio&a=okio&v=2.1.0

参考链接:

A workaround for Android "L" Okio packaging problem. Place all of the following in a `libs/` folder: https://gist.github.com/JakeWharton/017738659d4f38adedc2

OkHttp (Okio) conflicts with /system/framework/okhttp.jar on Android L Preview: https://github.com/square/okhttp/issues/967