使用RESTMock
我们运行仪器测试时出现此错误
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
FATAL EXCEPTION: pool-6-thread-1
Process: com.example.debug, PID: 6606
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
at okhttp3.tls.internal.TlsUtil.newKeyManager(TlsUtil.kt:84)
at okhttp3.tls.HandshakeCertificates$Builder.build(HandshakeCertificates.kt:144)
at io.appflate.restmock.SslUtils.localhost(SslUtils.java:49)
at io.appflate.restmock.RESTMockServer.setUpHttps(RESTMockServer.java:91)
at io.appflate.restmock.RESTMockServer.init(RESTMockServer.java:74)
at io.appflate.restmock.RESTMockServerStarter$1.run(RESTMockServerStarter.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
Run Code Online (Sandbox Code Playgroud)
IIUC,Kotlin 可以把 avarargs
当作 Kotlin Array 然后调用像copyInto这样的扩展函数
我们使用 OkHttp 4.0.1、Kotlin 1.3.40、R8 1.5.41
我们的测试 apk 正确包含copyInto
方法,所以我认为这不是 proguard/R8 问题:
我不知道接下来要测试什么。我在 OkHttp 的 github issuse 页面上询问,他们建议我在这里发布链接
更新:仍然发生在 OkHttp 4.1.0 上。我也意识到它不可能是 R8 问题,因为 R8 不会从测试 apk 中删除代码。
当我使用okhttp3.mockwebserver.MockWebServer
启用了 https 的服务器证书时,我遇到了同样的问题okhttp-tls
。
就我而言,问题在于,仅通过导入com.squareup.okhttp3:okhttp-tls:4.2.0
依赖项,org.jetbrains.kotlin:kotlin-stdlib
就可以将其解析为 version 1.2.71
。
鉴于该copyInto
方法是在启动 kotlin1.3
时引入的,它失败并出现与您相同的错误。
我通过在我的 gradle.build 文件中明确添加 kotlin 版本来修复它:
testRuntime 'org.jetbrains.kotlin:kotlin-stdlib:1.3.50'
我遇到了同样的问题,然后将提及的 lib 添加到我的项目中。它解决了我的问题:
行家:
<!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.3.70</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
或者
'org.jetbrains.kotlin:kotlin-stdlib:1.3.70'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5403 次 |
最近记录: |