错误:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息

时间:2017-10-28 09:16:53

标签: android android-gradle

这是我的Gradle控制台的输出,我无法构建我的项目

D:\Android Projects\....\app\src\main\res\layout\topic_view_header.xml
Error:error: resource attr/?? (aka -packagename- :attr/??) not found.
Error:error: resource attr/?? (aka -packagename-:attr/??) not found.
Error:error: resource attr/?? (aka -packagename-:attr/??) not found.
Error:resource attr/?? (aka -packagename-:attr/??) not found.
Error:resource attr/?? (aka -packagename-:attr/??) not found.
Error:resource attr/?? (aka -packagename-:attr/??) not found.
Error:failed linking file resources.
Error:java.util.concurrent.ExecutionException: 
java.util.concurrent.ExecutionException: 
com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: 
com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for 
details
Error:Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Information:BUILD FAILED in 27s
Information:11 errors
Information:0 warnings

Android Studio 3.0 RC 2

48 个答案:

答案 0 :(得分:107)

更新2(遵循此方法)

你现在不应该这样做。而是修复所有错误。这只是一个解决方法,直到它被删除。之后,无论如何都需要手动修复错误。

尝试将您的gradle插件更新为3.3.0-alpha06以检查是否可以解决您的问题。

更新1:

现在已经修复了AAPT2和android gradle插件中的非ascii字符问题(yay!)。现在你可以使用android gradle插件版本3.2.0-alpha11或更新版本而不是禁用AAPT2,你不应该再遇到这个错误了。

原始答案

默认情况下,当您为gradle 3.0使用android插件时,Aapt2会启用。

这是

  

改进增量资源处理

here所述。

但是,如果您遇到问题,可以通过在gradle.properties

中添加此内容来切换回以前的版本
android.enableAapt2=false

答案 1 :(得分:100)

<强>更新

可以使用新版本的Gradle和Android-gradle-plugin修复这些问题。

build.gradle (顶级)

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip

以前的答案

如果您禁用AAPT2,则只是隐藏了真正的问题。

请注意,将来可能会删除AAPT1,因此您被迫使用AAPT2。实际上migration guide并不难理解,因为你没有看到同时这么多变化是未来的证据。

  

Android清单中的元素层次结构

     

在以前版本的AAPT中,元素嵌套在不正确的节点中   Android清单被忽略或导致警告。对于   例如,请考虑以下示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.myname.myapplication">
   <application
       ...
       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
           <action android:name="android.intent.action.CUSTOM" />
       </activity>
   </application>
</manifest>

因此,如果你真的遵循正确的Manifest结构,你必须首先检查如下所示。

  

清单文件结构

     

下面的代码片段显示了清单的一般结构   文件及其可包含的每个元素。每个元素,以及   它的所有属性都在一个单独的文件中完整记录。

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>

答案 2 :(得分:19)

我的XML布局出错了。因此,请检查xml布局是否存在错误。

答案 3 :(得分:13)

检查android studio中的gradle控制台选项卡(默认情况下位于右下角)。在我的情况下,有这样的错误:

C:\Android\.gradle

我解决了将gradle用户置于另一个没有白色或特殊字符的位置的问题:

{{1}}

您可以对其进行配置&#34; 服务目录路径&#34;在Gradle设置对话框中。在我的情况下,有必要删除以前位置上的旧.gradle目录并重新启动android studio。

答案 4 :(得分:8)

我的问题是由于图片文件名以 .9.png 结尾。我将结尾更改为 .png ,问题就消失了。我从Gradle控制台的堆栈跟踪中得到了提示:最重要的消息是&#34;任务执行失败:app: mergeDebugResources &#34;底部的消息是&#34; com.android.builder。 png .AaptProcess $ NotifierProcessOutput.out&#34;

我期待着Gradle输出更多有用的错误消息的那一天......

答案 5 :(得分:7)

