49

最近升级了我的 android studio 后,我无法再构建我的项目了。

每次执行构建时,都会遇到以下错误:

error: resource drawable/splash_screen (aka com.whereisthemonkey.nowalism:drawable/splash_screen) not found.
Message{kind=ERROR, text=error: resource drawable/splash_screen (aka com.whereisthemonkey.nowalism:drawable/splash_screen) not found., sources=[C:\Users\Lucas\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.1.1.aar\cf575568f869a44c685b16e47de83a28\res\values\values.xml:1632:5-84], original message=, tool name=Optional.of(AAPT)}

即使文件 splash_screen.xml 存在于可绘制文件夹下,此错误仍然存​​在。

重建、清理项目和使缓存无效都不起作用!

添加行 android.enableAapt2=false 并不能解决真正的问题,因此我宁愿找到问题的根源。

下面显示了我的 gradle.build 文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'//https://github.com/bumptech/glide/issues/1939

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.whereisthemonkey.nowalism"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    // Keep the following configuration in order to target Java 8.
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            res.srcDirs += [
                    'src/main/res-backgrounds',
                    'src/main/res-jobs',
            ]
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'

    //Do not update due to dex error
    implementation 'org.apache.commons:commons-lang3:3.6'

    //Do not update due to dex error
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.google.android.gms:play-services:11.8.0'

    implementation 'com.aurelhubert:ahbottomnavigation:2.1.0'
    implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
    implementation 'com.afollestad.material-dialogs:commons:0.9.6.0'

    implementation 'com.amitshekhar.android:android-networking:1.0.1'
    implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'

    implementation 'com.github.ome450901:SimpleRatingBar:1.4.1'

    implementation 'com.sothree.slidinguppanel:library:3.4.0'

    implementation 'com.github.esafirm.android-image-picker:imagepicker:1.12.0'
    //Do not update due to dex error
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.5.1'

    implementation 'com.github.bumptech.glide:glide:4.6.1'
    kapt 'com.github.bumptech.glide:compiler:4.6.1'//https://github.com/bumptech/glide/issues/1939

    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

    implementation 'de.hdodenhof:circleimageview:2.2.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    implementation 'com.firebaseui:firebase-ui-auth:3.2.1'
    implementation 'com.android.support:support-v4:27.1.1'
}


apply plugin: 'com.google.gms.google-services'

任何帮助都将不胜感激。

4

22 回答 22

128

在我的例子中,它是一个 xml 选择器。在第一行中,我有两个(感谢在我的文件中复制粘贴):

<?xml version="1.0" encoding="utf-8"?>

并且 Android Studio 没有给出任何警告之类的。删除它解决了问题,但之后需要一个完整的干净构建。

于 2018-12-30T12:05:20.993 回答
36

我修复了错误,它可能来自格式错误的复制 XML 文件(可能是一些行尾混淆)

重写这些修复了错误,尽管 Android Studio 显示了另一个文件作为问题的根源,这实际上与错误本身无关。

于 2018-04-22T14:10:54.180 回答
8

在我的情况下,我删除了重复的命名空间声明xmlns:android="http://schemas.android.com/apk/res/android"
,并使用了分析->检查代码工具在日志中显示错误,然后我解决了可绘制资源中其他文件 xml 中的错误。

于 2019-09-22T20:51:57.333 回答
6

我遇到了同样的问题,最后解决了这个问题

分析>检查代码

我的应用程序在其中一个 XML 文件中缺少结束标记 Just Try Analyze > Inspect Code它会将您重定向到确切的错误。

于 2021-03-21T12:12:07.450 回答
4

就我而言,我喜欢这样: <?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>

所以我只删除其中一个

于 2020-11-17T10:07:00.517 回答
3

检查您的每一个 XML,也许您会发现以下情况。

  • 在处理其他项目的代码或文件时,您可能忘记添加一些资源,例如可绘制对象、字符串。

  • 检查每个可绘制文件,当您打开该文件时, Android Studio可能会突出显示。

有时我们必须找到这种类型的错误,因为 Android Studio 卡住了错误。

于 2019-01-11T10:53:44.640 回答
3

