Android虚拟机调试android.view.InflateException: Binary XML file line #0: Error inflating class

前言

以往调试app都是在真机上调试,没有出现过问题。今天一时兴起,想在Genymotion虚拟机上调试安卓app,结果出现了意想不到的困难。换了好几个项目,结果都是 app可以安装,但无法运行,一点开app就闪退(已停止运行)。查看日志,有如下提示
在这里插入图片描述
android.view.InflateException: Binary XML file line #0: Error inflating class <unknown>
根据这个错误提示中的XML,我感觉是XML文件出了问题,于是百度搜索

部分参考资料如下:

1.检查 XML 代码是否有语法错误

如果XML代码有误,AS无法检测出来的时候,运行app时会出现错误

2.XML中自定义view的标签使用错误。标签的格式应该是 包名 + . + 类名

直接复制粘贴的代码容易出错,记得先检查类的全路径是否正确。

3.检查布局中 background 属性是否引用了不兼容 API level 的样式,通常在 4.4 系统容易遇到一些只兼容 21 不兼容 19 的样式问题

自行检查

4.检查资源文件是否引用错误

有时候在Android Studio中,虽然有出现资源文件的自动补全提示,但是运行却会出错,这种情况非常常见,因此可以考虑去除资源的引用后测试,例如去除background,color的引用,看看app还会不会出错。
在这里插入图片描述
资源文件引用十分容易引起错误,而且很难察觉。我的错误就是这样引起的

5.检查自定义view的构造函数是否定义

自定义view的三个构造函数都要写出

 View(Context context) //Simple constructor to use when creating a view from code 
 View(Context context, AttributeSet attrs) //Constructor that is called when inflating a view from XML 
 View(Context context, AttributeSet attrs, int defStyle) //Perform inflation from XML and apply a class-specific base style 

排错过程

1.虚拟机的问题

我新建了一个安卓app项目(HelloWorld),在虚拟机上运行正常,因此排除虚拟机的问题

2.XML代码的问题

经过仔细检查,并没有发现明显的错误

3.资源引用的问题

我的资源文件都是在Android Studio中直接粘贴至在这里插入图片描述

在真机中使用起来没有出现问题,但是在虚拟机中就出现了错误。

当我将资源文件从项目下的drawablev24文件夹拷贝至drawable文件夹的时候,问题解决!
在这里插入图片描述
(原本drawable文件夹中只有一个xml文件)
在这里插入图片描述

总结

在虚拟机中调试app程序时,可能需要手动将项目名\app\src\main\res\drawable-v24的drawable资源文件拷贝到项目名\app\src\main\res\drawable目录下,再重新编译项目,即可能解决问题,本人的问题到此解决,希望对大家也有点帮助

发布了19 篇原创文章 · 获赞 2 · 访问量 4180

猜你喜欢

转载自blog.csdn.net/c529283955/article/details/104171951
今日推荐