Lokhttp3 / internal / Util

问题描述

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

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

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

在类JavaNetCookieJar中,此delimiterOffset(header,pos,limit,";,")方法Util类中被调用

Util类的delimiterOffset()方法与以下方法不兼容:

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

delimiterOffset(delimiter: Char,endindex: Int = length)

上述方法Util类中被调用

当我将鼠标悬停在JavaNetCookieJar类上时,它说它来自okhttp3-urlconnection-3.12.1包,当我将鼠标悬停在Util包上时,它说它来自okhttp-4.8.0。我正在使用

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

有趣的是,甚至当我在gradle中删除okhttp3实现时,这2个文件也不受影响。

解决方法

您必须使用所有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!
}
,

检查你的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'
}

现在清理并重建项目。