Ausführen von "cordova build android" - Attribut android: fontVariationSettings und android: ttcIndex konnte nicht gefunden werden

103

Beim Ausführen cordova build android --buildConfig xxxx --releasewird folgende Fehlermeldung angezeigt:

ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

Das Seltsame ist, dass ich zwei MacOS-Maschinen für die Kompilierung verwende und diesen Fehler nur auf einer von ihnen für denselben Code erhalte.

Hier ist die Ausgabe von ./gradlew cdvPrintPropsIch bekomme auf den beiden Maschinen:

:cdvPrintProps
cdvCompileSdkVersion=26
cdvBuildToolsVersion=27.0.3
cdvVersionCode=null
cdvMinSdkVersion=21
cdvBuildMultipleApks=true
cdvReleaseSigningPropertiesFile=release-signing.properties
cdvDebugSigningPropertiesFile=null
cdvBuildArch=null
computedVersionCode=152045989
computedArmv7VersionCode=1520459892
computedX86VersionCode=1520459894

Unten ist die Liste der verwendeten Plugins:

$ cordova plugins list
cordova-custom-config 5.0.2 "cordova-custom-config"
cordova-fabric-plugin 1.1.10 "cordova-fabric-plugin"
cordova-open-native-settings 1.5.0 "Native settings"
cordova-plugin-app-event 1.2.1 "Application Events"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-console 1.1.0 "Console"
cordova-plugin-crosswalk-webview 2.4.0 "Crosswalk WebView Engine"
cordova-plugin-datepicker 0.9.2 "DatePicker"
cordova-plugin-device 2.0.1 "Device"
cordova-plugin-email 1.2.7 "EmailComposer"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-secure-storage 2.6.8 "SecureStorage"
cordova-plugin-splashscreen 4.1.0 "Splashscreen"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova.plugins.diagnostic 3.9.2 "Diagnostic"
de.appplant.cordova.plugin.local-notification 0.8.5 "LocalNotification"
ionic-plugin-keyboard 2.2.1 "Keyboard"

Wie kann ich dieses Problem beheben?

Stéphane Padovani
quelle
Dieses Problem ist mir auch den ganzen Tag passiert. Ich habe es auf ein Plugin eingegrenzt, das ich benutze. Allerdings benötige ich dieses Plugin für meine Anwendungen. Welche Plugins verwendest du?
Chris R
@ ChrisRitten Hallo, ich habe den obigen Beitrag mit der Plugin-Liste abgeschlossen. Grüße.
Stéphane Padovani
1
Keine der Antworten hilft, seit einem Tag damit zu kämpfen.
Khusrav
Wenn dies helfen kann freakyjolly.com/…
Code Spy

Antworten:

106

Fügen Sie einfach Folgendes in build-extras.gradle ein

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}
Helmson Helmson
quelle
Vielen Dank! Dies ist ein vernünftiger Ansatz für Cordova, um eine Version zu pinnen.
Hozuki
10
Ich halte meinen Plattformordner von der Quellcodeverwaltung fern. Um dies zu erreichen, habe ich build-extras.gradlein meinem Projektstamm Code hinzugefügt, um ihn in hooks\after_platform_add gist.github.com/charlesbedrosian/…
cbedrosian
8
Ich habe keine solche Datei: "build-extras.gradle"
Joe Sleiman
3
Für andere Benutzer von phonegap-build. Die Antwort ist cordova-android-support-gradle Release forums.adobe.com/thread/2462835
catu
7
Beachten Sie zusätzlich zu @ StéphanePadovanis Kommentar, dass er im Ordner / platform / android / app von Cordova Android 7.0.0
Will Kru
83

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-Unterstützungsbibliotheken, 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 von anderen Plugins angegebenen Android-Support-Bibliotheken an einer bestimmten Version ausrichtet". Ohne destruktives Verhalten getestet.

cordova plugin add cordova-android-support-gradle-release --fetch

