如何修复:“未解析的引用:缓冲区”或“使用‘缓冲区(源):BufferedSource’是一个错误。已移至扩展函数”?

Lun*_*lpo 9 android okio

我有 3 行代码可以从 OkHttp3 源获取正文:

val responseBody = response.peekBody(response.body()!!.contentLength())
val source = GzipSource(responseBody.source())
val body = Okio.buffer(source).readUtf8() //issue is that line
Run Code Online (Sandbox Code Playgroud)

在另一台计算机上,我收到错误消息:“使用 'buffer(Source): BufferedSource' 是一个错误。移动到扩展功能”

所以通过替换最后一行来修复它:

val body = source.buffer().readUtf8()
Run Code Online (Sandbox Code Playgroud)

现在在第一台计算机上的 bun 我有错误:“未解析的引用:缓冲区”所以我需要恢复该更改。

怎么了?根据错误消息我无法弄清楚。似乎是 gradle 配置的问题。但是什么?如何在两台计算机上编译代码。

小智 7

将实现“com.squareup.okio:okio:2.3.0”添加到您的build.gradle


小智 7

我无法弄清楚它,所以我将描述我为“修复它”所做的工作。

他们将 Okio 更改为与 kotlin 扩展一起使用,在此 URL 中您可以找到包含所有更改的更改日志。 https://square.github.io/okio/changelog/#version-200-rc1

就我而言,我试图通过单元测试。

旧的方法是:

val inputStream = javaClass.classLoader.getResourceAsStream("api-response/$fileName")
val source = Okio.buffer(Okio.source(inputStream))
Run Code Online (Sandbox Code Playgroud)

新方法是:

val inputStream = javaClass.classLoader!!
.getResourceAsStream("api-response/$fileName")
.source()
.buffer()
Run Code Online (Sandbox Code Playgroud)