2015-05-05 20 views
9

Khi tôi cố gắng truy cập vào tài nguyên thô, tôi nhận được lỗi android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f060000.

Tài nguyên là chứng chỉ .bks, được sử dụng để xác thực máy chủ. Nó được lưu trữ trên thư mục res/raw.

Điều khó xử nhất là khi tôi sao chép chứng chỉ (và kiến ​​trúc xác nhận) vào một dự án mới (mà tôi đã xây dựng chỉ để kiểm tra điều này), nó đã hoạt động!

Tôi đang sử dụng số custom runner của nenick, vì vậy Robolectric có thể tìm thấy chính xác các thư mục cho tệp kê khai, định dạng và nội dung. Khi tôi đi đến thư mục trung gian/res/debug tất cả các nguồn tài nguyên có. Tôi không có hương vị trong dự án (Dự án từng có, tôi đã loại bỏ chúng. Có lẽ đây là vấn đề?)

Tôi đang sử dụng com.android.tools.build:gradle:1.2.2. buildToolsVersion '22.0.1'. Tôi có rất nhiều phụ thuộc vào dự án :(

Ngoài ra, tôi đang sử dụng testCompile 'org.robolectric:robolectric:3.0-rc2'testCompile 'org.robolectric:shadows-support-v4:3.0-rc2' Các stacktrace:

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 

Xin lỗi vì sự "xxx" trên tên gói/lớp, nhưng tôi không sở hữu mã.

Sửa từ 1 tới thêm mã

các mã được nhận được thực hiện tại onCreate của ứng dụng là:

InputStream is = resources.openRawResource(keystoreId);

Biến keystoreId là một R.raw.keystore.

Có ai biết điều gì có thể gây ra điều này không?

Chỉnh sửa 2 đến provid biết thêm

Một thông tin thêm: Tôi có một ID ứng dụng khác nhau trên build.gradle của các mô-đun và trên AndroidManifest. Ngay cả khi tôi đã thay đổi dự án để làm cho họ được như vậy, mọi thứ đã không làm việc và lỗi vẫn tồn tại :(

Sửa 3: Android Studio cập nhật

Với bản cập nhật Android studio cuối cùng, kiểm tra Ngoại trừ những cái trong thư mục thô :( Tôi đang giải quyết nó bằng cách đặt một số lớn xấu xí if trong mã của tôi, nhưng vì đây không phải là giải pháp cho câu hỏi của tôi, tôi sẽ không đóng nó ...

+0

Mã của bạn ở đâu? –

+0

"dự án mới (mà tôi đã xây dựng chỉ để kiểm tra điều này), nó đã hoạt động!" Khó để giúp đỡ khi tất cả các công việc ngoại trừ mã chúng tôi không có. Sẽ là tuyệt vời nếu bạn tìm thấy sự khác biệt. – nenick

+0

Vâng, thật không may, vì mã không phải là "của tôi", tôi không thể tiết lộ nó: (Tôi đã đăng ở đây để xem có ai đó có cùng vấn đề không. Để làm mọi thứ tồi tệ hơn, dự án lớn, vì vậy lỗi có thể ở bất kỳ đâu.Tuy nhiên, tôi nghĩ khá lúng túng khi nó xảy ra. Tôi sẽ gỡ lỗi thêm một chút để xem liệu tôi có nhận thấy điều gì đó mới hay không ... – jademcosta

Trả lời

2

Tôi hy vọng Nenick sẽ sửa câu trả lời này nếu nó sai, nhưng bạn không cần người chạy tùy chỉnh của mình với thiết lập của bạn.Bạn có thể sử dụng RobolectricGradleTestRunner thay thế.

+0

Á hậu tùy chỉnh là không cần thiết. Nhưng hữu ích nếu bạn là người dùng Mac. Một ngoại lệ là nếu bạn có một mô-đun thư viện bởi vì rc2 robolectric có một vấn đề đường dẫn ở đó nhưng được cố định với phiên bản ảnh chụp nhanh. – nenick

+2

Tôi gặp vấn đề tương tự và tôi đã thử 'RobolectricGradleTestRunner', nhưng bây giờ tôi nhận được lỗi này:' java.lang.RuntimeException: Không có trường 'hằng số' trong chú thích @Config! \t tại org.robolectric.RobolectricGradleTestRunner.getAppManifest (RobolectricGradleTestRunner.java:30) '. Tui bỏ lỡ điều gì vậy? – sak

+0

Tôi đang sử dụng máy Mac. Làm thế nào tôi có thể loại bỏ các Á hậu tùy chỉnh để xem nếu nó sửa chữa vấn đề? – jademcosta

Các vấn đề liên quan