错误: com.android.tools.AAPT2.Aapt2Exception: AAPT2 Error: 检查详细信息的日志

这是我的 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

420702 次浏览

更新2(遵循此方法)

你现在不该这么做。而是修复所有的错误。在它被移除之前,这只是一个变通方案。在此之后,无论如何都需要手动修复错误。

试着把你的 gradle 插件更新到 3.3.0-alpha06,看看是否修复了你的问题。

更新1:

非 ASCII 字符问题已经在 AAPT2和安卓级别插件中得到解决(耶!).现在你不需要禁用 AAPT2,只需要使用 android gradle 插件版本3.2.0-alpha11或更新版本,你就不会再遇到这个错误了。

原始答案

Aapt2在使用3.0级 android 插件时默认启用。

这是为了

改善增量资源处理

正如所述 给你

但是如果遇到问题,可以通过在 gradle.properties中添加这个命令来切换回以前的版本

android.enableAapt2=false

因为在将来的某个时候将不再支持 AAPT (1) ,所以最好确定您报告的错误的原因。< br > 您能否提供 app src main res 晒图的主题 _ view _ header.xml 文件的内容? 从问号来看,您可能使用的是非 ASCII 字符,AAPT2在这方面仍然存在一些问题。如果它确实是非 ASCII 字符,那么请跟随 https://issuetracker.google.com/68262818上的 bug。

更新 : 该问题在 android gradle 插件版本3.2.0-alpha11或更新版本中得到修复。

更新

Gradle 和 android-Gradle-plugin 的新版本可以解决这些问题。

建造级别 (顶层)

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

梯级包装纸,性能

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

上一个答案

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

请注意,AAPT1可能在未来被删除,因此您被迫使用 AAPT2。实际上 迁徙指南并不难理解,因为你不会同时看到那么多的变化,这就是未来的证明。

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>

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

我第一次看到这个(“ Error: com.android.tools.AAPT2.Aapt2Exception: AAPT2 Error: check log for Details”)与图片有关。调整尺寸解决了问题。或者另一个时间只是修复到资源的链接。

有时,要注意图像的属性深度和图像的名称

示例: ic _ xxxxx _ xxxx-Copie

enter image description here

我也遇到了这个错误。对我来说,这是当改变目标 SDK 从26下降到25。我能够通过将 appcompat 依赖版本从

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

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

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

我得到了这个错误

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

由于错误的文件名的一个我/可绘制的项目在分层列表。

我通过修改文件名来解决这个问题。

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

对我来说: 在文件夹名中使用 ří导致了所有的问题。确保路径中没有任何特殊字符。禁用 AAPT2只是暂时的“解决方案”。您的项目路径包含非 ASCII 字符 android 工作室

在我的情况下,我是使用错误的颜色代码 #CC00000是无效的,因为它有7个数字,但颜色代码应该有3或6或8个数字加 # 前缀

检查 android 工作室中的 gradle 控制台选项卡(默认在右下角)。在我的例子中,有这样的错误:

C:\Users\Jozef Bar??k\.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.4.0.aar\d68bb9d2059935a7891196f4dfb81686\res\drawable-hdpi-v4\abc_ic_menu_share_mtrl_alpha.png: error: file not found.


Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
:app:mergeDebugResources FAILED

我解决了这个问题,设置了没有白色或特殊字符的另一个位置的用户家:

C:\Android\.gradle

您可以在 Gradle 设置对话框中设置“ 服务目录路径”。在我的情况下,有必要删除旧的。在上一个位置的 gradle 目录,并重新启动 android 工作室。

我的问题是由于一个以 。9。 png结尾的图像文件名。我把结尾改成了 。 png,问题就消失了。我从 Gradle 控制台的堆栈跟踪中得到提示: 上面的消息是“ Task: app: 合并调试资源执行失败”,下面的消息是“ com.android.builder..aaptProcess $NotifierProcessOutput.out”

我期待着有一天,Gradle 会输出更多有用的错误信息... ..。

禁用 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"

正如@Izabela Orlowska 指出的: 在我的案例中,问题是由于在 gradle 缓存文件夹中找不到一些文件造成的。(视窗操作系统)

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

我尝试了所有建议在这里和许多其他网站,我最终发现问题是与 比特辩护律师阻塞适应..。

如果你已经安装了比特防御,那么你需要单独打开 aapt & aapt2“ 申请途径”。

