Cordova / Phonegab Plugins korrekt einbinden?

  • Antworten:7
NickD
  • Forum-Beiträge: 8

22.11.2013, 09:26:41 via Website

Hallo,

ich habe eine Phonegap App gebaut und die bereits unter IOS erfolgreich zum laufen gebracht.

Nun habe ich per Command Line die Android Platform eingebunden und diese in Eclipse eingebunden.
Wenn ich diese nun per Emulator (auch im Android Handy getestet), funktionieren keine Plugins.
Z.B. das Notification Plugin geht weder über alert oder confirm. Es kommt kein Fehler, aber auch kein Popup hoch.

Im src Ordner habe ich alle Pakete drin (dialogs, camera, contacts, file, media, filetransfer, mediacapture, splashscreen, virbration).
In der AndroidManifest.xml (liegt im Hauptverzeichnis) sind alle uses-permission eingetragen (WRITE_EXTERNAL_STORAGE, READ_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS, VIBRATE, RECORD_VIDEO).
Unter res/xml habe ich die config.xml erweitert mit feature name="NOTIFICATION" und als param value des Paketnamen (z.B. org.apache.cordova.Notification). Das gleiche auch für die anderen Plugins wie Vibration, ContactManager.....
In meinem App Paket, in der Java Datei sind die Pakete ebenfalls eingebunden mit "include org.apache.cordova.*;"

Was mache ich falsch? Ich habe mich genau an die Doku gehalten, jedoch geht werde Notification, noch das Kontakte auslesen.

Hat jemand eine Idee?

Antworten
Christian
  • Forum-Beiträge: 307

22.11.2013, 10:33:49 via Website

Hi NickD,

mmhh wenn du deine App ausführst hast du dann mal in die LogCat geschaut? Weil wenn er eins der Plugins nicht findet bekommst du dort einen Hinweis.

Und du bist dir sicher das der JS-Code keine Fehler enthält.(Strichpunkt vergessen, Syntaxfehler oder ähnliches?)

mfg Christian

Antworten
NickD
  • Forum-Beiträge: 8

22.11.2013, 10:40:32 via Website

Erstmal vielen Dank für die schnelle Antwort!
Also ein Syntaxfehler schließe ich aus, da die Scripts 1:1 auch in der iOS Variante genutzt werden und die ohne Probleme läuft.

Ich habe 3 Fehler im LogCat:

- ERROR: gl_surface_egl.cc(153) No suitable EGL configs found.
- ERROR: gl_surface_egl.cc(620) GLSurfaceEGL::InitializeOneOff failed.
- ERROR: gpu_info_collector.cc(86) gfx::GLSurface::InitializeOneOff() failed

Haben die was damit zutun?

Ansonsten:

Gibt es die Möglichkeit ein fertig gebautes Projekt mit einer aktuellen Cordova Version runter zu laden, welches korrekt konfiguriert ist?
Ich habe das Gefühl das irgendwo was nicht passt und es gleicht der Suche nach der Nadel im Heuhaufen.
Ideal wäre ein Projekt das funktioniert, wo ich nur den www Ordner austausche und die gewünschten Plugins aktiviere, welche ich benötige.

Antworten
Christian
  • Forum-Beiträge: 307

22.11.2013, 11:33:37 via Website

Hi NickD,

mmhh also die Fehler sagen mir jetzt nichts. Das ist wirklich alles?

Was das laden eines fertigen Projektes betrifft glaub ich nicht das du sowas finden wirst.

Was du aber ausprobieren kannst, ist das du einfach per Console ein neues Projekt erstellst, dann die Plugins hinzuladen, in denn www-Ordner deinen Code rein packst und das ganze dann für Android erstellst.
Schau mal ob es dann geht. Bei einigen unseren Projekten war das die Lösung.

Ich kann dir nicht sagen warum das so ist aber wir hatten auch immer wieder Probleme mit dem "build-Prozess". So wurden zum Beispiel bei der Erstellung der Projekte für verschiedene Platformen nicht immer alle Plugins hinzugeladen.

