Błąd: com.android.tools.aapt2.Aapt2Exception: błąd AAPT2: sprawdź dzienniki, aby uzyskać szczegółowe informacje

137

To jest wynik mojej konsoli Gradle, nie mogę zbudować mojego projektu

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

Zeeshan Ali
źródło
Zobacz to pytanie
Enzokie
Możesz spróbować uruchomić zadanie assembleDebug w celu zidentyfikowania problemu. Aby uzyskać więcej informacji, przeczytaj tutaj stackoverflow.com/a/47941174/1573414
AnteGemini

Odpowiedzi:

112

Aktualizacja 2 (postępuj zgodnie z tym podejściem)

Nie powinieneś tego teraz robić. Zamiast tego napraw wszystkie błędy. To jest tylko obejście, dopóki nie zostanie usunięte. Potem i tak będziesz musiał naprawić błędy ręcznie.

Spróbuj zaktualizować wtyczkę gradle, 3.3.0-alpha06aby sprawdzić, czy to rozwiąże problem.

Aktualizacja 1:

Naprawiono problemy ze znakami spoza ASCII w wtyczce AAPT2 i Android Gradle (yay!). Zamiast wyłączać AAPT2 teraz możesz po prostu użyć wtyczki Gradle Android w wersji 3.2.0-alpha11 lub nowszej i nie powinieneś już napotykać tego błędu.

Oryginalna odpowiedź

Aapt2 jest domyślnie włączony, gdy używasz wtyczki Androida dla Gradle 3.0.

To jest do

usprawnić przyrostowe przetwarzanie zasobów

jak podano tutaj .

Ale jeśli napotkasz z nim problemy, możesz wrócić do poprzedniej wersji, dodając to gradle.properties

android.enableAapt2=false
Yashasvi
źródło
ale po nim pojawia się problem z uruchomieniem androidTest. Podaje błąd Nie znaleziono klasy: „com.app.someapp.TheTestClass” Pusty zestaw testów. Zobacz tutaj stackoverflow.com/questions/47969959/…
K.Os,
29
po tej akcji otrzymałem tę wiadomośćProcess 'command 'D:\Android\sdk\Sdk\build-tools\27.0.3\aapt.exe'' finished with non-zero exit value 1
AN
1
Naprawiono problemy ze znakami spoza ASCII w wtyczce AAPT2 i Android Gradle (yay!). Zamiast wyłączać AAPT2 teraz możesz po prostu użyć wtyczki Gradle Android w wersji 3.2.0-alpha11 lub nowszej i nie powinieneś już napotykać tego błędu.
Izabela Orłowska
2
Działa, ale dostałem wiadomość:The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018..
Mikemike
1
NIE UŻYWAJ TEGO! Jakiekolwiek wyłączenie nowych funkcji spowoduje przerwanie projektu w przyszłości. Jak powiedział Pranav Karnik, jest on przestarzały i przeznaczony do usunięcia: jest to tylko obejście, dopóki nie zostanie usunięty. Potem i tak będziesz musiał naprawić błędy ręcznie.
Zoe
102

AKTUALIZACJA

Dostępna jest nowa wersja wtyczki Gradle i Android-gradle-plugin, która rozwiązuje te problemy.

build.gradle (najwyższy poziom)

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

POPRZEDNIA ODPOWIEDŹ

Jeśli wyłączysz AAPT2, po prostu ukrywasz prawdziwy problem.

Pamiętaj, AAPT1że w przyszłości może zostać usunięty, dlatego musisz z niego korzystać AAPT2. Właściwie przewodnik migracji nie jest trudny do naśladowania, ponieważ nie widzisz tak wielu zmian w tym samym czasie, w ten sposób jest to przyszłościowe.

Hierarchie elementów w manifeście systemu Android

W poprzednich wersjach AAPT elementy zagnieżdżone w nieprawidłowych węzłach w manifeście systemu Android są ignorowane lub powodują ostrzeżenie. Na przykład rozważ następujący przykład:

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