希望这个有用。

我的 XML 布局出错了,所以请检查 XML 布局是否有错误。

如果你在 Android Studio 3.0.1的 Kotlin 项目中尝试运行单独的安卓实现测试或测试类(通过点击下水道中的运行图标)后看到了这个错误,你可以通过运行完整的测试包(通过右键点击测试包并选择“在... 中运行测试”)来避免这个错误。

Android Studio 3.0.1中有一个已知的 bug,它导致 IDE 将 Kotlin 实现测试作为常规 JUnit 测试运行,这导致 OP 的错误消息显示在我的机器上。窃听器在 https://issuetracker.google.com/issues/71056937被追踪。它似乎已经在 Android Studio 3.1 Canary 7中得到修复。

正如其他人建议的那样,

android.enableAapt2=false

是最常见的解决办法。

但在我的情况下,错误是由于在 编译 SdkVersionBuildToolsVersion的不同版本。

确保主要版本保持不变。

当项目名很长时,我得到了这个错误,我保存项目的位置被添加到其中。将项目移动到另一个位置,这样文件名就不会超过系统限制,这为我解决了错误。

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

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

C: 用户“出现特殊字符”。 android 出现在中文,

现在我改变了路径:

C: 用户 hjc.android。

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

我也有过类似的问题。通过删除 gradle 的缓存(~/。这迫使 android 工作室重新下载并重新生成所有东西。

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

在重新启动时,android 工作室通知它需要下载丢失的 SDK,所以一旦这个问题得到解决,问题就解决了。

我只是在尝试使用数据绑定和声明布局标记时遇到了这个问题。我所做的解决这个问题后,这么多次尝试是在您的根布局,当您不使用数据绑定说,例如这一点

  <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对我不起作用,所以我必须删除一切,并试图找出为什么我得到的错误,当我把布局标签和使用数据绑定,因此我想出了解决方案。希望能有帮助

我不确定这个问题是否已经得到回答,但请允许我发表意见。我最近遇到了一个类似的问题,我能够从 logcat 旁边的 build 选项卡中精确地指出问题所在。我的问题是由 XML 中的一个字体错误引起的。 我在2018年3月的更新中使用了最新版本的 Android Studio。

确保在 src/main/res/raw目录中使用有效的文件类型。在我的案例中,我复制了一个。Mov 文件以及我的 res/raw 目录中的许多其他文件。我怀疑问题在于 Aapt 试图处理。Mov 文件,不知道该怎么办。

我用三个步骤修正了错误
我检查了问题的来源
2. 如果提供正确的字符串/文本,它就是 CAUSE
我清理了项目,你会在 BUILD 下找到它。 < br/> My project

我遇到了完全相同的问题: 在升级到 Android Studio 3.1.2之后,我的项目无法编译,并且出现了一个 AAPT2错误,告诉我我的一些由 styles.xml引用的可绘制性无法找到。禁用 AAPT2不再是一个解决方案,因为该设置已被废弃,并将在2018年底被删除。

在一个完全不相关的 layout.xml文件中,在 xml 声明之前,“罪魁祸首”是一个空行... ... 因此,layout.xml文件是这样开始的:

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

删除了空行,一切又恢复了正常。难以置信,不太可能,但却是真的。

Android Studio 实际上给出了一个警告,因为该文件没有以 xml 声明开始(因为该行为空)。但是,只有在编辑器中打开文件时,警告才可见。

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

在我的例子中,这是由于缺少一个资源 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)}

在我的例子中,真正的问题是在生成 Image Asset 以为我的项目生成启动器 mipmap 图标之后,生成的文件 < em > ic _ launcher _ foreground. xml 内部有错误(是错误生成的)。在文件的末尾缺少 xml 结束标记, 缺少。

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

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

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

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

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

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

这些步骤中的任何一个都可以解决相关的问题。

如果您正在使用 Kotlin,那么由于 xml 文件中的一些错误而导致错误。在 kotlin 中很难找到 xml 错误,构建失败很简单。要知道确切的错误日志运行下面的命令在 Android 工作室终端和很容易修复的错误。

./gradlew clean
./gradlew assemble

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

AbleleAapt2 = false

解决方案,但我得到了一个错误 Process‘ command’D: Android Sdk Sdk build-tools 27.0.3 aapt.exe”,退出值为非零

但是经过多次搜索,我发现在布局的 xml 文件中有一个问题,那就是我在布局的 xml 文件中重复了以下几行:

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

