最近使用Android Studio开发一个新项目,刚做完几个界面,跑在android 5.0上面很正常,因为都是挺简单的布局,本以为应该不存在兼容性问题(Flag啊)。
偶然用了一个4.x的实机测试,发现杯具了,直接报错退出了,发现log里面打出这么一句:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
难以理解啊,没办法一步一步调试吧。
顺便说一下调试要注意的问题,如果compileSdkVersion与实际出错的android版本不符合,是没法设置断点的。
改为一致之后,一步一步看,最后发现问题出在一个drawable xml文件上,之前是这么写的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="0.5dp"
android:color="?colorPrimary" />
</shape>
也是摸不着头脑,很正常啊。尝试一下吧?colorPrimary改成直接的color引用试一试吧。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="0.5dp"
android:color="@color/carnation" />
</shape>
一运行,果然成功了。
看起来像是android4.x系统上因为某种原因,无法在drawable xml文件里面使用attr属性,5.x上没有这个问题。
希望对遇到类似
can't convert xxx type=0x00
问题的朋友有所启发和帮助。
如果有人能够告诉我具体原因,我也会十分感谢(果然android兼容是个大坑啊!