当使用支持库 v23.1.1 插件并在 Android 4.4.4 (API 19) 上运行时,该应用程序正常工作。
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
然而,当我使用Android支持库的新版本(23.2)构建它时,应用程序会崩溃:
XmlPullParserException:Binary XML file line#17:无效的可绘制标签向量
这发生在应用程序希望填充具有简单自定义视图的警报对话框时。自定义视图使用包含<shape>
标记作为其可绘制之一的XML文件。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid
android:color="@android:color/white" >
</solid>
<corners
android:radius="5dp">
</corners>
<stroke android:width="1dp" android:color="@color/AppColor" />
</shape>
虽然我在崩溃日志中无法具体确定这个基于SVG的可绘制对象,但我的猜测是自从Google引入了支持VectorDrawables
,它与我的应用程序发生了某种冲突。
如有任何提示或建议,敬请提出。
<shape>
可绘图形的 .png 文件,而这是完全可行的。但是新版本的支持库却创建了svg
文件,并在其中包含了vector
标签,某种程度上导致 API 19 无法处理它。我甚至尝试了他们建议的打开和关闭 png 创建功能vectorDrawables.useSupportLibrary = true
,但这并没有帮助到我。 - listbossandroid {
defaultConfig {
generatedDensities = []
} // This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}http://android-developers.blogspot.ru/2016/02/android-support-library-232.html - Pavel Biryukov