【问题标题】:Resource drawable not found but they exist in drawable folder未找到可绘制资源,但它们存在于可绘制文件夹中
【发布时间】:2019-01-01 15:49:56
【问题描述】:

我在一个 android 应用程序上工作了大约 2 个月。几乎每次我在尝试构建项目时创建自定义可绘制对象时,都会出现 Android 资源链接失败错误,然后是 android studio 无法找到的可绘制对象的名称。

我的解决方案是,我将这些可绘制对象移出项目的某个位置,并在出现错误后重建应用程序,我将可绘制对象再次移回我的项目,当我重建 APK 时不再出现错误,我可以构建,运行,甚至生成 APK 并且这些可绘制对象工作得非常好。但是现在我的项目完成了,我想生成签名的 apk,但是我无法摆脱 Android 资源链接失败的错误。 我在下面放了一些可绘制的代码。

retry_btn.xml:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/register_btn_disabled"/>
    <item android:state_pressed="true" android:drawable="@drawable/register_btn_clicked"/>
    <item android:state_pressed="false" android:drawable="@drawable/register_btn_normal"/>
    <item android:drawable="@drawable/register_btn_normal"/>
</selector>

story_box.xml:

<?xml version="1.0" encoding="utf-8"?>
    <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="#70707070" android:width="1dp"/>
</shape>

table_border.xml:

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item>
            <shape
        android:shape="rectangle">
                <stroke android:width="1dp" android:color="#333333" />
                <solid android:color="#EEEEEE" />
        </shape>
    </item>
</layer-list>

我的项目中的所有可绘制对象都可用,但是当我尝试生成签名的 apk 时得到此输出:

Android 资源链接失败

输出:C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_main.xml:51:错误:资源可绘制/搜索(又名 uk.MyAppName.www.MyAppName:drawable/搜索)未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_movie.xml:234: 错误:资源 drawable/story_box (aka uk.MyAppName.www.MyAppName:drawable/story_box) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_no_internet.xml:49: 错误:资源 drawable/retry_btn (aka uk.MyAppName.www.MyAppName:drawable/retry_btn) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_register.xml:205:错误:找不到资源 drawable/register_btn(又名 uk.MyAppName.www.MyAppName:drawable/register_btn)。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_register.xml:215:错误:找不到资源 drawable/register_btn(又名 uk.MyAppName.www.MyAppName:drawable/register_btn)。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_search.xml:39:错误:找不到资源可绘制/搜索(又名 uk.MyAppName.www.MyAppName:drawable/search)。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\search_table_item.xml:2: 错误:资源 drawable/table_border (aka uk.MyAppName.www.MyAppName:drawable/table_border) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\table_item.xml:2: 错误:资源 drawable/table_border (aka uk.MyAppName.www.MyAppName:drawable/table_border) 未找到。
错误:链接文件资源失败。

命令:C:\Users\MyUser.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\ac5e520165d725772f5386c054776ce5\aapt2-3.2.1-4818971-windows\aapt2。 exe链接-I\
C:\Users\MyUser\AppData\Local\Android\Sdk\platforms\android-28\android.jar\
--清单\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\merged_manifests\release\processReleaseManifest\merged\AndroidManifest.xml\
-o\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\processed_res\release\processReleaseResources\out\resources-release.ap_\
-R\
@C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\incremental\processReleaseResources\resources-list-for-resources-release.ap_.txt\
--auto-add-overlay\
--java\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\generated\not_namespaced_r_class_sources\release\processReleaseResources\r\
--proguard\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\proguard-rules\release\aapt_rules.txt\
--自定义包\
uk.MyAppName.www.MyAppName\
-0\
APK\
--输出文本符号\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\symbols\release\R.txt\
--no-version-vectors
守护进程:AAPT2 aapt2-3.2.1-4818971-windows 守护进程#0

这是我的 gradle 文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "uk.MyAppName.www.MyAppName"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
//            minifyEnabled false
//            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:exifinterface:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'org.jetbrains.anko:anko-commons:0.10.4'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.google.android.exoplayer:exoplayer:2.9.1'
}

