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

Far*_*Ali 135 android android-gradle-plugin

这是我的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
Run Code Online (Sandbox Code Playgroud)

Android Studio 3.0 RC 2

Yas*_*svi 111

更新2(遵循此方法)

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

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

更新1:

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

原始答案

当你为gradle 3.0使用android插件时,默认启用Aapt2.

这是为了

改进增量资源处理

如规定在这里.

但是如果您遇到问题,可以通过添加它来切换回以前的版本 gradle.properties

android.enableAapt2=false
Run Code Online (Sandbox Code Playgroud)

  • 在这个动作之后我得到了这个msg`Process'命令'D:\ Android\sdk\Sdk\build-tools\27.0.3\aapt.exe''以非零退出值1完成 (29认同)
  • 它有效,但我收到了消息:`'android.enableAapt2'选项已弃用,不应再使用了.使用'android.enableAapt2 = true'删除此警告.它将在2018年底删除 (2认同)

Enz*_*kie 101

UPDATE

新版Gradle和Android-gradle-plugin可用于修复这些问题.

build.gradle (顶级)

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}
Run Code Online (Sandbox Code Playgroud)

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip
Run Code Online (Sandbox Code Playgroud)

以前的答案

如果你禁用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>
Run Code Online (Sandbox Code Playgroud)

因此,如果您真正遵循正确的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>
Run Code Online (Sandbox Code Playgroud)

  • @Downvoters请.准确地解释这个答案有什么问题,以便我能解决? (7认同)
  • 您没有提供解决方案,只是其原因背后的理论可能相关或不相关. (3认同)

小智 20

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


Joz*_*zef 13

检查android studio中的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
Run Code Online (Sandbox Code Playgroud)

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

C:\Android\.gradle
Run Code Online (Sandbox Code Playgroud)

您可以在Gradle settings对话框中配置它设置" Service directory path ".在我的情况下,有必要删除以前位置上的旧.gradle目录并重新启动android studio.


Sam*_*mil 8

我的问题是由于图像文件名以.9.png结尾.我把结局改为.png,问题就消失了.我从摇篮控制台中的堆栈跟踪提示:顶部的消息是"执行失败的任务:应用程序:mergeDebugResources "和底部的消息是"com.android.builder.PNG .AaptProcess $ NotifierProcessOutput.out"

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


Cod*_*ave 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:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">     </android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

除掉

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"
Run Code Online (Sandbox Code Playgroud)

并将其放在您的布局标签上(即如果您正在使用数据绑定)

<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>
Run Code Online (Sandbox Code Playgroud)

并希望它会奏效.这android.enableAapt2=false对我不起作用所以我必须删除所有内容,并试图弄清楚为什么当我放置布局标签并使用数据绑定时我得到错误因此我想出了解决方案.希望能帮助到你


Jiř*_*iří 7

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

对我来说:在文件夹名称中导致所有问题.确保路径中没有任何特殊字符.禁用AAPT2只是一个临时的"解决方案".您的项目路径包含非ASCII字符android studio


Iza*_*ska 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或更新版本中修复.


Buk*_*mi 5

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


归档时间:

查看次数:

394866 次

最近记录:

6 年,6 月 前