Ich bin neu bei Apache Cordova und Ich kann die Cordova "Hallo Welt" -Anwendung nicht auf Android anzeigen . Ich spreche über die Standardanwendung, die mit dem Befehl "cordova create" vom CLI abgerufen wurde.
Ich habe die Dokumentation gelesen und alles nach Bedarf installiert (Node.js, npm, Cordova 5.0.0, ich hatte bereits ein Android SDK, also musste ich nur den PATH aktualisieren).
Cordova sagt mir, dass der Build ein Erfolg ist.
Dann wird die Anwendung gestartet, aber das einzige, was sich auf dem Gerät / Emulator-Bildschirm ändert, ist, dass ein Menü geöffnet wird (wie auf dem folgenden Bild): Ссылка
Ich habe einen Emulator ausprobiert und auf einem echten Gerät sind die Ergebnisse gleich.
Ich habe die API-Version geprüft und sie scheint hoch genug zu sein (4.0.3). Ich bin unter Windows 7, mit einem Oracle JDK. Ich dachte, vielleicht ein Plugin fehlt und Cordova-Plugin-Gerät installiert, aber es hat nichts geändert.
Ist das ein Fehler oder vermisse ich etwas? Gibt es eine Möglichkeit, einen Fehlerbericht zu erhalten (nichts ungewöhnliches erscheint mit dem Befehl "cordova run android")?
Ich habe es endlich herausgefunden.
Problem schien zu sein, dass die apk nicht richtig installiert wurde. Die Anwendung konnte tatsächlich ausgeführt werden, wenn ich sie mit folgendem Befehl installierte (wie von jojo in cordova run Android funktioniert gut. Aber Android 4.1.2 startet die App nicht ): adb install <path_to_apk>
Also habe ich Cordova-Code überprüft, um zu sehen, was passiert, wenn apk installiert wird, und manuell den Befehl gestartet, den Cordova verwendet:
adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"
Es gibt zurück: "Fehler: unbekannte Option -d"!
Wenn Sie einfach die Option "-d" löschen, werden Anwendungen normal mit ausgeführt
cordova run android
. In Cordova 5.0.0 finden Sie diese Befehlszeile in Zeile 101 der Dateiplattformen \ android \ cordova \ lib \ device.js (und in Zeile 311 von platform \ android \ cordova \ lib \ emulator. js für cordova emulate android
).
Ich weiß nicht, was diese "-d" -Option auch bedeutet ... Ist das ein Cordova-Bug?
Wie joris im Kommentar sagt:
Das
-d
soll direkt nachadb
(wie in--device
) statt nach der Installation kommen. Sie können es also einfach dorthin verschieben, anstatt es zu entfernen.
Springen zu Plattformen & gt; Android & gt; Cordova & gt; lib & gt; Here you will find device.js and emulator.js
emulator.js
In emulator.js
müssen Sie die folgende Zeile (311) von - & gt;
return exec('adb -s -d' + resolvedTarget.target + ' install -r -d "' + apk_path + '"', os.tmpdir())
An return exec('adb -d -s ' + resolvedTarget.target + ' install -r "' + apk_path + '"')
device.js
In device.js
müssen Sie die folgende Zeile (101) von - & gt;
An var cmd = 'adb -d -s ' + resolvedTarget.target + ' install -r "' + apk_path + '"';
Sobald Sie diese Änderungen vorgenommen haben, erstellen Sie die Anwendung neu und führen Sie sie auf Ihrem Emulator aus!
Für diejenigen, die nicht wissen, wo sie diese Dateien finden und ionischen verwenden, sind sie in:
cordova \ lib \ device.js und cordova \ lib \ emulator.js in Plattform / Android
Das Ändern des Codes in device.js und emulator.js funktionierte bei mir nicht (und führte tatsächlich zu einem Fehler, bei dem cordova build android
nicht mehr funktionierte). Mein Problem war völlig anders: Ich hatte zwei <application>
s in meiner AndroidManifest.xml, die anscheinend nicht erlaubt ist.
Irgendwo entlang der Linie hatte ich <application android:debuggable="true" />
zu meiner AndroidManifest.xml hinzugefügt. Allerdings hatte diese Datei bereits ein "Anwendungs" -Element, das folgendermaßen aussah:
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
Also habe ich die "debuggable" -Zeile zur bestehenden <application>
hinzugefügt (und die zweite <application>
entfernt) wie folgt:
<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
Danach habe ich mit cordova build android
neu erstellt, es erfolgreich auf meinem Gerät mit cordova run android
ausgeführt und dann meine Hände geklatscht, weil es endlich funktioniert hat (und meinen Hund erschreckt hat).
Wie auch immer, auch wenn dies nicht Ihr Problem ist, habe ich das Problem folgendermaßen erkannt: Ich habe die Anweisungen in diese Antwort und lief adb logcat
mit meinem Gerät verbunden. Dieser Terminal-Tab füllte sich sofort mit endlosem Mist.
Dann habe ich ein neues Terminalfenster geöffnet, das ich gleichzeitig sehen konnte. Ich habe den letzten Zeitstempel in der logcat-Ausgabe notiert und ich habe cordova run android
ausgeführt. Der Bildschirm füllte sich mit mehr Mist, und dann scrollte ich zurück zu meiner Startzeit und überprüfte sie Zeile für Zeile. Schließlich fand ich meinen Schuldigen:
PackageParser: <manifest> has more than one <application>
Hoffe, das hilft!