4

我正在使用 jitsi 库进行视频连接。第一次安装时它工作正常,但如果用户已经拥有应用程序并从 Play 商店更新它,它会崩溃。崩溃日志说:

Lokhttp3/internal/Util 类中没有静态方法 delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I; 或其超类('okhttp3.internal.Util' 的声明出现在 base.apk!classes3.dex 中)

有 2 个自动生成的文件:1) okhttp3.JavaNetCookieJar 2) okhttp3.internal.Util。

在 classJavaNetCookieJar中,此delimiterOffset(header, pos, limit, ";,")方法在Utilclass 中被调用。

Util类的 delimiterOffset() 方法与调用的方法不兼容:

delimiterOffset(delimiters: String, startIndex: Int = 0, endIndex: Int = length)

delimiterOffset(delimiter: Char, startIndex: Int = 0, endIndex: Int = length)

上面的方法在Util类中被调用。

当我将鼠标悬停在JavaNetCookieJarclass 上时,它说它来自okhttp3-urlconnection-3.12.1package,当我将鼠标悬停在Utilpackage 上时,它说它来自okhttp-4.8.0. 我在用

implementation 'com.squareup.okhttp3:logging-interceptor:4.8.0'

有趣的事实是,即使我在 gradle 中删除 okhttp3 实现,这两个文件也不受影响。

4

2 回答 2

6

您必须使用所有 OkHttp 依赖项的完全相同的版本。您可以手动配置,也可以使用 BOM 自动完成。

dependencies {
   api(platform("com.squareup.okhttp3:okhttp-bom:4.8.0"))
   api("com.squareup.okhttp3:okhttp")              // No version!
   api("com.squareup.okhttp3:logging-interceptor") // No version!
}
于 2020-10-14T11:46:04.067 回答
0

检查你的 gradle 是否有这一行:

configurations {
    all*.exclude group: 'com.squareup.okio'
    all*.exclude group: 'com.squareup.okhttp3'
}

如果是这样,只需将其删除或发表评论

configurations {
    //all*.exclude group: 'com.squareup.okio'
    //all*.exclude group: 'com.squareup.okhttp3'
}

现在清理并重建项目。

于 2021-03-05T12:32:12.830 回答