In der Dokumentation finden Sie alle Optionen: Readme

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

/** 
IMPORTANT - Manually added
Problem: 8 March 2018 - Google released version support-v4:28.0.0-alpha1 
which breaks the project with following error: unable to find attribute 
android:fontVariationSettings and android:ttcIndex

Effect: Force a specific version of the library
*/

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:27.1.0'
}

Warnung: Der 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 funktionieren, erstellen Sie stattdessen einen Hook und überschreiben Sie die Datei jedes Mal. Überprüfen Sie den 2. Kommentar hier .

Wenn das Problem weiterhin besteht, können Sie Folgendes versuchen:

cordova platform rm android
cordova platform add android

ODER

Stellen Sie sicher, dass auf dem getesteten Gerät keine frühere Version der App installiert ist, da beim Versuch, die vorhandene Version herunterzustufen, ein mehrdeutiger Fehler angezeigt wird: "INSTALL_FAILED_VERSION_DOWNGRADE" und "UnhandledPromiseRejectionWarning: Nicht behandelte Ablehnung von Versprechungen"

Andrew Radulescu
quelle
2
Beste Antwort. Die Installation des Plugins ist die beste und einfachste Lösung dafür. Der Fehler wird automatisch behoben, sobald das Plugin hinzugefügt wird. Einfach. Sie müssen nicht herumspielen, um Dateien im Plattformordner zu erstellen, die beim Entfernen und Hinzufügen von Plattformen manuell nachverfolgt werden müssen.
Neel
Option 1 hat bei mir funktioniert. Es ist äußerst frustrierend, dass Cordova ihre Abhängigkeiten nicht streng definiert. Ich weiß nicht, warum sie das tun. Lassen Sie mein Projekt vor Wochen in einem funktionierenden Zustand, kehren Sie zurück, um eine Debug-Version neu zu kompilieren, und plötzlich treten Fehler auf.
Norman Breau
Fehler beim Abrufen des Plugins Cordova-Android-Support-Gradle-Release über die Registrierung
Netshark1000
@ netshark1000 Dieses Problem hängt nicht mit dem Plugin zusammen, sondern mit Ihrer package.json oder einer Projektkonfiguration. Schauen Sie in die package.json und stellen Sie sicher, dass das Plugin noch nicht installiert ist. Wenn vorhanden, rufen Sie einfach ionic cordova an und bereiten Sie das Nachladen vor. Wenn das Problem weiterhin besteht, entfernen Sie Plattformen, den Plugins-Ordner und fügen Sie die Plattformen erneut hinzu. Dies sollte den Trick tun.
Andrew Radulescu
1
Perfekt, # 1 hat mich gerettet
GBarroso
31

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

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

avmatte
quelle
Vielen Dank. Meiner Seite nach habe ich eine Sache geändert, Gradle-Dateien des Plugins im Android-Plattform-Verzeichnis. Bitte überprüfen Sie, ob es nicht mit @avmatte Lösung funktioniert.
Sandun Priyanka
Ich arbeite nicht für mich, aber ich mache das Gleiche, aber wenn ich die Android-Plattform erneut hinzufüge, kehrt die Version zu v4: 24.1.1+ zurück, selbst wenn ich sie auf 27.1.0 entfernt habe
Joe Sleiman
Ich habe diesen Fehler: com.android.support:support-v4:27.1.0 konnte nicht gefunden werden.
Joe Sleiman
28

Ich habe gerade dieses Problem behoben , indem auf die Plattform / android - Ordner und bearbeiten die gehen project.properties) Datei und ersetzt com.android.support:support-v4:+mit com.android.support:support-v4:27.1.0.

Ahmed
quelle
21

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

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

Das Einstellen der Version hier ist jedoch keine nachhaltige Lösung.

