Bonjour a tous,
Je suis assez novice en développement android et j'ai quelque soucis en la matière.
J'ai été intégré récemment sur un projet android d'envergure et j'ai un soucis que pas grand monde comprends dans ma boite...
Voici le sujet :
J'utilise la librairie de spongycastle pour mettre en place la couche sécurité au projet. Tout compile et fonctionne a merveille sauf un test JUnit qui ne passe pas. En voici la trace :
et voici le logcat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest: Error in testCsrIsGeneratedAndThenSerialized: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.constructCsr(ClientCertificateRequest.java:92) at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.writeTo(ClientCertificateRequest.java:61) at com.toto.mvp.mmp.services.utils.parsers.serializer.XmlEntitySerializer.writeEntity(XmlEntitySerializer.java:189) at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest.testCsrIsGeneratedAndThenSerialized(ClientCertificateRequestTest.java:31) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1574) .
Après quelques recherche, il se trouve que le soucis est que la librairy soit chargé deux fois durant la construction du fichier .dex ... ce qui m'avance pas énormément...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 W/dalvikvm(14239): Class resolved by unexpected DEX: Lcom/toto/mvp/mmp/services/clientcert/ClientCertificateRequest;(0x414dfce0):0x1b3468 ref [Lorg/spongycastle/jce/X509Principal;] Lorg/spongycastle/jce/X509Principal;(0x414dfce0):0xd22f0 W/dalvikvm(14239): (Lcom/toto/mvp/mmp/services/clientcert/ClientCertificateRequest; had used a different Lorg/spongycastle/jce/X509Principal; during pre-verification) I/TestRunner(14239): failed: testCsrIsGeneratedAndThenSerialized(com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest) I/TestRunner(14239): ----- begin exception ----- I/TestRunner(14239): I/TestRunner(14239): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation I/TestRunner(14239): at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.constructCsr(ClientCertificateRequest.java:92) I/TestRunner(14239): at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.writeTo(ClientCertificateRequest.java:61) I/TestRunner(14239): at com.toto.mvp.mmp.services.utils.parsers.serializer.XmlEntitySerializer.writeEntity(XmlEntitySerializer.java:189) I/TestRunner(14239): at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest.testCsrIsGeneratedAndThenSerialized(ClientCertificateRequestTest.java:31) I/TestRunner(14239): at java.lang.reflect.Method.invokeNative(Native Method) I/TestRunner(14239): at java.lang.reflect.Method.invoke(Method.java:511) I/TestRunner(14239): at junit.framework.TestCase.runTest(TestCase.java:154) I/TestRunner(14239): at junit.framework.TestCase.runBare(TestCase.java:127) I/TestRunner(14239): at junit.framework.TestResult$1.protect(TestResult.java:106) I/TestRunner(14239): at junit.framework.TestResult.runProtected(TestResult.java:124) I/TestRunner(14239): at junit.framework.TestResult.run(TestResult.java:109) I/TestRunner(14239): at junit.framework.TestCase.run(TestCase.java:118) I/TestRunner(14239): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) I/TestRunner(14239): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) I/TestRunner(14239): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537) I/TestRunner(14239): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1574) I/TestRunner(14239): ----- end exception -----
Certain se demanderont peut etre pourquoi j'utilise pas bouncycastle qui est nativement intégré dans android. Tout simplement parce que j'ai le meme probleme avec bouncycastle et je pensai le regler avec spongycastle mais en vain... lol
Avez vous des pistes ou bien encore mieux une solution à m'apporter ?
Je vous remercie d'avance !
Partager