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'
và 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ó ...
Mã của bạn ở đâu? –
"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
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