stu
quelle
Schön. Das hat es für mich getan, aber ja, ich denke, das geht verloren, wenn ich die Plattform entferne und hinzufüge oder auf einem neuen Computer installiere.
Gurnard
Musste dies in / platform / android / app setzen; wie Sie sagen, es ist nicht nachhaltig
user542319
@stu du hast in deiner Antwort nicht gesagt, wo ich diesen Code unten einfügen soll?
Sagte Mohd Ali
15

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

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

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
  // SUB-PROJECT DEPENDENCIES START
  debugCompile(project(path: "CordovaLib", configuration: "debug"))
  releaseCompile(project(path: "CordovaLib", configuration: "release"))
  compile "com.android.support:support-v4:26.+"
  compile "com.android.support:appcompat-v7:26.+"
  // SUB-PROJECT DEPENDENCIES END
}

// ADDED THESE LINES
configurations.all {
  resolutionStrategy.force 'com.android.support:support-v4:26+'
}

In meinem Projekt trat das Problem aufgrund des Plugins 'cordova-plugin-crosswalk-webview' auf.

Muhammed Tanrıverdi
quelle
Vielen Dank, dies hat wirklich beim erneuten Herunterladen der Abhängigkeiten geholfen, die zuvor durch das Update überschrieben wurden. Obwohl davon abgeraten wird, Ihr build.gradle zu bearbeiten, habe ich frühere Lösungen ohne Erfolg ausprobiert
Nico
8

Ich habe den gleichen Fehler, aber nicht in Cordova Build. Eine neue Version von com.android.support:appcompat-v7und Abhängigkeiten. com.android.support:appcompat-v7Aber die inkompatible Version befindet sich im dritten Paket, das von .So kann ich das dritte Paket nicht mit der @ avmatte -Lösung reparieren .

Verwenden Sie die Lösung von @ Sai Teja , um ein inkompatibles Paket zu finden:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

Dann behoben mit:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-compat:{the_same_version}'
        force 'com.android.support:appcompat-v7:{the_same_version}'
        force 'com.android.support:support-core-utils:{the_same_version}'
        force 'com.android.support:support-core-ui:{the_same_version}'
        force 'com.android.support:support-fragment:{the_same_version}'
        force 'com.android.support:support-annotations:{the_same_version}'
        ...
    }
}

Über dem Code wird die Abhängigkeitsversion erzwungen.

Tu es
quelle
8

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

Für mich hat com.android.support:support-v4:23.4.0 einwandfrei funktioniert. Es war dann nicht nötig, die Android-Plattform zu entfernen und erneut hinzuzufügen.

cpro90
quelle
8

Hier ist eine einfache Möglichkeit, das Problem zu beheben, das beim Neuerstellen des Plattformverzeichnisses bestehen bleibt. Sie müssen nicht alle Plugins durchgehen, um einen Schuldigen zu finden. Erstellen Sie eine Datei build-extras.gradlemit folgenden Inhalten:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

Erstellen Sie dann die Datei after_platform_add/010_copy_build_extras.jsmit folgendem Inhalt:

#!/usr/bin/env node

var fs = require('fs');

var rootdir = process.argv[2];
var android_dir = `${rootdir}/platforms/android`;
var gradle_filename = 'build-extras.gradle';
var gradle_file = `${rootdir}/${gradle_filename}`;
if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
  fs.createReadStream(gradle_file)
    .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
}

Erstellen Sie nun die Android-Plattform neu und sie verwendet die angeheftete Support-Bibliothek.

Brad Pitcher
quelle
Die Unterverzeichnis-Hooks sind veraltet. Verwenden Sie config.xml<platform name="android"> <hook src="hooks/copy_build_extras.js" type="before_build" /> </platform>
Exlord
ok getestet und dein Code scheint ungültig zu sein process.argv[2]ist buildfür mich!
Exlord
Sorry @Exlord Ich denke, es wird einige Anpassungen erfordern, um mit dem neuen Style-Hook zu arbeiten, aber ich verwende derzeit genau diesen Code mit einem Unterverzeichnis-Hook und es funktioniert großartig.
Brad Pitcher
8

