wake-up-neo.com

Cordova erstellt keine AndroidManifest.xml

Ich arbeite in Cordova und AndroidStudio, um Android/iOS-Apps zu erstellen. Alles funktionierte gut, bis ich gestern mein Cordova auf 8 aktualisiert habe. Ich habe auch Node auf den neuesten Stand gebracht. Wenn ich ein Cordova-Projekt erstelle und die Android-Plattform hinzufüge. Es ergibt sich eine völlig andere Verzeichnisstruktur. Ich kann keine assets-, res- und src-Ordner im Plattformverzeichnis des Projekts D:\testApp1\platforms\Android sehen. Noch wichtiger ist, dass das obige Verzeichnis AndroidManifest.xml fehlt, wodurch das admob-Plugin fehlschlägt, um hinzugefügt zu werden.

Hier ist der Fehler, den ich beim Hinzufügen des Plugins bekomme:

Fehler beim Installieren von 'cordova-plugin-admobpro': Fehler: ENOENT: Keine solche Datei oder Verzeichnis, öffnen Sie 'D:\Projects\testApp1\platform\Android\AndroidManifest.xml' bei Object.fs.openSync (fs.js: 646: 18) at Object.fs.readFileSync (fs.js: 551: 33) at Object.parseElementtreeSync (D:\Projekte\testApp1\platform\Android\cordova\node_modules\cordova-common\src\util\xml-helpers.js: 180: 27) unter dem neuen AndroidManifest (D:\Projects\testApp1\platform\Android\cordova\lib\AndroidManifest.js: 29: 20) at AndroidProject.getPackageName (D:\Projekte\testApp1\platform\Android\cordova\lib\AndroidProject.js: 99: 12) unter Api.addPlugin (D:\Projects\testApp1\platform\Android\cordova\Api.js: 223: 57) at handleInstall (C:\Benutzer\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js: 594: 10) unter C:\Benutzer\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js: 357: 28 at _fulfilled (C:\Benutzer\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js: 787: 54) at self.promiseDispatch.done (C:\Benutzer\Rao\AppData\Roaming\npm\Knotenmodule\Cordova\Knotenmodule\Cordova-Lib\Knotenmodule\q\q.js: 816: 30)

Kann jemand bitte helfen?

23
Kamran

Endgültige Bearbeitung:

cordova-Android 7.1.4 ist nicht verfügbar, es sollte die meisten dieser Probleme beheben.

bearbeiten:

Während die Leute die Antwort immer auf dem neuesten Stand halten, werde ich mehr Details über das Problem geben.

Das Problem ist nicht wirklich das Schreiben des Plugins auf dem AndroidManifest.xml oder dem config.xml. Es stimmt, dass sich der Speicherort geändert hat und Plugins den Pfad aktualisieren sollten. Dies ist jedoch nicht zwingend erforderlich, und Cordova kümmert sich um die neuen Pfade.

Das Problem sind einige Plugins, die source-file-Tag für Dinge verwenden, die kein Quellcode sind. (Das heißt, es wird für das Kopieren von Bildern anstelle von resource-file-Tags verwendet.) Dadurch wird ein res-Ordner (oder eine lib) erstellt, der Cordova verwirrt. Dies lässt den Eindruck entstehen, dass es sich um ein altes Eclipse-Projekt handelt, während es tatsächlich ein Android-Studio-Projekt ist und danach sucht die Dateien an den alten Speicherorten, anstatt in die neuen Speicherorte zu suchen.

Dies wurde in Cordova-Android gepatcht und wird in der nächsten Version behoben. Die Problemumgehung besteht darin, mit dem source-file-Tag nach dem Plugin zu suchen und es mit dem resource-file-Tag zu aktualisieren

ALTE ANTWORT:

Es ist jetzt in app/src/main/AndroidManifest.xml.

Wenn das Plugin darauf schreibt, sollte es an der richtigen Stelle aktualisiert werden.

Lesen Sie die Veröffentlichung cordova-Android 7.0.0 Blogbeitrag

27
jcesarmobile

Cordova CLI v8.0 verwendet standardmäßig [email protected].

Da die meisten Cordova-Plugins [email protected] noch nicht unterstützen, können Sie auch die ältere Version verwenden, indem Sie die Version angeben:

cordova platform add [email protected]

Wenn Sie sich mit [email protected] wohl fühlen, können Sie auch auf ein Update von cordova-plugi-admobpro warten, um den [email protected] zu unterstützen. Es ist in Kürze verfügbar.

34
Raymond Xie

Fügen Sie in der config.xml-Datei des Cordova-Projekts im Abschnitt xml-Tag <platform name="Android"> das folgende Tag hinzu:

<resource-file src="platforms/Android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
8

Ich habe den Fehler einfach durch Kopieren von AndroidManifest.xml In behoben

plattformen\Android\App\src\main \ 

zu 

plattformen\Android \

2
JeffNhan

Ein Downgrade von 7.0 auf 6.4 hat den Trick für mich gemacht

cordova platform rm Android
cordova platform add [email protected]
cordova build
1
Solvik

Das Problem scheint zu bestehen, wenn Sie versuchen, gleichzeitig mit der lokalen Ausführung der App für Release zu erstellen. Ich stoppe die App auf localhost und baue dann zur Veröffentlichung auf. Problem gelöst.

0

Das hat bei mir funktioniert.

Fügen Sie in package.json cordova-Android version

 "cordova-Android": "~6.3.0"

Fügen Sie dann die Plattform hinzu

cordova platform add Android
0
Maheshvirus

Mein Problem war ein benutzerdefiniertes Plugin, das den libs-Ordner in platform\Android erstellt. Das ließ Cordova glauben, dass mein Projekt ein Eclipse-Projekt war und suchte daher nach dem AndroidManifest an der alten Stelle.

Wenn Sie zu Cordova Android +7.0.0 wechseln, stellen Sie sicher, dass die Plattformen\Android nicht die folgenden Elemente enthalten:

  • AndroidManifest.xml 
  • libs
  • res

dieser link hat geholfen

0
  1. Stellen Sie zunächst sicher, dass das Plugin Cordova Android 7.0.0+ unterstützt
  2. Löschen Sie alle diese Ordner oder Dateien: ['AndroidManifest.xml', 'libs', 'res'] im Plattform-/Android-Stammverzeichnis. 

Cordova verwendet diese Dateien, um festzustellen, ob es sich bei Ihrem Projekt um ein Eclipse-Projekt handelt. Wenn sie vorhanden sind, wird Ihr Projekt als Eclipse-Projekt mit der alten Pfadstruktur behandelt. Einige Plugins können diese Dateien/Ordner in Ihrem Android-Ordner erstellen.

0
johnny