web-dev-qa-db-fra.com

OKHTTP: Nosuchmethoderror CopyInto à TLSutil

Exécution des tests d'instrumentation avec RESTMock Nous obtenons cette erreur

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)

Ceci est la ligne en question dans OKHTTP

IIUC, Kotlin peut traiter un varargs comme une matrice de kotlin, puis appellez des fonctions d'extensions telles que COYINTO

Nous sommes sur Okhttp 4.0.1, Kotlin 1.3.40, R8 1.5.41

Notre test APK contient correctement copyInto méthode, donc je ne pense pas que ce soit un problème de proguard/R8:

enter image description here

Je suis à perte de quoi tester ensuite. J'ai demandé sur la page GitHub Issuse de Okhttp et ils ont suggéré de publier ici link

Mise à jour: toujours sur OKHTTP 4.1.0. Aussi, j'ai réalisé que cela ne peut pas être un problème R8 depuis R8 ne supprime pas le code de Test APK.

8
tir38

J'ai eu un même problème, puis j'ai ajouté la mention de la liberme à mon projet. Cela a résolu mon problème:

maven:

<!-- 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>

ou

'org.jetbrains.kotlin:kotlin-stdlib:1.3.70'
0
Reza