Ich habe die Lösung im Ionic Forum gefunden, die die einzige Lösung war, die für mich funktioniert hat:

Lauf:

ionic cordova plattform rm android

Lauf:

ionische Cordova-Plattform hinzufügen [email protected]

Lauf:

ionisches Cordova-Plugin Cordova-Plugin-Android hinzufügen

Lauf:

ionisches Cordova-Plugin Cordova-Plugin-AndroidX-Adapter hinzufügen

Stellen Sie sicher, dass Ihre gradle.properties:

cdvMinSdkVersion = 19

Stellen Sie sicher, dass Ihr build.gradle Folgendes enthält:

project.ext { defaultBuildToolsVersion="28.0.3" //String 

defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4 

defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default 

defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default }

Stellen Sie sicher, dass Ihre config.xml Folgendes enthält:

<preference name="android-minSdkVersion" value="19" />

von: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7

Dies wird auch in der Stackoverflow-Antwort behandelt: https://stackoverflow.com/a/56656680/839691

alpere
quelle
Dies ist die einzige Lösung, die auf meiner alten Ionic 3App funktioniert . Danke dir!
Sampath
Verwenden von ionic 3: Dies hat mir geholfen, dieses Problem zu beheben, aber jetzt ist ein anderes Problem aufgetreten. * Was ist schief gelaufen? Die Ausführung der Aufgabe ': app: compileDebugJavaWithJavac' ist fehlgeschlagen. > Kompilierung fehlgeschlagen; Weitere Informationen finden Sie in der Compilerfehlerausgabe.
Prem Sanil
1
@PremSanil Sie sind sich nicht sicher, ob dies Ihr Problem verursacht, stellen Sie jedoch sicher, dass Sie die Build-Tools 28.0.3 im SDK-Manager von Android Studio heruntergeladen haben.
Alpere
@alpere Ich musste die Node-Version auf v10.17.0 aktualisieren und nicht verwendete Plugins entfernen. Die Arbeit begann (unter Verwendung des blauen Ionic 3-Themas)
Prem Sanil
5

Einige Ihrer Bibliotheken sollten verwenden

com.android.support:support-v4:+

Finden Sie, welches ist, mit

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

Und fügen Sie diese Bibliothek als Modul hinzu, wenn sie in ihrem neuesten Update keine bestimmte Version verwendet (werfen Sie auch ein Problem in dieser Bibliothek auf !;))

Danke an @avmatte!

BEARBEITEN: Sie können auch gradle anfordern, um die Bibliotheksversion zu erzwingen

ext {
    supportVersion {latest_version_here}
} // In root project.gradle

configurations.all {
    resolutionStrategy {
        force "com.android.support:support-v4:$supportVersion"
    }
}
Teja Konjeti
quelle
4

Ich hatte gestern aus heiterem Himmel das gleiche Problem. Es begann zufällig, aber nach dem Lesen sieht es so aus, als hätte es mit einem Update zu tun, wie oben von @ cpro90 erwähnt. Ich habe jedoch versucht und konnte nicht finden, wo ich die erforderlichen manuellen Änderungen vornehmen kann.

Schließlich stellte ich fest, dass das Problem durch mein Cordova-Plugin-Crosswalk-Webview-Plugin verursacht wurde. Auf GitHub habe ich das Problem heute Morgen im Plugin Repro gefunden und es hatte bis zum Mittagessen über 520 Aufrufe.

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

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:24.0.0'
}

Dies funktionierte sofort für mich 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, vorwärts zu kommen.

Chris Scutt
quelle
4

Nur ein paar Tipps für Kotlin-Entwickler:

Wenn Sie diesen Antworten hier folgen, sind Sie sicher, dass Sie keine support-v4Bibliothek in Ihrem Projekt haben, aber Sie sehen diesen Fehler immer noch. Schauen Sie sich die ktxBibliothek an.

