链接文件资源失败。 - 即使在尝试了其他人提供的所有可能解决方案后,我也会收到此错误

时间:2018-01-31 19:02:26

标签: android-resources android-studio-3.0

这是提供错误的java文件

package com.example.daksh.timetable;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button mon_but,tue_but,wed_but,thur_but,fri_but;
        mon_but = (Button)findViewById(R.id.mon);
        tue_but = (Button)findViewById(R.id.tue);
        wed_but = (Button)findViewById(R.id.wed);
        thur_but = (Button)findViewById(R.id.thur);
        fri_but = (Button)findViewById(R.id.fri);
        final ImageView main_Image = (ImageView) findViewById(R.id.day);
        final int[] dayarray = {R.drawable.monday,R.drawable.tuesday,R.drawable.wednesday,R.drawable.thursday, R.drawable.friday};

        mon_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                main_Image.setImageResource(dayarray[0]);
            }

        });
        tue_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                main_Image.setImageResource(dayarray[1]);
            }
        });
        wed_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                main_Image.setImageResource(dayarray[2]);
            }
        });
        thur_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                main_Image.setImageResource(dayarray[3]);
            }
        });
        fri_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                main_Image.setImageResource(dayarray[4]);
            }
       });
   }
}

我得到的错误如下

  

信息:Gradle任务[clean,:app:assembleDebug]   C:\项目\时间表\应用\ SRC \主\ RES \布局\ activity_main.xml中   错误:错误:资源android:attr / colorSwitchThumbNormal是私有的。   错误:资源android:attr / colorSwitchThumbNormal是私有的。   C:\项目\时间表\程序\ SRC \主\水库\布局,土地\ activity_main.xml中   错误:错误:资源android:attr / colorSwitchThumbNormal是私有的。   错误:资源android:attr / colorSwitchThumbNormal是私有的。   错误:链接文件资源失败。   错误:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息   错误:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息   错误:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息   错误:任务':app:processDebugResources'执行失败。   无法执行aapt   信息:9秒内失败   信息:9个错误   信息:0警告   信息:请参阅控制台中的完整输出

这是Activity_main.xml文件

    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/day"
        android:layout_width="0dp"
        android:layout_height="0dp"

        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:contentDescription="TODO"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintHorizontal_bias="0.519"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline2"
        app:layout_constraintVertical_bias="0.472"
        app:srcCompat="@drawable/monday" />

    <TextView
        android:id="@+id/textView"
        style="@style/Widget.AppCompat.TextView.SpinnerItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:fontFamily="serif"
        android:text="@string/message"
        android:textColor="?android:attr/colorSwitchThumbNormal"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/mon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="50dp"
        android:text="@string/monday"
        app:layout_constraintBottom_toTopOf="@+id/tue"
        app:layout_constraintStart_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/tue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="16dp"
        android:text="@string/tuesday"
        app:layout_constraintBottom_toTopOf="@+id/wed"
        app:layout_constraintStart_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintTop_toBottomOf="@id/mon" />

    <Button
        android:id="@+id/wed"
        android:layout_width="88dp"
        android:layout_height="48dp"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="16dp"
        android:text="@string/wednesday"
        app:layout_constraintBottom_toTopOf="@+id/thur"
        app:layout_constraintStart_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintTop_toBottomOf="@id/tue" />

    <Button
        android:id="@+id/thur"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="16dp"
        android:text="@string/thursday"
        app:layout_constraintBottom_toTopOf="@+id/fri"
        app:layout_constraintStart_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintTop_toBottomOf="@id/wed" />

    <Button
        android:id="@+id/fri"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginStart="16dp"
        android:text="@string/friday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline_dayselection"
        app:layout_constraintTop_toBottomOf="@id/thur" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline_dayselection"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_end="196dp" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.15339233" />


</android.support.constraint.ConstraintLayout>

26 个答案:

答案 0 :(得分:34)

您的java文件中可能存在此错误,因为存在一个或多个错误的XML文件。

浏览所有XML文件并解决错误,然后从构建菜单访问cleanrebuild项目

从您最近编辑的XML文件开始

答案 1 :(得分:19)

如果任何人阅读此书都遇到相同的问题,这是我最近发生的,这是由于xml标头被错误地写入了两次:

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?> <!-- Remove this one -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
     <solid android:color="@color/mug_blue"/>
     <corners android:radius="@dimen/featured_radius" />
</shape>

我遇到的错误与该文件完全无关,因此很难找到。只需确保所有新的xml文件都没有类似这样的错误(因为它不会显示为错误)。 编辑,现在看来它是一个错误,请确保检查您的错误日志。

答案 2 :(得分:11)

看看你得到的错误:

  

C:\ Projects \ TimeTable \ app \ src \ main \ res \ layout-land \ activity_main.xml错误:错误:资源android:attr / colorSwitchThumbNormal是私有的。