Dlatego musisz najpierw sprawdzić, czy naprawdę postępujesz zgodnie z poprawną strukturą Manifestu, jak pokazano poniżej.

Struktura pliku manifestu

Poniższy fragment kodu przedstawia ogólną strukturę pliku manifestu i każdego elementu, który może zawierać. Każdy element, wraz ze wszystkimi jego atrybutami, jest w pełni udokumentowany w osobnym pliku.

<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>
Enzokie
źródło
7
@Downvoters pls. wyjaśnij dokładnie, co jest nie tak w tej odpowiedzi, abym mógł się zająć?
Enzokie
Cześć Enzokie, mam ten sam wyjątek aapt2. To, co robię, to aktualizację compileSdkVersion z 21 na 26, a następnie awarię aapt2. Czy wiesz, gdzie znalazłem dziennik błędów?
Ninja
@Ninja możesz sprawdzić dziennik w konsoli Gradle, jest taki sam jak Logcat.
Enzokie
3
Nie podałeś rozwiązania, a jedynie teorię stojącą za jego przyczyną, która może, ale nie musi, mieć znaczenie.
Chris - Jr
1
@AhamadullahSaikat czy masz podobny stacktrace do OP?
Enzokie
20

Wystąpił błąd w moim układzie XML. Sprawdź więc układ XML pod kątem błędów.

Benjamin Ronneling
źródło
1
czy błąd nie powinien być w tym przypadku bardziej szczegółowy?
Ewoks
1
Niestety nie ma @Ewoks. Dokładny błąd jest generowany, jeśli w ciągach układu XML znajdują się znaki specjalne.
SH7890
13

Sprawdź zakładkę konsoli Gradle w Android Studio (domyślnie w prawym dolnym rogu). W moim przypadku były takie błędy:

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

Rozwiązałem problem z ustawieniem domu użytkownika gradle w innej lokalizacji bez białych lub specjalnych znaków:

C:\Android\.gradle

Możesz to skonfigurować, ustawiając „ Ścieżkę katalogu usługi ” w oknie dialogowym ustawień Gradle. W moim przypadku konieczne było usunięcie starego katalogu .gradle z poprzedniej lokalizacji i ponowne uruchomienie Android Studio.

Józefa
źródło
dla mnie problem polegał na tym, że nazwa pliku stała się zbyt długa podczas uruchamiania kompilacji jako usługi C: \ Windows \ System32 \ config \ systemprofile \ .gradle \ .......... ustaw GRADLE_USER_HOME = d: \. gradle naprawione problem (w moim przypadku jako zmienna środowiska systemowego)
Marc
Dziękuję, że pomogło mi to rozwiązać mój problem, ponieważ w ścieżce katalogu usług pojawiło się łacińskie „é”.
Jean-Sébastien Gervais
1
Po Android Studio 3.1 zakładka konsoli Gradle została usunięta. Jest teraz na karcie Budowanie. Kliknij przycisk `
`
8

Mój problem był spowodowany nazwą pliku obrazu kończącą się na .9.png . Zmieniłem zakończenie na .png i problem zniknął. Otrzymałem wskazówkę ze śladu stosu w konsoli Gradle: górny komunikat brzmiał „Wykonanie nie powiodło się dla zadania: aplikacja: mergeDebugResources ”, a na dole komunikat „com.android.builder. Png .AaptProcess $ NotifierProcessOutput.out”

Nie mogę się doczekać dnia, w którym Gradle wyświetli bardziej pomocne komunikaty o błędach ...

Samil
źródło
8

Właśnie miałem ten problem podczas próby użycia powiązania danych i zadeklarowania tagu układu. Wiem, że jest trochę za późno, ale ze względu na każdego, kto napotka ten problem, po tylu próbach rozwiązałem problem, że w układzie głównym, gdy nie używasz wiązania danych, powiedz na przykład to

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

usunąć

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"

i po prostu umieść go na swoim tagu układu ( to znaczy, jeśli używasz wiązania danych )

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