【问题讨论】:

    标签: android xml aapt


    【解决方案1】:

    对于所有面临这个问题的人,只需将您的可绘制文件夹更改为 drawable-v(您的 sdk 版本)希望这个答案可以解决您的问题。或者添加另一个具有提到的名称的可绘制目录,然后简单地将您的可绘制文件复制到那里。

    【讨论】:

      【解决方案2】:

      在某些情况下,它与重命名可绘制对象无关。

      重新检查您处理的最后一个 drawable/xml 文件,这很可能是罪魁祸首。

      我错误地在顶部有 2 个根标签 &lt;?xml version="1.0" encoding="utf-8"?&gt;

      【讨论】:

      • 我也发生了完全相同的事情。
      【解决方案3】:

      这看起来像我遇到的类似错误

      使用Analyse -&gt; inspect code ... 工具在日志中显示错误

      drawable not found

      请在此处查看完整的解释

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题。只需使用您的 sdk 版本(例如 (drawable-24))创建一个新的可绘制文件夹,然后将您的可绘制文件粘贴到那里并重新构建项目。

        【讨论】:

          【解决方案5】:

          在我的 xml 中,它使用 "@android:drawable/" 而不是 "@drawable/"。更改为 "@drawable/" 允许 Android Studio 找到我的文件。

          【讨论】:

          • 这是一个非常令人沮丧的问题。其他解决方案均无效。非常感谢!
          【解决方案6】:

          如果您在 gradle 文件中使用它,请删除 shrinkResources。启用 proguard 时也会发生这种情况

          【讨论】:

          • shrinkResources 未使用...注释 gradle 文件中的 proguard 无法正常工作...我可以生成正常的 apk,但无法生成签名的 apk。
          • 给你。已添加 Gradle 文件
          【解决方案7】:

          如果您正在构建应用程序的版本,请确保res 文件not found 不在debug 文件夹中,您可以按照Project 打开文件来检查它查看而不是Android 查看

          【讨论】:

            【解决方案8】:

            查找你的gradel文件并确保应用程序id与package属性中mainfest文件的包相同

            【讨论】:

            • 检查并纠正,但不幸的是没有帮助
            【解决方案9】:

            对我来说遇到类似问题的方法是删除对可绘制对象 ID 的引用,然后使用 Android Studio 的自动完成功能来恢复它。

            【讨论】:

              【解决方案10】:

              对我来说,从 android 库插入新的图像矢量资产时会出现问题。

              这是我文件夹中已有的一项资产:一个保存图标,因此我以不同的方式命名它。

              我习惯了所有资产都有标准值,所以我将 ctrl + C, ctrl + V 这些值放到新创建的资产上,它们只包括颜色和大小,如下所示:

              xmlns:android="http://schemas.android.com/apk/res/android"
              android:width="24dp"
              android:height="24dp"
              android:tint="#718792"
              android:viewportWidth="24.0"
              android:viewportHeight="24.0"
              

              我总是保持原样。

              删除此资产后一切恢复正常。

              举个例子,如果不测试插入的每一行,就永远不应该全速编写代码(很像巴甫洛夫对 AutoCad 中 ctrl+G 的响应,对于那些知道它的人来说),...我什至不夸大其词。

              【讨论】:

                【解决方案11】:

                我可能有一些对我有用的可能原因。 1.-> &lt;?xml version="1.0" encoding="utf-8"?&gt; 你可能已经写过两次了。这不是我的情况。 2.-> 我在 drawable-v24 中复制了同一个文件,它对我有用。

                【讨论】:

                  【解决方案12】:

                  只需将项目结构从 app 更改为 project_files,然后转到您创建不可见文件的可绘制文件夹并删除该问题即可解决:)

                  【讨论】:

                  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                  【解决方案13】:

                  仅适用于 React Native

                  我错误地将启动屏幕文件夹放在了错误的文件夹中。

                  错误的路径

                  /android/app/src/main/res/drawable
                  

                  正确的路径

                  /android/app/src/main/res
                  

                  另外,我需要在所有带有 lauch_screen.png 文件的文件夹下

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-11-23
                    • 2020-02-12
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-05-10
                    • 1970-01-01
                    相关资源
                    最近更新 更多