Running "cordova build android" - nicht finden Attribut Android: fontVariationSettings und android: ttcIndex

66

Wenn ich cordova build android --buildConfig xxxx --release ausführen, Ich erhalte den folgenden Fehler:

%Vor%

Das Seltsame ist, dass ich zwei MacOS-Maschinen für die Kompilierung verwende, und ich bekomme diesen Fehler nur bei einem von ihnen für den gleichen Code.

Hier ist die Ausgabe von ./gradlew cdvPrintProps , die ich auf den zwei Maschinen bekomme:

%Vor%

Unten ist die Liste der verwendeten Plugins:

%Vor%

Wie kann ich dieses Problem beheben?

    
Stéphane Padovani 07.03.2018, 22:50
quelle

14 Antworten

73

Fügen Sie Folgendes in build-extra.gradle

ein %Vor%     
helmson helmson 08.03.2018, 13:46
quelle
33

Google hat die neue Version 28.0.0-alpha1 von com.android.support:support-v4 veröffentlicht, die zwei neue Attribute hinzufügt (android: fontVariationSettings und android: ttcIndex). Einige der Plugins verwenden die neuesten Android-Support-Bibliotheken, was zu unerwünschten Inkompatibilitäten führt.

Option 1: Installieren Sie das cordova-android-support-gradle-release -Plugin.

Gut dokumentiertes Plugin, das "verschiedene Versionen der Android-Support-Bibliotheken, die von anderen Plugins spezifiziert wurden, auf eine bestimmte Version ausrichtet". Getestet ohne destruktives Verhalten.

%Vor%

Lesen Sie die Dokumentation für einen vollständigen Satz von Optionen: Readme

Option 2 : Fügen Sie das nächste Code-Snippet in build.gradle unter plattformen / android

hinzu %Vor%

Warnung: Code in build.gradle wird überschrieben, wenn Sie die Android-Plattform entfernen / hinzufügen. Wenn Sie das Plugin aus irgendeinem Grund nicht verwenden möchten oder irgendwie nicht für Sie arbeiten, erstellen Sie stattdessen einen Hook und überschreiben Sie die Datei jedes Mal. Überprüfen Sie den 2. Kommentar hier .

Wenn das Problem hartnäckig ist, können Sie versuchen:

%Vor%

ODER

Stellen Sie sicher, dass auf dem getesteten Gerät keine vorherige Version der App installiert ist , da Sie beim Versuch, die bestehende Version zu downgraden, einen mehrdeutigen Fehler erhalten: "INSTALL_FAILED_VERSION_DOWNGRADE" und "UnhandledPromiseRejectionWarning: Nicht behandelte Versprechen Ablehnung"

    
Andrew Radulescu 09.03.2018 19:24
quelle
28

Derselbe Fehler passiert mir. Anscheinend wurde eine neue Version der com.android.support:support-v4 -Bibliothek veröffentlicht, und das Plugin, das ich verwende, definiert com.android.support:support-v4:+ als Abhängigkeit in plugin.xml . Das Zeichen + bedeutet, dass es die neueste Version (28.0.0) erhält, die anscheinend mit anderen Plugins nicht kompatibel ist.

Ich konnte eine Entwicklungsversion erstellen, indem ich alle Plugin-Abhängigkeiten von com.android.support:support-v4:+ auf com.android.support:support-v4:27.1.0 ändere. Außerdem habe ich ionic cordova platform remove android und ionic cordova platform add android ausgeführt. Hoffe es hilft, zumindest für die Entwicklung.

    
avmatte 08.03.2018 02:27
quelle
16

Wenn Sie wirklich nur eine schnelle Lösung für dieses Problem benötigen, können Sie versuchen, die folgenden Zeilen in Ihre platform / android / build.gradle-Datei einzufügen:

%Vor%

Wie auch immer, das Einstellen der Version ist keine nachhaltige Lösung.

    
stu 08.03.2018 12:42
quelle
10

Es ist seltsam, aber es funktioniert, wenn ich die folgenden Zeilen mit den gleichen Versionen hinzufüge.

Dies sind meine verwandten Zeilen in der Datei platforms/android/build.gradle :

%Vor%

In meinem Projekt wurde das Problem durch das Plugin 'cordova-plugin-crosswalk-webview' verursacht.

    
Muhammed Tanrıverdi 08.03.2018 13:18
quelle
7

Ich habe den gleichen Fehler, aber nicht in Cordova Build. Eine neue Version von com.android.support:appcompat-v7 und Abhängigkeiten. Aber die inkompatible Version ist im dritten Paket, abhängig von com.android.support:appcompat-v7 . So konnte ich das dritte Paket nicht mit @ avmatte Lösung.

Verwenden Sie @ Sai Teja , um ein inkompatibles Paket zu finden:

