2015-05-05 8 views
9

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 keystoreIdR.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 ...

+0

Wo ist Ihr Code? –

+0

"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

+0

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

Antwort

2

Ich hoffe, dass Nenick diese Antwort korrigieren wird, wenn es falsch ist, aber Sie brauchen nicht seinen benutzerdefinierten Läufer mit Ihrer Einrichtung. Sie könnenverwendenstattdessen.

+0

Benutzerdefinierte Läufer ist nicht erforderlich. Aber hilfreich, wenn Sie ein Mac-Benutzer sind. Eine Ausnahme ist, wenn Sie ein Bibliotheksmodul haben, da dort ein Pfadproblem auftritt, das aber mit der Snapshot-Version behoben wird. – nenick

+2

Ich habe das selbe Problem und habe 'RobolectricGradleTestRunner' versucht, aber jetzt bekomme ich diesen Fehler:' java.lang.RuntimeException: Kein 'constants' Feld in @Config Annotation! \t bei org.robolectric.RobolectricGradleTestRunner.getAppManifest (RobolectricGradleTestRunner.java30) '. Fehle ich etwas? – sak

+0

Ich bin auf einem Mac. Wie kann ich den benutzerdefinierten Runner entfernen, um zu sehen, ob er das Problem behebt? – jademcosta

Verwandte Themen