Android 未找到资源标识符

Android nor resource identifier found

您好,我正在尝试使用 Vector drawable 从 android 开发网站的示例 xml 中绘制指纹图标,但我收到一条错误消息,说它找不到任何设置的属性这个可绘制对象。

下面是代码:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="40.0dp"
        android:height="40.0dp"
        android:viewportWidth="40.0"
        android:viewportHeight="40.0">
    <path
        android:pathData="M20.0,20.0m-20.0,0.0a20.0,20.0 0.0,1.0 1.0,40.0 0.0a20.0,20.0 0.0,1.0 1.0,-40.0 0.0"
        android:fillColor="#009688"/>
    <path
        android:pathData="M11.2,21.41l1.63,-1.619999 4.17,4.169998 10.59,-10.589999 1.619999,1.63 -12.209999,12.209999z"
        android:fillColor="#FFFFFF"/>
</vector>

我的 Min 和 compiledSdk 设置为 19 :

我尝试执行 clean/rebuild:

时遇到的错误
Error:(17) No resource identifier found for attribute 'viewportWidth' in package 'android'
Error:(17) No resource identifier found for attribute 'viewportHeight' in package 'android'
Error:(22) No resource identifier found for attribute 'pathData' in package 'android'
Error:(22) No resource identifier found for attribute 'fillColor' in package 'android'
Error:(25) No resource identifier found for attribute 'pathData' in package 'android'
Error:(25) No resource identifier found for attribute 'fillColor' in package 'android'

矢量绘图在 API 级别 21 中可用,您不能在 API 19

中使用它们

http://developer.android.com/training/material/drawables.html

如其他人所述,这是因为 VectorDrawables 在 API 21 及更高版本中可用,但您使用的是 API 19。 目前没有对 21 之前的 API 级别的 VectorDrawables 的官方支持(好吧,有点,请参阅最后一段)。

据我所知,这是目前的情况。在早期 API 中有几个第三方库可用于使用向量:

  • Mr Vector - 他们声明现在不再维护,他们正在等待支持库的正式版本
  • vector-compat - 他们实际上并没有说不再维护,但最后一次更新是 7 个月前

但是,Android Studio 中对早期 API 的支持类型略有不同。这种方法不是在早期版本中使用实际的 VectorDrawables,而是会在您构建项目时生成 PNG 文件来替换 Vector 文件。为此,请确保您的 Gradle Plugin is up to date(1.5.0 或更高版本)。您可能还需要将编译 sdk 版本提高到 21 或更高版本。

下载aapt.exe 并将文件保存在 apktool.jarapktool.bat 文件所在的同一目录中。

使用命令 java -jar apktool.jar d -s your_apk_file.apk 进行反编译,使用 java -jar apktool.jar b folder_name 进行编译。这里folder_name为反编译后生成的文件夹名称