%Vor%

Dann repariere es mit:

%Vor%

Der obige Code erzwingt die Version der Abhängigkeiten.

    
doit 08.03.2018 06:11
quelle
7

Ich habe gerade dieses Problem behoben, indem ich zum Ordner platform / android gegangen bin und die Datei project.properties ) bearbeitet und com.android.support:support-v4:+ durch com.android.support:support-v4:27.1.0 ersetzt habe.

    
ahmdabos 08.03.2018 12:21
quelle
6

Ich hatte den gleichen Fehler. Habe eine komplette Recherche im Plugin-Verzeichnis für com.android.support:support-v4: + durchgeführt und durch einen statischen Versionscode ersetzt.

Für mich funktionierte com.android.support:support-v4:23.4.0 einwandfrei. Es gab keine Notwendigkeit, die Android-Plattform dann zu entfernen und neu hinzuzufügen.

    
cpro90 08.03.2018 09:57
quelle
5

Hier ist ein einfacher Weg, es zu beheben, der bestehen bleibt, wenn das Plattformverzeichnis neu erstellt wird und es nicht nötig ist, alle Plugins durchzugehen, um einen Täter zu finden. Erstellen Sie eine Datei build-extras.gradle mit diesen Inhalten:

%Vor%

Dann erstellen Sie die Datei after_platform_add/010_copy_build_extras.js mit folgendem Inhalt:

%Vor%

Erstelle nun die Android-Plattform neu und es wird die gepinnte Support-Bibliothek verwenden.

    
Brad Pitcher 08.03.2018 21:46
quelle
4

Einige Ihrer Bibliotheken sollten

verwenden %Vor%

Finden Sie mit

heraus, welches das ist %Vor%

Und fügen Sie diese Bibliothek als ein Modul hinzu, wenn sie nicht eine bestimmte Version in ihrem neuesten Update verwendet (Auch ein Problem in dieser Bibliothek aufwerfen!;))

Danke an @avmatte!

    
Sai Teja 08.03.2018 04:12
quelle
4

Ich hatte gestern dasselbe Problem wie aus heiterem Himmel. Es begann zufällig, aber wenn man es liest, sieht es so aus, als ob es mit einem Update von @ cpro90 zu tun hat. Allerdings habe ich versucht und konnte nicht finden, wo die notwendigen manuellen Änderungen vorzunehmen.

Schließlich habe ich festgestellt, dass das Problem von meinem cordova-plugin-crosswalk-webview-Plugin verursacht wurde. Auf GitHub habe ich heute Morgen das Problem auf dem Plugin repro gefunden hatte mehr als 520 Ansichten zum Mittagessen.

@UNUMObile schlug Folgendes in der Datei build.gradle vor, um eine frühere Version global zu erzwingen:

%Vor%

Das hat sofort für mich funktioniert und kann anderen mit anderen Plugins helfen, die ebenfalls von 'com.android.support:support-4:<28 abhängig waren. Die neue Version 28 scheint das Problem zu sein.

Ich hoffe, das hilft jemandem, sich vorwärts zu bewegen.

    
Chris Scutt 08.03.2018 21:24
quelle
2

Fügen Sie in Ihrer build.gradle -Datei

hinzu %Vor%

Und in Ihrer project.properties Datei ändern Sie cordova.system.library.3 in cordova.system.library.3=com.android.support:support-v13:27.+ .

    
aman 13.03.2018 07:16
quelle
0

Ein weiterer Ansatz mit derselben Lösung ist das Erstellen eines Hakens. Es ist persistent (nach der Neuinstallation der Plattform), Sie können es festschreiben, und es muss keine Plattform neu hinzugefügt werden.

  

% project% \ scripts \ android \ android-support-version.js

%Vor%

Init-Konfiguration einhängen

  

% project% \ config.xml

%Vor%

Installieren Sie die fs-Abhängigkeit für Ihr Projekt:

  

npm i fs --save-dev

Build ausführen:

  

cordova bauen Android

    
pavelety 11.03.2018 23:47
quelle
-1

Es ist ein doppelter Eintrag in values.xml in einem Ordner mit dem Namen support-compat-28.0.0-alpha1.aar .

Sie finden diese Datei unter Windows unter \users\YOURUSERID\.gradle\caches\transforms-1\files-1.1

Wenn Sie sich in diesem Ordner befinden, müssen Sie einige Stufen tiefer auf values.xml gehen.

Suchen Sie in dieser Datei nach einem Element <declare-styleable name="FontFamilyFont> .

Entfernen Sie in diesem Element die VIER Zeilen mit android: .

Nachdem ich diese Änderung vorgenommen habe, kann ich ohne Fehler wieder aufbauen.

    
Henk Kelder 08.03.2018 22:47
quelle

Tags und Links