这意味着在您的activity_main.xml中引用了颜色“android:colorSwitchThumbNormal”,但在“android”命名空间内该资源是私有的。您可能想要做的是尝试从该属性的支持版本引用该颜色,因此没有“android:”前缀。

<item name="android:colorSwitchThumbNormal">@color/myColor</item>

替换为:

<item name="colorSwitchThumbNormal">@color/second</item>

答案 3 :(得分:5)

在Android Studio终端中运行./gradlew build -stacktrace。它可以帮助您找到导致此错误的文件。

答案 4 :(得分:4)

很明显,如果您有一个大项目,检查每个xml文件将是一场噩梦。

在android studio终端中运行以下命令,它将为您提供带有问题的文件名

gradlew build --stacktrace

enter image description here

答案 5 :(得分:3)

我在评论中已经提到的一种可能的解决方案:

  

我在XML文件中遇到一个IDE无法突出显示的问题。不得不问我   同事为我编译,它显示在他的IDE中。越野车Android   工作室。

但是我找到了解决方法。

如果转到右侧的Gradle面板。选择所需的模块,例如。 应用,然后在构建下选择 assembleDebug ,它将向您显示标准输出中的所有错误。

enter image description here

答案 6 :(得分:2)

这是您的xml文件的错误。 如果logcat无法使用带有xml文件名的友好日志消息查明错误,请尝试清理项目并重建项目。它对我有用。

在Build选项卡中,您将获得名为Android Issues的节点。错误信息在它下面。

答案 7 :(得分:2)

这是一个 xml错误 ,由于某些原因,可能是由于删除了另一个视图中的视图或字符串,或者可能是缺少了“或”。等等

但是在这里,我使用的是 好的技术 来找出问题出在哪里:-

  • 转到每个单个xml文件,并最小化根元素(如果您发现类似这样的内容) 因此您得到了错误所在,请修复该错误,然后对所有文件重复该过程。

  • 如果文件有错误,您将看到三个红色的点 enter image description here
  • 修复错误,这里我删除了这一行,因为此数组不再在字符串文件中。 enter image description here
  • 现在,如果仍然遇到主要错误,您将再看到此文件中没有错误,因此您必须对所有xml文件再次重复此过程,直到解决错误为止 enter image description here

我知道这不是解决主要问题的方法,但它可以使您快速找到错误的出处并节省时间。

更新

还有另一种方法可以轻松找到,就像Bennik2000在评论中写的那样,您可以在右侧滚动条中查看红线,它们还指示错误。

更新

我发现了一种非常简单的方法来获取错误的确切位置,无论该错误是在资源文件中还是在Java文件中。
1-转到项目窗口。
2-打开出现错误的文件。
3-单击F2转到出现的最近错误(它将转到正确的行)

enter image description here

答案 8 :(得分:2)

对于 @P Fuster 提供的答案更为通用。 您的xml文件中可能有错误。

我遇到了相同的错误,并且在缺少结束标记的drawable中出错。

答案 9 :(得分:1)

我遇到了这个问题。主要问题是我在BottomAppBar文件中的xml上添加了一个属性。我在android bottom build部分中发现错误消息,说明错误我替换了该属性,没关系。对于其他有相同错误但我的解决方案不满意的其他人,您必须阅读错误消息,它将引导您到达痛苦的地方。

答案 10 :(得分:1)

检查您的XML文件以解决错误。大多数情况下,对XML文件所做的更改都会受到影响。因此,请尝试检查您所做的最后更改。

尝试清理您的项目。...有效

快乐编码:)

答案 11 :(得分:0)

这对于正在寻找其他答案的人可能很有用。转到Gradle面板,然后选择您的模块->任务->验证->检查。这将检查项目是否有错误,并在发生错误的地方打印日志。在大多数情况下,这种错误必须是项目的XML文件中存在拼写错误

答案 12 :(得分:0)

我的错误在于xml可绘制文件中。我有第一个班轮副本。将其更改为此对我有用:

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

答案 13 :(得分:0)

我遇到了同样的问题,但是它出现在我的所有项目中,我尝试了Invalidate Cache / Restart,但即使它也不能解决问题。

最后,我意识到在我的Gradle Settings中启用了Offline Work

Build, Execution, Deployment中未选中的Gradle中转到Gradle Settings> Offline Work

enter image description here

它解决了为我的Android Studio下载一些配置文件的问题。

答案 14 :(得分:0)

错误很可能位于您的xml文件中,但是即使在逐个搜索每个文件后,我也无法找到它。

问题:

Android Studio将运行分析,并在布局看起来正确无误时进行绿色检查,如(右上角的绿色选中标记)

enter image description here

首选解决方案:

但是,在进一步检查xml的预览窗口时,有一个红色警报图标,它指示我正在寻找的错误:

enter image description here

答案 15 :(得分:0)

添加agian您已删除的可绘制图像.jpg / png等格式。 enter image description here和 然后运行您的项目以在android studio 3.6.1上正常工作

答案 16 :(得分:0)

