Cordova "Hallo Welt" App wird nicht angezeigt

7

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")?

    
proprit 10.05.2015, 09:51
quelle

4 Antworten

18

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?

BEARBEITEN

Wie joris im Kommentar sagt:

  

Das -d soll direkt nach adb (wie in --device ) statt nach der Installation kommen. Sie können es also einfach dorthin verschieben, anstatt es zu entfernen.

Plus, hier ist das Problem mit Apache Cordova Issue Tracker

    
proprit 14.05.2015, 14:51
quelle
6

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;

ändern

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;

%Vor%

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!

    
James111 21.08.2015 00:10
quelle
0

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

    
Menashe Yamin 11.08.2015 22:42
quelle
0

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!

    
Sarah 11.12.2015 23:26
quelle

Tags und Links