2010-07-28 108 views
2

我試圖反向移植一個Android 1.6+應用到Android 1.5。NotFoundException和FileNotFoundException異常在Android 1.5上運行應用程序時

繼建議位置:

...我也做了以下內容:

  1. 修改AndroidManifest.xml中來的minSdkVersion設爲3
  2. 移動我的所有文件,在繪製-MDPI以前/以繪製/
  3. 重命名繪製,華電國際/以繪製-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()期間中斷下一個和後續圖形。

回答

4

成功!

的問題是我在繪製-HDPI-V4 /一個foo.png資源,這是不存在的繪製/目錄。當我從佈局文件引用R.drawable.foo時,1.5模擬器因此無法爲該id找到合適的資源。是什麼讓追蹤變得如此困難,是因爲在引用foo.png時這個錯誤並沒有立即發生,而是在所引用的下一個資源bg.png上拋出了錯誤。谷歌已經證實這是一個錯誤。

將foo.png的mdpi版本添加到drawable /目錄解決了問題。

+6

哇,這只是在5個月後再次咬住我。 Stackoverflow ftw。 – emmby 2011-02-04 21:01:47

0

我幾天前面臨同樣的問題。我發現的唯一解決方案是從頭開始創建一個新項目,併爲它們添加源文件和res文件。這肯定會解決這個問題。

+0

嗯,我只是試過了,它似乎沒有任何區別 – emmby 2010-07-29 15:09:45

0

如果您使用Android 1.6將minSDKVesrion設置爲3來構建項目,則只能創建3個文件夾drawable-hdpi,drawable-mdpi,drawable-ldpi。我在我的項目中重新創建了您的問題,並且當我更改Res文件夾結構時,它開始正常工作。你一定能試試看(有一個Android 1.5的問題,你知道的。許多1.5 MDPI設備從繪製,LDPI夾中選取資源。)

+0

嗨Amit,1.5模擬器根本無法識別drawable-mdpi目錄。如果我將drawable /資源移動到drawable-mdpi /,則無法找到它們中的任何一個(包括應用程序圖標)。如果我把它們放在可繪製的/中,它至少會找到應用程序圖標(雖然由於某種原因不是bg.png) – emmby 2010-07-30 13:49:12

相關問題