当采用高版本SDK开发的Android应用,更换成1.5的SDK后会出现如下错误,说是一些资源文件找不到。但这个资源文件又是你程序中从来没有用到的。
java.io.FileNotFoundException: res/drawable/title_bar_shadow.9.png
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/title_bar_shadow.9.png from drawable resource ID #0x7f020001
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class java.lang.reflect.Constructor
经查发现,是sdk1.5版本和高版本的sdk创建的工程的目录结构不同,高版本的考虑到不同分辨率,所以有drawable-ldpi, drawable-mdpi, drawable-hdpi。而sdk1.5及以下没有种结构。只的drawable一个文件夹。用SDK1.5有时可以编辑通过高版本sdk创建的应用工程,但在1.5的机器上运行时不能从指定的drawable中找到相关资源所以不能运行。
知道问题所在后解决就很容易了,在工程中加上drawable资源文件夹,将drawable-ldpi, drawable-mdpi, drawable-hdpi中的相应资源加入到drawable中,再次编译就可以运行了。
参考:http://codinganswers.info/index.php/2011/07/exception-while-running-my-app-targetsdk-2-2-api-level-8-running-on-1-5-api-level-3/