我在尝试使用数据绑定和声明布局标记时遇到了这个问题。 我知道这有点晚了但是为了遇到这个问题的人,在你没有使用数据绑定后,我做了多次尝试后解决问题的方法是你的根布局这个例子

  <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:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">     </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"

并将其放在您的布局标记上(即使您使用数据绑定

<layout 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">

</layout>

希望它能奏效。 android.enableAapt2=false对我不起作用所以我必须删除所有内容并尝试弄清楚当我放置布局标记并使用数据绑定时我得到错误的原因因此我提出了解决方案。希望它有所帮助

答案 6 :(得分:7)

这里有同样的问题。正如@Izabela Orlowska所指出的,这个问题很可能是由路径中的特殊字符(android grandle文件,资源等)引起的。

对我来说:文件夹名称中包含ří会导致所有问题。确保路径中没有任何特殊字符。禁用AAPT2只是一个临时的解决方案&#34;。 Your project path contains non-ASCII characters android studio

答案 7 :(得分:5)

由于将来某个时候对AAPT(1)的支持将被弃用,因此最好找出报告错误的原因。
你能提供\ app \ src \ main \ res \ layout \ topic_view_header.xml文件的内容吗? 从问号中可能您使用的是非ASCII字符,AAPT2仍有一些问题。如果它确实是非ASCII字符,那么请关注https://issuetracker.google.com/68262818上的错误。

更新:此问题已在Android gradle插件版本3.2.0-alpha11或更新版本中修复。

答案 8 :(得分:5)

我用三个步骤修复了ERROR 我检查了问题来源 2.提供正确的字符串/文本,这是原因
我清理了项目,你会在BUILD下找到它。
My project

答案 9 :(得分:3)

重要更新

  

请勿将此行作为其他答案添加到您的项目中。因为它是   已更新版本中的已解决

您可以将项目级别build.gradle 中的构建gradle版本更新为最新版本。

buildscript {
    dependencies {
        // choose latest if available
        classpath 'com.android.tools.build:gradle:3.3.0-alpha06'
    }
}

gradle-wrapper.properties

// choose latest if available
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip

仅此而已!同步并运行,宾果游戏!

更多信息Android Documentation

如果添加,您将收到警告android.enableAapt2=false

  

警告:不建议使用“ android.enableAapt2”选项,不应   被使用了。使用“ android.enableAapt2 = true”将其删除   警告。它将在2018年底删除。

答案 10 :(得分:2)

我遇到了完全相同的问题:更新到Android Studio 3.1.2后,我的项目无法编译时出现AAPT2错误,告诉我某些styles.xml引用的可绘制内容无法找到。禁用AAPT2不再是解决方案,因为该设置已弃用,将于2018年底删除。

Culprit在一个完全不相关的layout.xml文件中的xml decleration之前是一个空行...所以layout.xml文件就是这样开始的:

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

删除空行,一切都像魅力一样。难以置信,不太可能,但确实如此。

Android Studio实际上发出警告,因为该文件没有以xml decleration开头(因为空行)。但只有在编辑器中打开文件时才会显示警告。

答案 11 :(得分:2)

删除.idea文件夹,然后重试。确保您使用的是开放网络。

答案 12 :(得分:2)

我通过降级classpath 'com.android.tools.build:gradle:3.2.1'distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

解决了这个问题

答案 13 :(得分:2)

不要使用此android.enableAapt2 = false, 这不是解决方案。找出在“构建输出”框中确切显示的错误,单击“切换”视图以查找确切的错误或异常,使用

 compileSdkVersion 28
 buildToolsVersion "28.0.3" 

在gradel-wrapper上使用:

 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

并按照说明删除或更新外部库或依赖项

答案 14 :(得分:2)

我也面临这个问题。首次构建应用时,使用Studio版本3.1.2的“ AAPT2错误:请检查日志以获取详细信息”。

我正在使用'com.android.support:appcompat-v7:26.1.0',当我看到错误日志时找不到某些样式。因此从我的工作项目中将其更改为“ com.android.support:appcompat-v7:25.3.1”,问题已解决。

尝试一下。

如果仍然遇到问题,请尝试使用v7:26+代替确切版本。这肯定会解决问题。

答案 15 :(得分:2)

对于 AAPT2错误:检查日志以获取详细信息 错误:链接文件资源失败。 错误:< / p>

检查包含 android:background =“” 删除此空属性 .xml 文件可以解决您的问题。

答案 16 :(得分:2)

检查您的任何新XML文件是否存在问题。 转到Android问题,看看那里是否有XML文件。但是,该错误不会显示在有问题的正确XML文件上。

就我而言,我在同一个XML文件中添加了两个标头。

类似的东西:

答案 17 :(得分:2)

资源异常表示您的资源有错误,任何资源文件夹文件已损坏,请尝试打开可绘制文件夹中的所有图像,看看它们是否可以正常打开。

有一个很好的命令来检查损坏的资源png。

f -name "*.png" | xargs -L 1 -I{} file  -I {} | grep -v 'image/png; charset=binary$'

答案 18 :(得分:2)

检查项目中的以下内容:

  • 确保任何XML文件在文件开头都没有空格。

  • 确保任何可绘制文件都没有大写字母或名称中任何特殊符号之类的问题。

  • 如果您的aapt2.exe连续丢失,那么请扫描您的整个PC,可能是有病毒正在删除adb.exp或aapt2.exe

希望您将获得解决方案。

答案 19 :(得分:2)

我得到了相同的错误AAPT2错误:检查日志以获取详细信息,并且我应用了以上解决方案,根据最常见的解决方案,我打开了gradle.properties并添加了行

android.enableAapt2 =假

解决方案,但我收到了一个错误 进程'命令'D:\ Android \ sdk \ Sdk \ build-tools \ 27.0.3 \ aapt.exe''以非零退出值1完成

但经过多次搜索后,我发现布局的xml文件中存在问题,我在布局的xml文件中重复了一行,如下所示:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"

从xml文件中删除重复行并重建项目并完成。

答案 20 :(得分:2)

如果您因为xml文件中的某些错误而使用Kotlin收到错误。在kotlin中很难找到xml错误,简单地构建失败。要知道Android Studio终端中命令的确切错误日志运行,并且很容易修复错误。

./gradlew clean
./gradlew assemble

答案 21 :(得分:2)

检查并尝试下面的内容。问题应该得到解决。

  1. 首先从构建窗口底部检查您的日志是否显示与项目相关的任何错误。如果显示错误,则修复所有这些。现在构建并再次运行修复所有错误。它将消除aapt2问题,而无需将android gradle插件更改为3.2.0。

  2. 其次,如果构建日志中没有显示任何与项目相关的错误,但仍然显示aapt2错误,那么您可以按照以下步骤进行修复。

  3. 在项目级build.gradle文件中更新您的android gradle插件,如下所示:

    classpath 'com.android.tools.build:gradle:3.2.0-alpha13'
    

    现在更新android.enableAapt2=true。然后检查并构建您的项目。

    任何这些步骤都应该能解决相关问题。

答案 22 :(得分:2)

在我的情况下,真正的问题是在生成Image Asset以生成项目的启动器mipmap图标后,生成的文件 ic_launcher_foreground.xml 内部出错(错误地)生成)。文件末尾缺少关闭的xml标记,&lt; / vector&gt; 缺失。

