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?
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
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.
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" />
Ich habe den Fehler einfach durch Kopieren von AndroidManifest.xml In behoben
plattformen\Android\App\src\main \
zu
plattformen\Android \
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
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.
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
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:
dieser link hat geholfen
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.