我遇到了同样的问题,当我将可绘制文件中的图标添加到 24dp 时,我解决了这个问题。

复制您想要的任何图标并将其粘贴到可绘制文件中,它将创建(默认情况下)24dp 图标。

于 2019-10-04T12:39:29.590 回答
3

就我而言,它是重复的:

<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>

在可绘制的资源文件中

于 2021-09-03T08:14:02.400 回答
1

在我的情况下,它是格式错误的 splash_screen.xml ,它是“还原提交”的一部分,它实际上删除了这个文件,但不知何故它仍然可能是在活动的更改列表中。

修复了该文件并解决了问题。

于 2018-08-03T11:17:44.860 回答
1

就我而言,它是一个可绘制资源文件,需要更高的 API 版本,因为它是我在 build.gradle 中设置的 minSdkVersion。主要问题是文件在您打开它之前没有显示任何错误,因此很难找到它。我花了至少 4 个小时尝试其他事情,因为在构建项目时出现错误,它显示了其他完全没有任何问题的可绘制资源文件。删除需要更高 API 的可绘制对象后,应用程序正常构建。

于 2018-09-21T12:31:04.547 回答
1

就我而言,问题是代码冲突,其他人与我更改了同一个文件。资源代码已更改。当我修复文件时,问题就消失了。

于 2020-09-21T03:49:26.167 回答
1

在我的情况下:有一个我没有在可绘制文件中创建的文件,这个文件是空的,我只是删除了它,程序开始了

于 2020-12-19T09:36:11.033 回答
1

如果您来到这里但没有得到答案,那么您可能需要使用mipmap. 它用于查找与目标设备 dpi 相关的资产(如:mdpi、hdpi、xhdpi、...)。

因此,您需要做的就是从而mipmap不是处理资产drawable

android:resource="@mipmap/splash_screen"

打开你的AndroidManifest.xml和你用过的地方drawable把它改成mipmap. 这是一些例子:

在此处输入图像描述

于 2021-05-01T19:30:38.087 回答
0

我在构建我的应用程序的发布版本时遇到了同样的问题,问题是我在目录中有res我的项目的一些重要文件,debug而不是在release目录中,所以我通过移动debug里面的文件来解决问题release你可以通过查看您的项目树来检查它project而不是android

于 2019-10-18T11:05:59.410 回答
0

在复制和粘贴代码的同时,我还粘贴了以下行

<?xml version="1.0" encoding="utf-8"?>

因为,我的 xml 文件已经包含上面的行,并且在添加这一行时它出现了两次。

所以我删除了其中一行,它解决了我的错误

于 2020-04-26T02:51:24.750 回答
0

android:color/splash_bg就我而言,我使用了对 android 资源文件的错误引用,即 @color/splash_bg

其中splash_bg代表我在 res/values/colors.xml 文件中声明的自定义颜色资源。

于 2020-05-05T17:31:43.143 回答
0

 就我而言,尽管错误最初指向 AndroidManifest.xml,但我不得不从 splash_screen.xml 中删除android:src="@drawable/background"和行。android:src="@drawable/logo"

就像第一篇文章说的那样,确保<?xml version="1.0" encoding="utf-8"?>所有 xml 文件都是正确的。

于 2020-08-29T04:08:03.710 回答
0

就我而言,我删除了“drawable”文件夹

于 2020-10-06T23:16:23.457 回答
0

我在@Lucas Romier 也提到的错误(我认为)中没有提到的xml(矢量)文件之一中重新格式化了代码(因为我没有发现错误),但是文件名带有红色下划线,它建议然后清理构建,然后它就起作用了。:)

于 2021-04-20T15:14:57.887 回答
0

对我来说,问题是我拼错了,等的名字drawable-mdpidrawable-hdpi我把它们写成dawable-mdpi,等等)

于 2021-11-05T19:53:31.810 回答
-1

从另一个项目中复制“res”文件夹(res 文件夹在哪里 - android/app/src/main)粘贴您自己的项目。重新运行。

于 2021-10-08T11:57:57.333 回答
-1

复制drawable文件夹所有文件并粘贴drawable_v24文件夹你自己的项目。重新运行。我希望这是工作。

于 2021-10-14T08:53:30.760 回答