答案 23 :(得分:2)

此错误消息(AAPT2错误:检查日志以获取详细信息 )没有帮助,因为它没有告诉你真正的问题是什么。

在我的情况下,这是由于缺少资源XML可绘制文件。

error: failed linking file resources.

org.gradle.tooling.BuildException: Failed to process resources, see aapt output above for details.

我只知道因为我解除了XML文件中的更改,这次我收到了一条更有帮助的消息:

error: resource drawable/ic_filter_off (aka com.xxx:drawable/ic_filter_off) not found.

Message{kind=ERROR, text=error: resource drawable/ic_filter_off (aka com.xxx:drawable/ic_filter_off) not found., sources=[C:\code\xxx\app\src\main\res\layout\app_bar_main.xml:69], original message=, tool name=Optional.of(AAPT)}

答案 24 :(得分:2)

我也遇到过这样的问题,原来是我的电脑的系统托盘这条路径:

  

C:\ Users \'出现特殊字符'\ .android出现在中文,

现在我将路径更改为:

  

C:\ Users \ hjc \ .android。

原因是特殊字符的问题。正是由于这个原因导致了碎石appt2Exception问题

答案 25 :(得分:2)

在我的情况下,我使用了错误的颜色代码#CC00000这是无效的,因为它有7位但颜色代码应该有3或6或8位加上#prefix

