【发布时间】:2016-02-25 07:25:17
【问题描述】:
当使用支持库 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 支持库的 newer version (23.2) 构建它时,它会崩溃:
XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
当应用想要使用简单的自定义视图填充警报对话框时会发生这种情况。自定义视图使用包含 <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>drawables 创建了 .png 文件,它工作正常,但新的支持库创建了svg具有vector标记的文件,API 19 无法处理它。我什至尝试按照他们的建议打开和关闭 png 创建vectorDrawables.useSupportLibrary = true但这没有帮助。 -
你会注意到这个新属性只存在于 Gradle 插件的 2.0 版本中。如果您使用的是 Gradle 1.5,您将改为使用 // Gradle Plugin 1.5 android { defaultConfig { generatedDensities = [] } // 这是由 2.0+ Gradle 插件处理的 aaptOptions { additionalParameters "--no-version-vectors" } } android-developers.blogspot.ru/2016/02/…
-
您将 SVG 放在哪个目录中?
标签: android svg custom-controls android-support-library