i miejmy nadzieję, że zadziała. android.enableAapt2=falsenie działa dla mnie, więc muszę usunąć wszystko i spróbować dowiedzieć się, dlaczego pojawia się błąd, gdy kładę układ znaczników danych i wykorzystania wiążący sposób wymyśliłem rozwiązanie. Mam nadzieję, że to pomoże

CodeAndWave
źródło
1
Dzięki stary! zaoszczędziłeś dla mnie godzinę.
Siamak SiaSoft,
1
Dzięki stary! Zaoszczędziłeś mi dwie godziny!
33t,
7

Mając tutaj ten sam problem. Jak zauważyła @Izabela Orłowska, problem ten jest najprawdopodobniej spowodowany przez znaki specjalne w ścieżce (pliki android grandle, zasoby itp.).

Dla mnie: posiadanie řínazwy folderu spowodowało wszystkie problemy. Upewnij się, że na ścieżkach nie ma żadnych znaków specjalnych. Wyłączenie AAPT2 jest tylko tymczasowym „rozwiązaniem”. Ścieżka projektu zawiera znaki spoza zestawu ASCII Android Studio

Jiří
źródło
5

Naprawiłem BŁĄD w trzech krokach
1. Sprawdziłem problem. ŹRÓDŁO
2. Podałem poprawny ciąg / tekst, to była przyczyna
3. Wyczyściłem projekt, znajdziesz go w BUILD.
Mój projekt

Bukunmi
źródło
1
Dzięki pomogło mi zidentyfikować moje problemy!
Apple Appala
5

Ponieważ w przyszłości obsługa AAPT (1) zostanie wycofana, dobrze byłoby zidentyfikować przyczynę zgłoszonego błędu.
Czy możesz podać zawartość pliku \ app \ src \ main \ res \ layout \ topic_view_header.xml? Ze znaków zapytania wynika, że ​​używasz znaków spoza zestawu ASCII, z którymi AAPT2 nadal ma pewne problemy. Jeśli rzeczywiście są to znaki spoza zestawu ASCII, postępuj zgodnie z błędem na https://issuetracker.google.com/68262818 .

Aktualizacja : problem został rozwiązany we wtyczce Android Gradle w wersji 3.2.0-alpha11 lub nowszej.

Izabela Orłowska
źródło
@Konrad 404, @ izabela nadal to samo wydanie na gradle 4.1
Ajay Pandya
@AjayPandya to wersja Gradle, musisz zaktualizować wersję wtyczki Gradle Androida. W pliku build.gradle projektu musisz zaktualizować, aby mieć classpath 'com.android.tools.build:gradle:3.2.0-alpha11'.
Izabela Orłowska
4

Ważna aktualizacja

Nie dodawaj tej linii do swojego projektu jako innych odpowiedzi. Ponieważ jest już rozwiązany w nowszych wersjach Gradle .

Możesz zaktualizować swoją wersję gradle kompilacji na poziomie projektubuild.gradle do najnowszej.

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

i gradle-wrapper.properties

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

To wszystko! Synchronizuj i uruchamiaj, Bingo!

Więcej informacji Dokumentacja systemu Android

Jeśli dodasz, otrzymasz ostrzeżenie android.enableAapt2=false

OSTRZEŻENIE: opcja „android.enableAapt2” jest przestarzała i nie powinna być już używana. Użyj „android.enableAapt2 = true”, aby usunąć to ostrzeżenie. Zostanie usunięty pod koniec 2018 roku.

