我試圖反向移植一個Android 1.6+應用到Android 1.5。NotFoundException和FileNotFoundException異常在Android 1.5上運行應用程序時
繼建議位置:
- http://comments.gmane.org/gmane.comp.handhelds.android.devel/97051
- http://groups.google.com/group/android-developers/browse_thread/thread/ff22f6e42a4a46d2/4201a20aaa23069d
- Android 2.2 SDK breaks compatibility with older phones
- https://developer.android.com/guide/topics/resources/providing-resources.html#ScreenCompatibility
...我也做了以下內容:
- 修改AndroidManifest.xml中來的minSdkVersion設爲3
- 移動我的所有文件,在繪製-MDPI以前/以繪製/
- 重命名繪製,華電國際/以繪製-HDPI-V4/
在我看來,這應該保證1.5設備在繪製使用文件/ 1.6的同時,後來器件繪製使用的文件/文件和繪製-HDPI-V4 /合適。 drawable /和drawable-hdpi-v4 /目錄是我的res文件夾中唯一的可繪製目錄。
但是,我編譯後,安裝,並在1.5模擬器運行生成的二進制文件,我得到以下錯誤:
E/AndroidRuntime(1096): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(1096): at android.widget.ImageView.<init>(ImageView.java:103)
E/AndroidRuntime(1096): at java.lang.reflect.Constructor.constructNative(Native Method)
E/AndroidRuntime(1096): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
E/AndroidRuntime(1096): at android.view.LayoutInflater.createView(LayoutInflater.java:499)
E/AndroidRuntime(1096): ... 26 more
E/AndroidRuntime(1096): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/bg.png from drawable resource ID #0x7f02002e
E/AndroidRuntime(1096): at android.content.res.Resources.loadDrawable(Resources.java:1641)
E/AndroidRuntime(1096): at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
E/AndroidRuntime(1096): at android.widget.ImageView.<init>(ImageView.java:113)
E/AndroidRuntime(1096): ... 30 more
E/AndroidRuntime(1096): Caused by: java.io.FileNotFoundException: res/drawable/bg.png
E/AndroidRuntime(1096): at android.content.res.AssetManager.openNonAssetNative(Native Method)
E/AndroidRuntime(1096): at android.content.res.AssetManager.openNonAsset(AssetManager.java:392)
E/AndroidRuntime(1096): at android.content.res.Resources.loadDrawable(Resources.java:1634)
E/AndroidRuntime(1096): ... 32 more
的原因,我不明白,1.5設備都無法看到bg.png圖像文件,其中的一個版本位於drawable /和drawable-hdpi-v4 /目錄中。
運行相同的二進制1.6上正常工作。
不是1.5的設備爲什麼會看到我的RES /繪製/ bg.png圖像與此設置?
更新:如Providing screen resource compatibility for Android 1.5中所述,我使用Android SDK r6並將我的mdpi資源放在drawable /目錄中。另外,我已經驗證過這個問題並沒有與bg.png隔離。如果我在xml中刪除對斷開的drawable的引用,則應用程序會在setContentView()期間中斷下一個和後續圖形。
哇,這只是在5個月後再次咬住我。 Stackoverflow ftw。 – emmby 2011-02-04 21:01:47