错误-Android资源链接失败(AAPT2 27.0.3守护程序#0)


94

我有这个错误

我尝试重新安装android studio并删除.gradle文件夹,请问有什么解决办法?

    Error:FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Android resource linking failed (AAPT2 27.0.3 Daemon #0)
  Command: C:\javasdk\build-tools\27.0.3\aapt2.exe link -I\
          C:\javasdk\platforms\android-26\android.jar\
          --manifest\



  C:\Users\Jalal D\.gradle\caches\transforms-1\files-1.1\fonticon-0.1.8.aar\2b09376fc14469ba65fc8e4d85c2eed1\res\values\values.xml:19:5-25:25: AAPT: error: resource android:attr/fontVariationSettings not found.

  C:\Users\Jalal D\.gradle\caches\transforms-1\files-1.1\fonticon-0.1.8.aar\2b09376fc14469ba65fc8e4d85c2eed1\res\values\values.xml:19:5-25:25: AAPT: error: resource android:attr/ttcIndex not found.

  error: failed linking references.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 3s

Answers:


50

有完全一样的问题。搜索并替换:用以下方法解决它com.android.support:support-v4:+com.android.support:support-v4:27.1.0在平台/ Android的目录。

另外,我还必须将以下代码添加到platform / android / app / build.gradle和platform / android / build.gradle文件中:

configurations.all {
resolutionStrategy {
    force 'com.android.support:support-v4:27.1.0'
}}

编辑为回答“此com.android.support:support-v4:+设置在哪里?” ...

该设置可能(在这种情况下)位于platform / android /目录中插件的.gradle文件之一中,例如,在我的情况下,它是starter-barcodescanner插件,因此只需遍历所有插件.gradle文件:

在此处输入图片说明

仔细检查platform / android / build.gradle文件。

希望这可以帮助。


谢谢您救了我们!
Ramesh Murugesan

谢谢您节省我的一天!我有很多问题一直困扰着我,直到我不知道我的应用程序如何停止工作
LMoreno10

不能相信解决方案是如此简单,只需要复制粘贴到这两个gradle文件中即可!拍手!
Shyam '18

发现此问题的原因之一当我们在值(string.xml,style.xml,color.xml等)中不存在的清单中使用任何字符串,样式,颜色等时,则这种类型的错误发生。
Vishnu Magar

在Android Studio中更新依赖项时,此修复程序也适用。IDE本身会在文件中指出这些版本必须与已编译的
SDK

91

Android的资源链接失败,如果你在你的任何XML资源有错误的错误也可能会出现。就我而言,我在可绘制文件夹中的一个XML可绘制对象中使用了以下两行:

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

我删除了重复的行,错误消失了。该错误有点令人误解:

Android资源链接失败输出:/ Users / johndoe / Desktop / myapp / app / src / main / res / layout / activity_main .xml:2:错误:resource drawable / bg_main(又名com.example.myproject:drawable / bg_main)找到了。

根据上述错误,您需要做的第一件事就是证明已读取在activity_main中访问的所有可绘制资源,因为发现错误的机会更高。在最坏的情况下,您可能最终会检查所有资源文件。


4
这个。这解决了我的问题。非常烦人的是,IDE并未发出此错误的信号,并且链接错误完全是在谈论其他问题。
ocramot

4
圣母玛利亚 !
米希尔·帕特尔

1
我的实际上是:(<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?> 在同一行上:P很难检测)
艾伦·迪普

1
我的<meta-data android:name="com.google.android.actions" android:resource="@xml/my_event_session_menu" />
想法

2
+1为我节省了一些时间。最令人讨厌的是,Android Studio指向错误的文件,这使我挠头,因为它表示无法链接到该文件。
机部落

46

注意:如果将支持库升级到Android Studio,28.0.0而您的支持库compileSdkVersion也不是28 ,则Android Studio会吐出类似这样的疯狂错误。


14
我已经拥有了compileSdkVersion 28support-v4:28.0.0并且得到了相同的错误:(
ocramot

1
@ocramot我通过将compileSdkVersion降级到27来解决了这个问题
suvojit_007'1

1
+1。我的项目有两个模块,而我有不同的版本(一个是29,另一个是27)。当我将它们全部设置为29时,错误消失了
voghDev

谢谢!就我而言,我必须将“ minSdkVersion”设置为与“ compileSdkVersion”相同。否则,只会运行第一个构建,并且所有随后的重新运行都将失败,并返回与OP类似的错误
Jim B


7

通过替换compileSdkVersion 23compileSdkVersion 28in为我解决了问题build.gradle (Project: build)


为我工作,谢谢!我还有minSdkVersion 23
Stephen Hosking

@StephenHosking它为您工作,而无需compileSdkVersion从升级2328?在这种情况下,您最初遇到的问题是什么?
Jaime Montoya

我应该更清楚了。您的解决方案,即。替换compileSdkVersion 23compileSdkVersion 28我的工作,但我刚才提到的,这是无法离开minSdkVersion 23,作为一个正确的解决方案额外的信息。我最初的问题是“错误-Android资源链接失败”
Stephen Hosking

@StephenHosking尼斯。好,现在对您有效。
Jaime Montoya

4

我将新颜色导入到我的项目中,并遇到了同样的问题。因此,我styles.xml使用新的颜色名称打开并重新分配了颜色。


4

我通过@+id/ 在所有ID之前添加来解决此问题。

@+id/your_item_id


这不是提供正确答案的问题。提供正确的答案,您是如何做到的?问题是什么?\
Yohan Malshika '18

4

感到很愚蠢-(出于任何原因)我在drawable文件夹中有一个空xml。并且AS产生了数十个不相关的错误> <

因此,我的一般建议是相同的-简要检查每个资源文件。


3

com.android.support:support-v4最近得到更新,并且可能会影响在依赖项中使用更新版本的插件。但是,如果找不到依赖项(例如,如果使用人行横道插件),则只需将此代码放在代码gradle插件的顶部即可(无需在build.gradle上添加)。

configurations.all {
resolutionStrategy.force 'com.android.support:support-v4:24.0.0'
}

此处将代码放入人行横道插件的示例位置

随意编辑com.android.support的版本(请勿使用28.0.0),因为这就是问题所在


2
非常感谢。我使用的27.1.0是@RFourie。
Ramesh Murugesan

2

资源文件中应该有一些错误。这意味着可能存在缺少类型的属性值。浏览资源文件并更正这些值并享受工作。


2

此问题可能有多种原因,这些原因主要在资源或应用程序级别的build.gradle文件中。

就我而言,资源文件中的视图没有包含在build.gradle文件中的必需依赖项。

因此,请确保在build.gradle文件中包括所有必需的依赖项。


2

检查您的Gradle插件版本。如果在此问题出现之前已更新到较新的版本,请尝试将其降级。转到文件->项目结构。更改为以前的版本。


1

尝试更新最新的构建版本,目标和编译版本,还更新依赖项,但不适用于我

就我而言,将清单更改<meta-items/><meta-data/>对我有用...

希望它对某人有帮助...


1

我遇到了同样的问题,但这是因为在编辑按钮时,我在按钮layout_width / height中忘记了将dp放在最后。添加了dp并解决了问题:/


1

就我而言,我无意中写道:

app:displayViewTitle="@string/instructions_defineExtract_confirm_email"

有趣的是,Android Studio能够通过CTRL + click导航字符串。它只是给Build Time错误。更改为标准的“点分隔”就可以了

app:displayViewTitle="@string/instructions.defineExtract.confirm.email"

1

找到了导致此问题的原因之一

当我们尝试使用任何

字符串,样式,颜色等,

在值中存在的清单文件中,则(string.xml,style.xml,color.xml,etc,)发生这种类型的错误


1

我有同样的错误,当我关闭AndroidStudio并删除目录(如C:\Users\Jalal D\.gradle\caches\transforms-1\构建错误信息中)时,我将其修复。


1

我遇到了同样的问题,并转到文件->项目结构...->建议,然后全部应用来解决。就像@JeffinJ所建议的那样,我认为问题是由于Gradle插件更新引起的。


0

我遇到了类似的问题,但是我从解决方案中出来的问题是,您在依赖项中使用了与同一个域相对应的任何内容,但是使用不同的版本,请确保所有这些都相同


我昨晚安装了Android Studio 3.3.2。我是一个完整的新手。我创建了一个“ Flutter”应用程序并尝试运行它。我收到以下输出和链接失败消息:
Elliot

0

我遇到了同样的问题,可以通过从资源文件中删除错误来解决,例如样式,颜色文件在values文件夹中。就我而言,样式颜色错误如下:

 <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">**@color/colorPrimary**</item>
    <item name="android:textColorSecondary">**@color/colorPrimaryDark**</item>
</style>

0

更改启用最后一个支持库的版本由(28.0.0)以前(27.1.0),错误Android Resource Linking Failed消失。

应该注意的是,版本27.1.0是我们的实现中允许的最大版本,该版本可以运行,但是您可以根据需要使用较旧的版本。这必须在以字符串开头的所有依赖项中使用com.android.support:

项目/应用程序/ build.gradle

implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"

项目/ build.gradle

ext {
    supportLibraryVersion= '27.1.0'
}

然后,将项目与Gradle文件同步

GL


0

我也遇到了同样的问题,但是在收到此错误之前,我的应用程序正在运行。所以我只撤消了2/3次。并再次进行了更改。并构建app.app成功运行。


0

添加以下依赖项后,我遇到了相同的问题:

implementation 'com.evernote:android-state:1.4.1'
annotationProcessor 'com.evernote:android-state-processor:1.4.1'

原因是最新版本的evernote使用了对AndroidX的依赖关系,而我在项目中已支持库版本27.1.1。因此,正如其他答案所暗示的那样,可以选择将支持库升级到28.0.0,但这对于具有大量自定义视图的大型项目来说有点棘手。因此,我通过将Evernote版本降级为1.3.1解决了该问题。


0

听起来平庸,但对我来说,Build > Clean Project此错误已得到修复,没有进行任何其他更改。


0

对我来说,使用Asset Studio更改启动器图标后出现了错误。事实证明,ic_launcher_foreground.xml生成的文件在文件顶部缺少以下行: <?xml version="1.0" encoding="utf-8"?>


我的也差不多。我添加了一个新的构建版本,并且出现了两个错误。第一个没有道理,但我陷入了第二个错误,发现此构建缺少ic_launcher.png
ja928

0

我从1月28日开始使用Studio 3.3.1 Build。

对我来说,我得到的“错误android资源链接失败”指向使用ConstraintLayout的布局文件中的一行,该行一直有效,直到今天,我的应用程序级别gradle文件的唯一更改是更新以下版本:

android.arch.navigation:navigation-fragment
android.arch.navigation:navigation-ui

1.0.0-rc011.0.0-rc02

错误消息说了一些关于不认识layout_constraintTop_toTopOf哪个当然是愚蠢的事情,因为它已经愉快地编译了几个月。

我已经在28.0.3的构建工具和compileSdkVersion28上。我一直在使用androidx.appcompat各处了一段时间(将这个项目转换为androidx几个月了)。

我首先经历了一个项目清理(无济于事),并使缓存/重启无效(无济于事)。有关布局最初是使用定义的

<TextView><EditText>以及<ImageView>组件(经过了做工精细直到今天)。

但是在阅读了以上答案之后,我想也许是由于某种原因引起的混乱,所以我更改了布局以使用:

<androidx.appcompat.widget

所有各个组件的版本。没有变化-仍然出现错误。

然后<androidx.appcompat.widget.AppCompatTextView,我删除了导致编译错误的块。我在其他小部件中更改了对它的所有引用,改为引用“父”。做一个。这次编译完成没有错误

因此,我认为该小部件定义中有些奇怪的地方。。。

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/contact_firstname_label"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="@string/contact_fname_label"
    android:gravity="end"
    android:textAppearance="@android:style/TextAppearance.Material.Small"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/contact_detail_fname"
    app:layout_constraintBaseline_toBaselineOf="@+id/contact_detail_fname"/>

然后,我将先前剪切过Ctrl-V的块粘贴回去,并在布局中引用该ID的其他组件中将引用更改回该ID。编译失败

我再次剪切该块并将其粘贴到写字板。然后从写字板粘贴中读取内容,我实际上将其打回(即这次我没有复制/粘贴)-逐行,在键入最小定义后在项目上做一个make,然后在我再次输入时放在每个新行中。每次项目编译干净!

我不知道该怎么做。也许文件中原来是一些虚假的隐形字符?


0

就我而言,我无意中设置了仅存在于按钮中的属性的样式,并为TextView添加了该样式。

<!-- applied to TextViews -->
<style name="rowStyle"> 
    <item name="android:padding">3dp</item>
    <item name="android:borderlessButtonStyle">false</item> <!-- this caused the error -->
    <item name="android:background">@drawable/textview_border</item>
</style>

删除行即可android:borderlessButtonStyle解决问题。


0
  • 右键单击可绘制文件夹,然后选择“在资源管理器中显示”
  • 在打开的文件系统中找到失败的文件, 选择它们(或选择整个drawable中的文件),然后它们复制drawable-v24文件中(如果没有drawable-v24文件,请不要删除它并创建它)。
  • 然后选择 File- > Invalidate Caches / Restart, 然后
  • 重新启动Android Studio。

第1点和第2点对我有用。但是现在我需要将失败的文件放在两个位置,一个在drawable中,另一个在drawable-v24中。
阿曼·戈亚尔

0

如果遇到这种情况:就我而言,我有一个翻译后的字符串,但是该字符串尚未出现在默认的strings.xml中。将缺少的字符串添加到strings.xml,它得到解决。


0

就我而言,该错误指向AndroidManifest.xml文件。我有这条线:

<meta-data
            android:name="com.google.android.actions"
            android:resource="@xml/popup_info.xml" />

我不知道为什么Android Studio会把它放在那里。我没有更改清单文件,而且直到升级到3.5.3版都没有发生-因此AS必须为我完成了它。无论如何,该行应该看起来像这样:

<meta-data
            android:name="com.google.android.actions"
            android:resource="@layout/popup" />

一旦我改变了,那一切都很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.