Khemraj
źródło
To najlepsza odpowiedź jaką widziałem do tej pory, bo jeśli spróbujesz wyłączyć aapt2 to wyrzuca błąd w tym momencie pisania, jedyne co musiałem zrobić to zaktualizować gradle, a po aktualizacjach gradle powiedział mi jaki jest rzeczywisty błąd, sprawa w rzeczywistości nie pozwolił mi użyć gradle-4.8 w pliku gradle-wrapper.properties, musiałem użyć 4.9 najnowszej wersji, również w ścieżce zależności, musiałem użyć gradle: 3.3.0-alpha06
Kingston Fortune
Zaktualizuję oryginalny post, aby był łatwiejszy do śledzenia.
Kingston Fortune
W którym pliku gradle mam zapisać android.enableAapt2 = false ?
Niki
@nTri Szukaj tylko części odpowiedzi, nie musisz jej dodawać android.enableAapt2=false.
Khemraj
Cieszę się, że mogę Ci pomóc @nTri :)
Khemraj
2

Napotkałem również ten błąd. Dla mnie było to podczas zmiany docelowego SDK z 26 na 25. Udało mi się rozwiązać problem, zmieniając wersję zależności appcompat z

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

do

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

Umożliwi to kompilatorowi dostęp do atrybutów stylizacji, których obecnie nie może znaleźć. To faktycznie rozwiąże problem zamiast maskować prawdziwy problem, jak sugerował Enzokie.

hlbaker
źródło
2

W moim przypadku użyłem niewłaściwego kodu koloru, #CC00000który jest nieprawidłowy, ponieważ ma 7 cyfr, ale kod koloru powinien mieć 3 lub 6 lub 8 cyfr plus prefiks #

Suraj Vaishnav
źródło
2

Wyłączenie AAPT2 mght powoduje problem w dalszym rozwoju, W moim przypadku błąd został wygenerowany podczas tworzenia ikony aplikacji.

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

Rozwiązuję to, usuwając tę ​​linię

    android:viewportWidth="Infinity"
    android:viewportHeight="Infinity"
TABZ
źródło
2

Jak zauważyła @Izabela Orlowska: W moim przypadku problem wystąpił z powodu niektórych plików, których nie można było znaleźć w folderze pamięci podręcznej gradle. (System operacyjny Windows)

Domyślna ścieżka gradle znajdowała się w moim folderze użytkownika. ścieżka zawierała umlauty i spację. Przeniosłem folder gradle przez ustawienie GRADLE_HOMEi GRADLE_USER_HOMEzmienną środowiskową do jakiegoś nowo utworzonego folderu bez umlautów i spacji w ścieżce. To rozwiązało problem.

Robin J.
źródło
2

Wypróbowałem wszystko, co sugerowano tutaj i na wielu innych stronach, w końcu doszedłem do wniosku, że problem dotyczy Bitdefender dotyczy blokowania aapt ....

Jeśli masz zainstalowany Bitdefender, musisz włączyć dostęp do aplikacji aapt & aapt2 ".

Mam nadzieję, że to się przyda.

mcadamm4
źródło
2

Jeśli zauważyłeś ten błąd po próbie uruchomienia poszczególnych testów implementacji Androida lub klas testowych (klikając ikonę uruchamiania w rynnie) w projekcie Kotlin w Android Studio 3.0.1, możesz obejść ten błąd, uruchamiając zamiast tego pełny pakiet testowy (klikając prawym przyciskiem myszy pakiet testowy i wybierając opcję „Uruchom testy w ...”).

W Android Studio 3.0.1 występuje znany błąd, który powoduje, że IDE uruchamia testy implementacji Kotlin jako zwykłe testy JUnit, co spowodowało wyświetlenie komunikatu o błędzie OP na moim komputerze. Błąd jest śledzony na https://issuetracker.google.com/issues/71056937 . Wygląda na to, że został naprawiony w Android Studio 3.1 Canary 7.

Andrew Marshall
źródło
2

Jak sugerują inni,

android.enableAapt2=false

jest najczęstszym rozwiązaniem.

Ale w moim przypadku błąd był spowodowany różnymi wersjami w compileSdkVersion i buildToolsVersion .

Upewnij się, że główna wersja jest taka sama.