删除 xml 文件中的重复行并重新构建项目和“完成”。

在我的例子中,通过添加对约束布局包的引用来修复这个问题

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

检查项目中的以下内容:

  • 确保任何 XML 文件在文件开始处没有空格。

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

  • 如果您的 apt2.exe 不断丢失,然后请扫描您的整个电脑,可能有一个病毒正在删除 adb.exp 或 apt2.exe

希望你能得到解决办法。

“资源异常”意味着您的资源出错,任何资源文件夹文件已损坏,请尝试打开可绘制文件夹中的所有图像,以查看这些图像是否正常打开。

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

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

检查新的 XML 文件是否有问题。 进入 Android 问题,看看是否有 XML 文件。但是,该错误没有显示在有问题的正确 XML 文件上。

在我的例子中,我在同一个 XML 文件中添加了两个头。

差不多是这样:

重要更新资料

不要将此行作为其他答案添加到项目中 更新的格拉德尔版本中已经解析

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

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

梯级包装纸,性能

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

就是这样! 同步和运行,宾果!

更多信息 Android 文档

如果您添加,您将得到一个警告 android.enableAapt2=false

警告: “ android.ableAapt2”选项不被推荐使用,也不应该使用 使用‘ android.ableleAapt2 = true’删除 警告。它将在2018年底被删除。

对于 < em > AAPT2错误: 检查详细信息日志 错误: 链接文件资源失败错误:

检查包含 机器人:删除此空属性< em > . xml 文件可以解决您的问题。

我也面临这个问题。“ AAPT2错误: 检查日志的细节”与工作室版本3.1.2时,第一次构建应用程序。

我使用的是‘ com.android.support: appcompat-v7:26.1.0’,当我看到错误日志时没有找到一些样式。因此将其从我的工作项目更改为‘ com.android.support: appcompat-v7:25.3.1’,问题得到了解决。

试试看。

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

不要使用这个 android.ableleAapt2 = false, 这不是解决办法。找出确切显示在“生成输出”框中的错误,单击“切换视图”以查找确切的错误或异常使用

 compileSdkVersion 28
buildToolsVersion "28.0.3"

把这个用在包装纸上:

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

并按照指令删除或更新外部库或依赖项

我通过降级 classpath 'com.android.tools.build:gradle:3.2.1'distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip解决了这个问题

添加 build.gradle 应用程序内部级别 AaptOptions { CruncherEnable = false }

删除 .idea文件夹,然后再试一次。请确保您正在使用打开的网络。

在我的例子中,删除预先存在的生成文件夹并重试解决了问题。

我错误地使用了协调器布局属性 ,我删除了它,它工作了。 检查你的布局

app:layout_constraintVertical_bias="parent"

这应该是一个数值,而不是字面值:/微小错误

  • 最有可能发生这种情况,因为一些愚蠢的错误在布局文件
  • 在我的例子中,我从另一个项目中复制了一个文本视图,但是在我当前的项目中,backoundColor 资源不可用
  • 它在运行时没有显示错误,但是在编译时给出了上面的错误。
  • 您可以通过以下过程找到 xml 中的确切错误:

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

--错误将如下图所示

enter image description here

我有个问题

AAPT2错误: 检查日志中的详细信息

因为我在字符串文件中添加了 QuotionMarks('),而没有使用 Backslash(\)

错误文本

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

固定文本

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

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

我遇到了同样的问题,在谷歌上搜索,尝试了很多解决方案,没有一个奏效。
直到我找到解决这个问题的金钥匙: ./gradlew assembleDebug

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

在我的情况下,我已经更新编译 SDK 和建立 SDK 版本到30和添加

 requestLegacyPermission=true

在 android 清单文件中,因为我正在访问存储器进行读写操作。 后来当我编辑编译 SDK 并构建 SDK 版本并返回到版本26时,我忘了删除

requestLegacyPermission=true

在清单文件中。

理由:

RequestLegacyPermission 是在 Android 10中引入的,所以当我将 Compile SDK 和 Build SDK 更新为26时,Manifest 没有认识到这一点。

这招对我很管用。

它的等级问题。升级您的等级到版本6

https://services.gradle.org/distributions/gradle-6.5-all.zip

如果您使用科尔多瓦,然后更新安卓版本为9

Ex :  cordova platform add android@9.0.0