Wenn ich versuche, auf eine rohe Ressource zuzugreifen, erhalte ich einen Fehler android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060000
.
Die Ressource ist ein .bks-Zertifikat, das für die Servervalidierung verwendet wird. Es ist im Ordner res/raw
gespeichert.
Die peinlichste Sache ist, dass, wenn ich das Zertifikat (und die Validierungsarchitektur) in ein neues Projekt (das ich gebaut habe, nur um dies zu testen), es funktionierte!
Ich benutze nenick custom runner, so dass Robolectric die Ordner für Manifest, Res und Assets korrekt finden kann. Wenn ich in den Ordner intermediates/res/debug gehe, sind alle Ressourcen da. Ich habe keine Aromen im Projekt (Das Projekt verwendet, habe ich entfernt. Vielleicht ist das das Problem?)
Ich benutze com.android.tools.build:gradle:1.2.2
. buildToolsVersion '22.0.1'
. ich eine Menge von Abhängigkeiten auf das Projekt haben :(
Auch ich bin testCompile 'org.robolectric:robolectric:3.0-rc2'
und testCompile 'org.robolectric:shadows-support-v4:3.0-rc2'
Die Stacktrace mit:
android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060000
at org.robolectric.shadows.ShadowResources.getResName(ShadowResources.java:346)
at org.robolectric.shadows.ShadowResources.openRawResource(ShadowResources.java:385)
at android.content.res.Resources.openRawResource(Resources.java)
at com.xxx.xxx.xxx.ssl.CertificateHelper.loadKeyStoreFromRaw(CertificateHelper.java:145)
at com.xxx.xxx.xxx.xxx.XXX.createSSLSocketFactory(XXX.java:432)
at com.xxx.xxx.xxx.xxx.xxx.XXX.<init>(XXX.java:92)
at com.xxx.xxx.xxx.xxx.xxx.XXX.initiate(XXX.java:73)
at com.xxx.xxx.xxx.MainApplication.onCreate(MainApplication.java:60)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:131)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:431)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:224)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:168)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
java.lang.RuntimeException: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060000
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:228)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:168)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060000
at org.robolectric.shadows.ShadowResources.getResName(ShadowResources.java:346)
at org.robolectric.shadows.ShadowResources.openRawResource(ShadowResources.java:385)
at android.content.res.Resources.openRawResource(Resources.java)
at com.xxx.xxx.xxx.xxx.CertificateHelper.loadKeyStoreFromRaw(CertificateHelper.java:145)
at com.xxx.xxx.xxx.xxx.XXX.createSSLSocketFactory(XXX.java:432)
at xxx.xxx.xxx.xxx.xxx.xxx.XXX.<init>(TrafficManagerImpl.java:92)
at xxx.xxx.xxx.xxx.xxx.xxx.XXX.initiate(XXX.java:73)
at com.xxx.xxx.xxx.MainApplication.onCreate(MainApplication.java:60)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:131)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:431)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:224)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:168)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
... 1 more
Sorry für die „xxx“ auf der Verpackung/Klassennamen, aber ich besitze nicht den Code.
Edit 1 den Code
der Code hinzufügen, die amausgeführt wird immerder Anwendung ist:
InputStream is = resources.openRawResource(keystoreId);
Die Variable a keystoreId
R.raw.keystore
ist.
Weiß jemand, was könnte dies verursachen?
Edit 2, um mehr Informationen anbietest
Eine zusätzliche Informationen: Ich habe eine andere Anwendungs-ID auf dem build.gradle des Moduls und auf der AndroidManifest. Auch wenn ich das Projekt geändert, um sie das gleiche zu machen sein, haben die Dinge nicht und der Fehler existiert noch :(
bearbeiten 3: Android Studio Update
Mit dem letzten Android Studio-Update, das Test fing an, in der Lage zu sein, die Ressourcen zu finden! Außer für die im rohen Ordner :( Ich löse es, indem ich eine große hässliche if
in meinen Code, aber da dies keine Lösung für meine Frage ist, werde ich nicht schließen Sie es ...
Wo ist Ihr Code? –
"frisches Projekt (das ich nur gebaut habe, um dies zu testen), es hat funktioniert!" Schwer zu helfen, wenn alle arbeiten außer dem Code, den wir nicht haben. Wäre toll, wenn Sie den Unterschied finden. – nenick
Ja, leider, da der Code nicht "mein" ist, kann ich es nicht offen legen :(Ich habe hier gepostet, um zu sehen, ob jemand das gleiche Problem hat. Um die Sache noch schlimmer zu machen, ist das Projekt groß, also kann der Fehler überall sein.Trotzdem finde ich es ziemlich peinlich, dass es dazu kommt. Ich werde ein bisschen mehr debuggen und sehen, ob ich etwas Neues bemerke ... – jademcosta