VickyAbishek
źródło
„compileSdkVersion i buildToolsVersion” Jest pierwszą rzeczą do sprawdzenia
vgulkevic
Nie używaj tego android.enableAapt2 = false,
Saurabh Gaddelpalliwar
Nie używaj tego android.enableAapt2 = false, to nie jest rozwiązanie. znajdź błąd, który jest dokładnie wyświetlany w polu Wyjście kompilacji, kliknij Przełącz widok, aby znaleźć dokładny błąd lub wyjątek użyj compileSdkVersion 28 buildToolsVersion "28.0.3" i postępuj zgodnie z instrukcją usuń lub zaktualizuj zewnętrzną bibliotekę lub zależności
Saurabh Gaddelpalliwar
2

Otrzymałem ten błąd, gdy nazwa projektu była bardzo długa, a lokalizacja, w której zapisałem projekt, została do niego dodana. Przeniesienie projektu do innej lokalizacji, tak aby nazwy plików nie przekraczały limitów systemowych, rozwiązało problem.

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
Tanusha Kamat
źródło
2

Ja też miałem taki problem, oryginał to taca systemowa mojego komputera ta ścieżka:

C: \ Użytkownicy \ 'pojawiają się znaki specjalne \ .android pojawił się w języku chińskim,

a teraz zmieniłem ścieżkę na:

C: \ Users \ hjc \ .android.

Przyczyną jest problem znaków specjalnych, z tego powodu pojawiają się problemy związane z appt2Exception

George Williams
źródło
Zostało to naprawione. Jeśli zaktualizujesz wtyczkę Android Gradle do wersji 3.2.0-alpha11 lub nowszej, będzie ona teraz działać ze znakami spoza ASCII w ścieżce pliku.
Izabela Orłowska
2

Miałem bardzo podobny problem. Zostało to rozwiązane przez usunięcie pamięci podręcznej Gradle (~ / .gradle / caches w systemie Linux), co zmusiło Android Studio do ponownego pobrania i ponownego wygenerowania wszystkiego.

happylego91
źródło
2

Zamknięcie projektu i ponowne uruchomienie Android Studio rozwiązało ten problem.

Podczas ponownego uruchamiania studio Android poinformowało, że musi pobrać brakujące zestawy SDK, więc gdy się tym zajmie, problem został rozwiązany.


źródło
2

Nie jestem pewien, czy już na to odpowiedziałeś, ale pozwól mi się zastanowić. Niedawno stanąłem twarzą w twarz z podobnym problemem i udało mi się wskazać dokładny problem z zakładki kompilacji obok logcat. Mój problem był spowodowany błędem rodziny fontów w kodzie XML. Używam najnowszej wersji Android Studio z aktualizacją z marca 2018 r.

Bestia77
źródło
2

Upewnij się, że używasz w src/main/res/rawkatalogu prawidłowych typów plików . W moim przypadku skopiowałem plik .mov wraz z kilkoma innymi plikami do mojego katalogu res / raw. Podejrzewam, że problem polegał na tym, że aapt próbował przetworzyć plik .mov i nie wiedział, co z nim zrobić.

Tash Pemhiwa
źródło
2

Miałem dokładnie ten sam problem: po aktualizacji do Android Studio 3.1.2 mój projekt nie mógł się skompilować z błędem AAPT2 informującym mnie o niektórych elementach rysunkowych, do których odwołuje się styles.xml że nie można znaleźć . Wyłączenie AAPT2 nie jest już rozwiązaniem, ponieważ to ustawienie jest przestarzałe i zostanie usunięte pod koniec 2018 r.

Culprit był pustą linią tuż przed dekleracją xml w zupełnie niepowiązanym layout.xmlpliku ... Więc layout.xmlplik zaczął się tak:

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

Usunięto pustą linię i wszystko znów działało jak urok. Niewiarygodne i mało prawdopodobne, ale prawdziwe.

Android Studio faktycznie wyświetliło ostrzeżenie, ponieważ plik nie zaczynał się od dekleracji xml (z powodu pustej linii). Ale ostrzeżenie jest widoczne tylko wtedy, gdy plik jest otwierany w edytorze.

Andy
źródło
2