Ich habe gerade herausgefunden, dass ich die neueste 1.0.0-alpha1Version für die ktx-Bibliothek verwende, und dieser Fehler zeigt sich. Nachdem ich wieder zur Version gewechselt habe 0.3, ist jetzt alles wieder normal.

Anthonyeef
quelle
Fehler beim Beheben von: androidx.fragment: fragment-ktx: 0.3, wenn ich zu '1.0.0-alpha1' wechsle, tritt dasselbe Problem auf.
Mahmood Ali
@ MahmoodAli werfen Sie einen Blick auf die anderen Abhängigkeiten? Ich poste nur meine Situation und Google lässt möglicherweise auch das andere Paket das Gleiche falsch machen.
Anthonyeef
@ MahmoodAli, danke für den Link, aber ich denke, der Großteil des Projekts beginnt mit der Verwendung von ktx lib, bevor Androidx im diesjährigen Google IO angekündigt wird. Es ist schwer zu vermeiden, ktx mit der Support-Bibliothek zu mischen ... Vielleicht sollte die Migration zu Androidx die endgültige Lösung für diese Art von Ausnahme sein.
Anthonyeef
4

Fügen Sie die folgenden Zeilen zu Ihren Plattformen / android / build.gradle hinzu

  configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
        }
    }

Wenn immer noch Probleme auftreten, führen Sie diesen Befehl aus:

cordova plugin add cordova-android-support-gradle-release --fetch
Karan Bhatia
quelle
3

In Ihrer build.gradleDatei hinzufügen

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

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

ein Mann
quelle
2

Für Phonegap Build - Benutzer, wie @catu in einem Kommentar erwähnt, können Sie versuchen , dieses Plugin , das Ziel ist Build - Ausfälle , indem verschiedene Versionen der Support - Bibliotheken zu verhindern .

user276648
quelle
1

Beheben Sie dieses Problem einfach, indem Sie die folgenden Codezeilen in die Datei platform / android / app / build.gradle direkt nach dem Block buildscript {} einfügen:

configurations.all {
    resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
    }
}
Kush
quelle
1

Ich hatte das gleiche Problem nach der Installation des Cordova-Plugin-Datei-Opener2-Plugins. Es wurde nach dem Ausführen entfernt: Option 1: Installieren Sie das Cordova-Android-Support-Gradle-Release-Plugin. Cordova Plugin Cordova-Android-Support-Gradle-Release hinzufügen - holen

DineshS
quelle
0

Ein weiterer Ansatz mit derselben Lösung ist das Erstellen eines Hakens. Es ist dauerhaft (nach der Neuinstallation der Plattform), Sie können es festschreiben und es ist nicht erforderlich, die Plattform erneut hinzuzufügen.

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

#!/usr/bin/env node

var fs = require('fs');

function replace_strings_in_file(filename, replacementsObject) {
  if (fs.existsSync(filename)) {
    var data = fs.readFileSync(filename, 'utf8');
    Object.keys(replacementsObject).forEach(function (to_replace) {
      var replace_with = replacementsObject[to_replace];
      data = data.replace(to_replace, replace_with);
    });
    console.log(data);
    fs.writeFileSync(filename, data, 'utf8');
  } else {
    console.log('file not found');
  }
}

module.exports = function (context) {
  var rootdir = process.argv[2];
  if (rootdir) {
    replace_strings_in_file("platforms/android/project.properties", {'com.android.support:support-v4:+': 'com.android.support:support-v4:27.1.0'});
    console.log('com.android.support version fix');
  }
};

Init Hook in Konfiguration

% project% \ config.xml

...
<platform name="android">
  <hook src="scripts/android/android-support-version.js" type="before_build" />
  ...

Installieren Sie die fs-Abhängigkeit zu Ihrem Projekt:

npm i fs --save-dev

Build ausführen:

Cordova Build Android

pavelety
quelle
0

SUPER EINFACHER UND RICHTIGER WEG, ES ZU LÖSEN!

Aktualisieren Sie einfach das SDK und fügen Sie die neueste Version von Android hinzu ... und starten Sie den Computer neu! Getan...

Jetzt haben wir Zeit, über Autos und Sport zu sprechen ...

Ari Waisberg
quelle
0

Ich hatte das gleiche Problem und keine der angegebenen Lösungen funktionierte für mich. Die Installation der neuesten Version der Android SDK Build-Tools (27.0.3) hat mein Problem behoben.

Daniel W.
quelle
0

Lösungslink

Dies liegt am kompatiblen Plugin. Entfernen Sie dieses Plugin, wenn Sie eine ältere Version (weniger als 1.2.0 ) haben, und setzen Sie [email protected]

cordova plugin rm cordova-plugin-kompatibel --force

Cordova Plugin [email protected] hinzufügen

Cordova Plattform RM Android

ionische Cordova-Plattform hinzufügen [email protected]

Ich arbeite an meinem Fall. Vielen Dank :)

Pranay Kumar
quelle
0

Aktualisierungen der Antwort von @Brad Pitcher:

hooks/copy_build_extras.js

#!/usr/bin/env node

var fs = require('fs');

module.exports = function (context) {
  var rootdir         = context.opts.projectRoot;
  var android_dir     = `${rootdir}/platforms/android`;
  var gradle_filename = 'build-extras.gradle';
  var gradle_file     = `${rootdir}/${gradle_filename}`;
  if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
    fs.createReadStream(gradle_file)
      .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
  }
};

config.xml

<platform name="android">
    <allow-intent href="market:*" />
    <hook src="hooks/copy_build_extras.js" type="before_build" />
</platform>

build-extras.gradle im root dir

configurations.all {
  resolutionStrategy {
    force 'com.android.support:support-v4:27.1.0'
  }
}
Exlord
quelle
0

Ich bin auf dieses Problem mit reag native gestoßen und es wurde durch die folgenden Zeilen in meinem verursacht android/app/build.gradle:

implementation ("com.google.android.gms:play-services-base:+") {
  force = true;
}
implementation ("com.google.android.gms:play-services-maps:+") {
  force = true;
}

etc...

Anscheinend löste sich dieses + zu einer neuen 17.0.0-Version auf, die meinen Build kaputt machte.
Das Ändern von + auf 16.0.0 (oder 16.0.1 für Play-Services-Base) hat mein Problem gelöst

Uri Klar
quelle
0

Dieses Problem hatte mich eine Woche lang umgebracht.

Letztendlich bin ich am gelandet [email protected]

Ich habe mich verändert, android/project.propertiesindem ich mich verändert habe

#cordova.system.library.3=com.google.android.gms:play-services-analytics:+
cordova.system.library.3=com.google.android.gms:play-services-analytics:15+

Diese Änderung brachte mich schließlich aus der Dunkelheit der ttcIndex-Fehlermeldung heraus.

Dann habe ich diesen Fehler bekommen

com.android.builder.dexing.DexArchiveBuilderException: 
  com.android.builder.dexing.DexArchiveBuilderException

Der Fehler war anscheinend auf ein Problem mit der Java-Version zurückzuführen. Ich habe mich dann android/build.gradlemit der folgenden Änderung geändert

compileOptions {
  #sourceCompatibility JavaVersion.VERSION_1_6
  #targetCompatibility JavaVersion.VERSION_1_6
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

Beachten Sie auch, dass ich das cordova-android-support-gradle-releasePlugin installiert habe, aber keine Ahnung habe, ob ich es brauche.

Austin Hutchison
quelle
-1

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

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

Sobald Sie sich in diesem Ordner befinden, müssen Sie einige Ebenen tiefer in die Datei 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 erstellen.

Henk Kelder
quelle