答案 26 :(得分:2)

在进一步开发中禁用AAPT2导致问题,在我的情况下,在创建应用程序图标时生成错误。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="Infinity"
    android:viewportHeight="Infinity">
<path android:fillColor="#26A69A"
      android:pathData="M0,0h108v108h-108z"/>
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
      android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>

我通过删除此行来解决此问题

    android:viewportWidth="Infinity"
    android:viewportHeight="Infinity"

答案 27 :(得分:2)

正如@Izabela Orlowska指出的那样:在我的情况下,问题是由于某些文件无法在gradle缓存文件夹中找到而导致的。 (Windows操作系统)

默认的gradle路径位于我的用户文件夹中。路径包含变音符号和空格。 我通过将GRADLE_HOMEGRADLE_USER_HOME环境变量设置为一些新创建的文件夹而没有变音符号或路径中的空格来移动gradle文件夹。 这解决了我的问题。

答案 28 :(得分:2)

我尝试了在这里和许多其他网站上建议的所有内容,我最终发现问题出在 Bitdefender 阻止aapt ....

如果您安装了Bitdefender,那么您需要转动aapt&amp; amp;单独使用aapt2“应用程序访问”。

希望这是有用的。

答案 29 :(得分:2)

我也遇到过这个错误。对我来说,是在将目标SDK从26更改为25时。我能够通过更改appcompat依赖版本来解决问题

implementation 'com.android.support:appcompat-v7:26.1.0'

implementation 'com.android.support:appcompat-v7:25.4.0'

这将允许编译器访问当前无法找到的样式属性。这实际上将解决问题,而不是像Enzokie所暗示的那样掩盖真正的问题。

答案 30 :(得分:2)