Ten komunikat o błędzie (błąd AAPT2: sprawdź dzienniki, aby uzyskać szczegółowe informacje) nie jest pomocny, ponieważ nie informuje o prawdziwym problemie.

W moim przypadku było to spowodowane brakującym plikiem rysowalnym XML zasobu.

error: failed linking file resources.

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

Zorientowałem się tylko dlatego, że cofnąłem zmiany w pliku XML i tym razem otrzymałem bardziej pomocną wiadomość:

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)}
miłość na żywo
źródło
2

W moim przypadku prawdziwym problemem było to, że po wygenerowaniu zasobu obrazu w celu wygenerowania ikony mipmap programu uruchamiającego dla mojego projektu, wygenerowany plik ic_launcher_foreground.xml miał błąd wewnątrz (został nieprawidłowo wygenerowany). Brakowało zamykającego tagu xml na końcu pliku, brakowało </ vector> .

user3098756
źródło
2

Sprawdź i wypróbuj poniższe rzeczy. Problem powinien zostać rozwiązany.

  1. Przede wszystkim sprawdź swój dziennik od dołu okna kompilacji, czy nie ma błędów związanych z wyświetlaniem projektu. Jeśli pojawi się błąd, napraw je wszystkie. Teraz skompiluj i uruchom ponownie, napraw cały błąd. To wyeliminuje problem z AAPT2 bez zmiany wtyczki Android Gradle na 3.2.0.

  2. Po drugie, jeśli w dzienniku kompilacji nie ma żadnego błędu związanego z projektem, ale nadal wyświetla się błąd aapt2, możesz go naprawić, wykonując poniższe czynności.

Zaktualizuj wtyczkę Android Gradle w build.gradlepliku na poziomie projektu , jak poniżej:

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

Teraz zaktualizuj android.enableAapt2=true. Następnie sprawdź i skompiluj swój projekt.

Każdy z tych kroków powinien działać w celu rozwiązania problemów związanych z aapt.

0xAliHn
źródło
2

Jeśli używasz Kotlina, pojawia się błąd z powodu błędów w plikach xml. W kotlin bardzo trudno jest znaleźć błędy XML, kompilacja kończy się niepowodzeniem. Aby poznać dokładny dziennik błędów, uruchom poniższe polecenie w terminalu Android Studio i łatwo jest naprawić błędy.

./gradlew clean
./gradlew assemble
Naveen Kumar M
źródło
Użycie ich w terminalu faktycznie pokazuje dokładny błąd. W moim przypadku był to pusty atr. Dziękuję Ci!
Rami Jemli
2

Otrzymałem ten sam błąd Błąd AAPT2: sprawdź dzienniki, aby uzyskać szczegółowe informacje, i zastosowałem powyższe rozwiązania, zgodnie z najbardziej powszechnym rozwiązaniem, otworzyłem gradle.properties i dodaj wiersz

android.enableAapt2 = false

rozwiązania, ale otrzymałem błąd. Proces 'command' D: \ Android \ sdk \ Sdk \ build-tools \ 27.0.3 \ aapt.exe '' zakończył się z niezerową wartością wyjścia 1

Ale po wielu poszukiwaniach odkryłem, że w pliku xml układu jest problem polegający na tym, że powtarzałem wiersze w pliku xml układu, który jest jak poniżej:

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

Usuń powtarzające się wiersze z pliku xml i odbuduj projekt i gotowe.

hetuka kodekar
źródło
2

Sprawdź następujące rzeczy w swoim projekcie:

  • Upewnij się, że żaden plik XML nie ma spacji na początku pliku.

  • Upewnij się, że żaden plik do rysowania nie zawiera żadnych problemów, takich jak wielkie litery lub żadne specjalne symbole w nazwie.

  • Jeśli ciągle brakuje twojego aapt2.exe, przeskanuj cały komputer. Może to być wirus, który usuwa adb.exp lub aapt2.exe

Mam nadzieję, że otrzymasz rozwiązanie.

Pratik Butani
źródło