Mfg Christian

Antworten
NickD
  • Forum-Beiträge: 8

22.11.2013, 11:37:15 via Website

Hallo Christian,

ich habe nun als weiteren Versuch über die Konsole das Android Build erstellt.
Ist das normal, dass er jedes mal meine Index.html ersetzt gehen die index.html mit der "connecting to device" Anzeige?
Ich kopiere meine Dateien in den www Ordner und direkt wenn ich den locale build starte, werden die teilweise ersetzt.

Beste Grüße
NickD

Antworten
Christian
  • Forum-Beiträge: 307

22.11.2013, 13:44:48 via Website

Hi NickD,

mmhh ich glaube du hast das neue Ordner System nicht verstanden.

Wenn du über die Konsole ein neues Projekt erstelllst erhällst du die folgende Ordnerstruktur:

1ProjektName
2|
3---- merged //hier können Datein reingelegt werden die nur auf bestimmten Platformen dasein sollen
4|
5---- platform //nach dem build findet sich hier der jeweilige Platfromcode
6|
7---- www //Basis Ordner für alle builds

Wen du jetzt das Projekt für eine Platform erstellst wird dieser www-Ordner immer als Grundlage genutzt. Das bedeutet die Daten aus dem www-Ordner der jeweiligen Platform werden mit den Daten aus dem übergeordneten www-Ordner überschrieben.

ok also nochmal:
1.) du erstellst ein neues Projekt
2.) Plugins einfügen
3.) lösche alle Daten aus dem übergeordneten www-Ordner ausser der config.xml
4.) kopierst du deine Datein aus dem IOS www-Ordner in den übergeordneten www-Ordner. Aber Achtung: nicht den Plugins Ordner, config.xml oder die phonegap.js bzw cordova.js mit kopieren. Also nur die Ordner/ Dateien die du selbst geschrieben bzw. verändert hast
5.) dann machst du den build für Android

Soweit verstanden?

Geht es jetzt?


Mfg Christian

— geändert am 22.11.2013, 13:51:13

Antworten
NickD
  • Forum-Beiträge: 8

02.12.2013, 07:12:12 via Website

Vielen Dank Christian, das war genau das was mir am Verständnis gefehlt hat.
Ich hatte eigentlich 2 Probleme. Einmal wurden die Plugins nicht richtig eingebunden, obwohl sie korrekt hinzugefügt wurden.
Das habe ich gefixt indem ich ein neues Projekt angelegt habe (also alles noch einmal).
Nun funktioniert alles bestens!

Noch eine Frage habe ich:

Wann genau nutze ich die phonegap.js und wann cordova.js?
Für IOS nutze ich aktuell phonegap.js und es geht wunderbar.....oder ist das egal? Weil ich habe mit der cordova.js einige Fehler zurückbekommen und es dann abgeändert.

Also noch mal vielen Dank! Wenn man einmal richtig verstanden hat wie es funktioniert, ist die Hybrid-App Entwicklung eine wirkliche Erleichterung. Vor allem, wenn man für versch. Plattformen ausliefern möchte.

MfG
NickD

Antworten
Christian
  • Forum-Beiträge: 307

06.12.2013, 15:04:00 via Website

Hi NickD,

kein Ding dafür ist das Forum doch da. :)


Wann genau nutze ich die phonegap.js und wann cordova.js?
Für IOS nutze ich aktuell phonegap.js und es geht wunderbar.....oder ist das egal? Weil ich habe mit der cordova.js einige Fehler zurückbekommen und es dann abgeändert.

Sry genau kann ich dir das auch nicht sagen aber wir hatten die gleichen Erfahrungen. Wenn man im Web nach der Thematik sucht heißt es immer wieder beide Dateien wären eigenliche gleich und sie unterscheiden sich nur dem Namen nach. Wenn ich mir aber den Inhalt an sehe sieht es für mich eher so aus alls würde die Phongap.js Funktionen aus der Cordova.js aufrufen. Leider ist die Phonegap Doku zu diesem Thema ziemlich schlecht

Mfg Christian

Antworten