如果您在尝试在Android Studio 3.0.1中的Kotlin项目中运行单独的Android实施测试或测试类(通过点击装订线中的运行图标)后看到此错误,则可以绕过错误,而不是运行完整的测试包(通过右键单击测试包并选择&#34;在...中运行测试&#34;)。

Android Studio 3.0.1中存在一个已知错误,导致IDE将Kotlin实施测试作为常规JUnit测试运行,导致OP的错误消息显示在我的计算机上。该错误在https://issuetracker.google.com/issues/71056937处被跟踪。它似乎已在Android Studio 3.1 Canary 7中修复。

答案 31 :(得分:2)

正如其他人所建议的那样,

android.enableAapt2=false

是最常见的解决方案。

但就我而言,错误归因于 compileSdkVersion buildToolsVersion 中的不同版本。

确保主要版本保持不变。

答案 32 :(得分:2)

当项目名称很长时,我收到此错误,并且我正在保存项目的位置添加到它。将项目移动到另一个位置,以便文件名不超过系统限制解决了我的错误。

C:\Users\<UserName>\AndroidStudioProjects\From Github\AdvancedAndroid_Emojify-TLIB.02-Exercise-DetectFaces\AdvancedAndroid_Emojify-TLIB.02-Exercise-DetectFaces\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml
Error:error: file not found.
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:mergeDebugResources'.
Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

答案 33 :(得分:2)

我有一个非常类似的问题。它是通过删除gradle的缓存(Linux上的〜/ .gradle / caches)来解决的,这迫使android工作室重新下载并重新生成所有内容。

答案 34 :(得分:2)

关闭项目并重新启动android studio为我解决了这个问题。

重新启动时,android studio通知它需要下载丢失的SDK,因此一旦处理完毕,问题就解决了。

答案 35 :(得分:2)

我不确定这是否已经为您解答但让我权衡。我最近遇到了类似的问题,我能够从logcat旁边的构建选项卡中查明确切的问题。我的问题是由XML中的fontfamily错误引起的。 我正在使用最新版本的Android Studio和2018年3月更新。

答案 36 :(得分:2)

确保在src/main/res/raw目录中使用有效的文件类型。在我的情况下,我已将.mov文件和一堆其他文件复制到我的res / raw目录中。我怀疑问题是aapt正在尝试处理.mov文件,并且不知道如何处理它。

答案 37 :(得分:1)

我在错误的方式下使用了协调器布局属性,我将其删除了,并且可以正常工作。 检查您的布局

for

那应该是一个数值,而不是文字:/小错误

答案 38 :(得分:1)

就我而言,删除现有的构建文件夹并重试即可解决问题。

答案 39 :(得分:1)

我遇到了同样的问题,在Google上进行了搜索,尝试了许多解决方案,但均无效果。 直到找到解决此问题的金钥匙为止:./gradlew assembleDebug

git bash中尝试此命令,控制台将准确告诉哪一行有错误。
然后,您对其进行改进,然后再次运行该命令,直到编译成功。

答案 40 :(得分:1)

我收到了这个错误

com.android.tools.aapt2.Aapt2Exception: AAPT2 error 

由于图层列表中某个/可绘制项目的文件名错误。

我通过更改文件名来解决问题。

答案 41 :(得分:1)

添加build.gradle应用内级别 aaptOptions    {         cruncherEnabled =假    }

答案 42 :(得分:1)

在我的情况下,通过添加对constraint-layout包的引用来修复它

    implementation 'com.android.support.constraint:constraint-layout:1.1.0'

答案 43 :(得分:1)

看起来像资源相关的错误。我会从那里开始。

我得到了这个(&#34;错误:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息&#34;)第一次与图片相关。调整大小解决了它。或者另一次刚刚修复了资源链接。

答案 44 :(得分:1)

有时候!小心图像的属性深度!和图像的名称

例如:ic_xxxxx_xxxx - Copie

enter image description here

答案 45 :(得分:0)

  • 这很可能是由于布局文件中的一些愚蠢错误
  • 在我的情况下,我已经从另一个项目复制了textview,但是backgroundColor资源在当前项目中不可用
  • 它在运行时没有显示错误,但是在编译时却给出了以上错误。
  • 您可以按照以下步骤找出xml中确切的错误位置:

单击Android Studio右侧的Gradle选项卡->打开项目构建目录,如下图所示->运行assembleDebug

-错误将如下图所示

enter image description here

答案 46 :(得分:0)

我遇到了这个问题

  

AAPT2错误:查看日志以获取详细信息

因为我已经在不使用反斜杠(')的情况下在字符串文件中添加了引号(\)

错误文字

 <string name="no_internet">You don't have internet connection </string>

固定文字

<string name="no_internet">You don\'t have internet connection </string>

因此,请检查正确添加到您的字符串文件中的特殊字符

答案 47 :(得分:0)

就我而言,我已将编译 SDK 和构建 SDK 版本更新为 30 并添加了

 requestLegacyPermission=true 

在 android manifest 文件中,因为我正在访问存储以进行读写。 稍后当我编辑编译 SDK 并构建 SDK 版本并返回到版本 26 时,我忘记删除

requestLegacyPermission=true 

在清单文件中。

原因:

requestLegacyPermission 是在 Android 10 中引入的,因此当我将编译 SDK 和构建 SDK 更新为 26 时,Manifest 无法识别这一点。