我遇到了同样的问题。这是由于我的XML文件之一中的属性输入错误。无论如何,Android Studio在第一次运行时并未指定错误的来源。但是当我做了

  

构建->清理项目

然后再次运行该应用程序,它向我显示了错字所在的XML代码中的确切行。

我希望这可以对某人有所帮助。

答案 17 :(得分:0)

我知道这个问题已经得到解答,但是,我仍然想补充一下此处发表的很多内容,供其他人遇到类似但又不具体的问题。

有时也会由于“ Android资源链接失败”而出现此错误。有时是模糊的。解决方案有时可能很无聊且痛苦,但是,此错误绝对不严重。

在这种情况下,错误不是模糊的,因为Android Studio指向了问题文件。

一般原因 当Gradle在一个或多个XML文件中遇到错误(通常是语法或拼写错误)时,就会显示该错误。

大多数XML文件位于res文件夹中,但是,您仍然可能在res文件夹之外找到一些XML文件。例如,位于“ /src/main/AndroidManifest.xml”中的AndroidManifest.xml。这是一个布局文件示例,该文件会出现“错误:链接文件资源失败”错误。

解决方案 要解决此问题,您要做的就是浏览每个XML文件以找出错误可能在哪里。有时这可能很耗时,但是请放心,一旦发现并修复问题XML,该错误就会消失。

您可能很幸运,Android Studio会向您指出确切的方向,就像问题中提出的那样……

在其他情况下(例如,当您使用旧版本的Android Studio时),该错误并非如此。

以下是一些快速查找问题XML的提示 如果您有很多XML文件,并且一个接一个地浏览它们太困难了,则可以使用以下技巧来简化该过程:

撤消:大多数情况下,在经历此问题之前,您已经完成了一半的项目。意味着这是对您的XML文件之一的最新更改引起的。在这种情况下,您可以尝试撤消对XML文件的最新更改。要撤消,只需使用组合键:Ctrl + Z。

打开每个XML文件:第二种方法涉及简单地打开项目中的每个XML文件(不扫描)。这样做的原因是,有时,在打开有问题的XML文件后,Android Studio会检测到错误并在确切的行下划线。

答案 18 :(得分:0)

-可能的问题是您已经删除了.java文件,但这并不会删除.XML文件,因此请转到res->布局并删除以前删除过的.XML文件。 -另一个问题可能是您尚未删除清单文件中的文件,这些文件是您最近删除的语法... 因此,删除并运行代码

答案 19 :(得分:0)

就我而言,我创建了一个无法识别的自定义背景。

我从这两个XML资源文件的顶部删除了<?xml version="1.0" encoding="utf-8"?>标签。

在尝试了社区的许多解决方案之后,这对我有用。 @P Fuster的回答让我尝试了这个。

答案 20 :(得分:0)

当您有一个随机XML文件不执行任何操作时,有时会发生这种情况。删除文件可解决此问题。

答案 21 :(得分:0)

有时会发生复制示例中的其他项目中粘贴代码的情况

<android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="256dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:itemTextColor="@color/colorDrawerItems"
        app:menu="@menu/activity_main_drawer" />

不幸的是,Android Studio并不总是显示依赖项错误,但是发生的情况是缺少类NavigationView是因为implementation 'com.android.support:design没有添加到项目中

答案 22 :(得分:0)

我正在做Temperatur Converter App。运行该应用程序时遇到以下错误: Android Studio链接失败。 在String.xml中,缺少一行,我加入了这一行。一切正常,没有任何错误。

校正前

<resources>
<color name="myColor">#FFE4E1</color>
<string name="Celsius">To Celsius</string>
<string name="fahrenheit">To Fahrenheit</string>
<string name="calc">Calculate</string>
</resources>

编辑后:

<resources>
<string name="app_name">Temp Converter</string>
<color name="myColor">#FFE4E1</color>
<string name="Celsius">To Celsius</string>
<string name="fahrenheit">To Fahrenheit</string>
<string name="calc">Calculate</string>
</resources>

答案 23 :(得分:0)

如果您以前删除了Activity java文件,但尚未删除相应的xml布局文件,也可能会显示此类似错误。

删除已删除的Activity java文件的xml文件,然后清理或重建项目。

其背后的原因可能是由于xml中上下文的不匹配。 (如果您要复制粘贴xml布局代码,则可能会发生这种情况) 将tools:context与活动的java文件匹配。

image

答案 24 :(得分:0)

如果您在XML布局文件中保留属性为null或为空的元素,或者Java文件的对象创建路径(例如为对象指定了不正确的ID),也会发生这种情况

enter image description here

此处frombottom= AnimationUtils.loadAnimation(this,R.anim);的动画。 id或文件名留为空白会导致这种问题。

答案 25 :(得分:0)

错误与.xml文件的某些问题相关。手动打开每个xml格式文件以检查错误。我有同样的问题。不得不手动打开每个文件。 @string调用中有错误。