• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Android

Robin888

Geomaster
Mal ein Frage, die mir immer mal wieder durch den Kopf geht:

Würde Cachewolf eigentlich unter Android laufen?
Zumindest die Java-Version?

Ich dachte es wäre schon mal erwähnt worden, aber die Forensuche spukt nichts interessantes aus.

Noch betrifft es mich zwar nicht, aber früher oder später brauche ich doch mal einen neuen PPC und dann wäre es schon ein Entscheidungskriterium...

Robin(888)
 

Inder

Geowizard
Wegen dieser offenen Frage habe ich mich dann doch vorerst lieber für ein WinMobile-Gerät entschieden ...

Das wird aber sicher über kurz oder lang interessant, da Android von der Technik-Presse derart gepushed wird, dass es gar keine andere Wahl hat, als erfolgreich zu sein.
 

moenk

Administrator
Teammitglied
Die Tage fiel mir das in den Mailkasten, ich werf das mal in die Runde - HTH:
http://www.nwct.de/archives/45-Anleitung-fuer-Eclipse-und-Android-SDK.html
 

pfeffer

Geowizard
java-version - glaub kaum, dass die läuft. Dafür braucht Cachewolf ne vollständige Java-VM, eine abespreckte mobile genügt leider nicht.

Aber:
Android setzt ja irgendwie auf Linux auf ---> es müsste möglich sein, die Ewe-VM für Android zu kompilieren.
Kennt sich da jemand aus?
Hat jemand Lust, das zu machen?

Gruß,
Pfeffer.
 

snaky

Geowizard
Gibt's hierzu mittlerweile was Neues?

Wenn mir jemand eine Step-by-step-Anleitung gibt, was ich machen soll, bin ich gern zum Testen bereit. Und natürlich hätte ich ein Android-Phone um das Ganze zu testen...
 

pfeffer

Geowizard
ich habe mir das nochmal angeschaut:
Mir scheint, Android hat nen (fast?) richtiges Java - es könnte sein, dass Cachewolf damit läuft. Allerdings müssen dazu die .class-Dateien umgewandelt werden in äää - ich weiß grad nicht mehr, glaub .dmg-Dateien. Dazu gibt es auch Tools, aber ich habe irgendeine Fehlermeldung erhalten. Es schien mir aber so, als gäbe es eine gute Chance, dass es irgendwie swo geht. Vielleicht kann man auch sich die Entwicklungsumgebung für Android installieren und darin direkt Ewe und Cachewolf compilieren.

Gruß,
Pfeffer.
 

snaky

Geowizard
Vielleicht das hier?

Code:
Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.

Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.


Quelle: http://developer.android.com/guide/basics/what-is-android.html

Wie gesagt, ich helfe gerne und teste gerne, ich habe nur keine Ahnung, was ich machen soll/muss. ;)
Ich kann googlen und ausprobieren, aber ich weiß nicht, was ich da tue. ;)
 

pfeffer

Geowizard
ja, Du hast recht, es war .dex, nicht .dmg - ist schon etwas her, hatte mich falsch erinnert.

Es kommt ja nicht drauf, an, dass man weiß, was man tut, sondern darauf, dass es am Ende funktioniert ;-)

Du kannst mal 2 Wege ausproboieren:
1. mit dem dx-Tool cachewolf in .dex umzuwandeln
oder
2. Man kann sich irgendwo eine komplette (java-) Entwicklungsumgebung für .dex herunterladen. Die ist praktisch fertig eingerichtet und funktioniert auch direkt (enthält sogar einen Android-Handy-Simulator). Damit würde ich erst einmal "Hallo Welt" kompilieren und ausprobieren. Wenn das geklappt hat, dann könnte man aus dem SVN von Cachewolf einfach den Java-Quellcode laden und dort einspeisen.

Gruß,
Pfeffer.
 

snaky

Geowizard
Also ich habe mich zumindest mal an Schritt 1 gewagt, bekomme aber VIELE Meldungen folgender Art:

warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)

Ist das was Kritisches? Auf jeden Fall habe ich schon mal ein 2,4 MB großes Outputfile bekommen. Zum Rest muss ich mich erst mal etwas schlau lesen.
 

pfeffer

Geowizard
Es steht ja "warning" davor - das würde ich so interpretieren, dass es nicht sooo schlimm ist. Konkret, weiß ich, was eine "anonyme Klasse" ist, nämlich eine, der keinen Namen gegeben wurde.
Das geht, z.B. in Funktionsaufrufen:
Code:
daten.sort(
    new Comparer {
       int compare(object o1, object o2) {
          return 0;
       }
     }
   );
Wenn ich das hier aus dem Kopf richtig hingeschrieben habe, dann wird hier daten.sort aufgerufen sort eine anonyme Klasse als Argument übergeben, die von Comparer abgeleitet ist und die Methode compare enthält. Aber ich habe keine Ahnung von was für Attributen hier gesprochen wird. Aber es soll ja auch ein Compiler-Fehler sein, nicht einer, der aus dem Quellcode kommt.
Ich weiß nicht genau, mit welchem Compiler die NightlyBuilds erzeugt werden. Ich vermute mit GCJ. Vielleicht kann man die Warnungen beseitigen, indem man Cachewolf mit dem Sun-Compiler kompiliert?

Was passiert denn, wenn Du das entstandene .dex-File auf dem Android versuchst zu starten?

Gruß,
Pfeffer.
 

snaky

Geowizard
So eine ähnliche Antwort (liegt am Compiler) habe ich mittlerweile auch ergooglet:

First of all, this is a warning and not an error. The resulting file
should run just fine, except that if you attempt to use reflection on
the inner classes in question, the answers you get back will not be
correct. (This is because the compiler that produced the files was
broken and didn't provide consistent information.)

> I can't fix this problem.

Yes, you probably can. Recompile the source for "felix.jar" with a
modern compiler, and the problem should disappear.

Das dex-File habe ich jetzt auf die schnelle nicht starten können, könnte aber auch an meiner gmail-Konfig liegen. Ich probiere das später nochmal über USB, kann mir aber nicht so wirklich vorstellen, dass da was sinnvolles passiert, weil ich ja lediglich die CacheWolf.jar convertiert habe (ohne weitere Dateien).
 

pfeffer

Geowizard
kopiere doch die restlichen Dateien in der selbe Verzeichnis wie die .dex auf dem Handy.

Gruß,
Pfeffer.
 

snaky

Geowizard
Ich habe gestern Abend mal noch schnell die .dex rübergezogen. Da hat er mich aber nur gefragt, ob ich das mit "Text, Musik, Video oder Bilder" aufmachen will. Sprich, er hat gar nicht erkannt, was das sein soll. Vielleicht lag's an der Endung!? (Eigentlich sollte das unter Linux kein Problem sein.)

Ich probiere das Ganze später nochmal mit .apk und spiele auch sonst noch ein bisschen herum, bzw. lese mich nochmal ein bisschen schlau.
 

pfeffer

Geowizard
Android hat ein ganz "großartiges" Sicherheitsfeature: Es führt keine Dateien vom eingelegten Flash-Speicher aus, sondern nur vom internen. Vielleicht lag es daran?
Ich weiß nicht, was da beim Android für ein Dateisystem drauf ist, aber vermutlich kein FAT, sondern Ext3 oder so. Dann musst Du vermutlich die Datei erst als "ausführbar" kennzeichnen:
Code:
chmod a+x cachewolf.dex

Gruß,
Pfeffer.
 

snaky

Geowizard
pfeffer schrieb:
Android hat ein ganz "großartiges" Sicherheitsfeature: Es führt keine Dateien vom eingelegten Flash-Speicher aus, sondern nur vom internen. Vielleicht lag es daran?

Standardmäßig darf man - wie beim IPhone - nur Pakete vom "Market" installieren. Das lässt sich aber über Einstellungen/Anwendungen/Unbekannte Quellen abschalten und scheint nicht das Problem zu sein.

Ich weiß nicht, was da beim Android für ein Dateisystem drauf ist, aber vermutlich kein FAT, sondern Ext3 oder so. Dann musst Du vermutlich die Datei erst als "ausführbar" kennzeichnen:
Code:
chmod a+x cachewolf.dex

Die Karte ist wohl wirklich einfach FAT32. Die Datei ist lesbar, beschreibbar und nicht versteckt.

Als .apk kommt als Fehlermeldung "Beim Parsen des Pakets ist ein Fehler aufgetreten". Da steckt dann wohl doch mehr drin...

Oder es liegt daran, dass dx wirklich nur die .class konvertiert und CW schon über die fehlenden png oder bmp stolpert!?

Leider kriege ich gar keine Fehlermeldung und mit dem Android SDK komme ich auch nicht so richtig zurecht. Sieht nett aus, aber ich habe keine Ahnung, wie ich da was laden kann. Einen Filemanager gibts da ja nicht.
 

pfeffer

Geowizard
kannst Du eine andere aus dem Netz geladene .dex auf die Karte schreiben und ausführen?

Gruß,
Pfeffer.
 

snaky

Geowizard
Du meinst irgendeine, um überhaupt mal zu testen?

Kann ich mal probieren.

Ich weiß jetzt immerhin, dass man im SDK mit "adb push" Dateien auf die virtuelle SD-Card bekommt. Aber immer noch nicht, wie man sie startet. Zumindest habe ich Probleme mit den Zugriffsrechten und chmod funktioniert da irgendwie anders - oder ich habe gar keine Rechte, chmod auszuführen. sudo darf ich nämlich auch nicht...
 

pfeffer

Geowizard
häng doch mal dein cachewolf.dex hier an - vielleicht findet sich ja noch jemand, der versucht, sie auf nem Android ans laufen zu bringen. Vermutlich musst Du sie zippen, damit das Forum sie akzeptiert.

Gruß,
Pfeffer.
 

snaky

Geowizard
Okie dokie.

Wer kein Android hat, aber sich so ein Teil mal näher anschauen will, kann ja auch per http://developer.android.com/sdk/index.html das SDK installieren. Da kann man dann ein Android-Phone grafisch emulieren. Viel kann man nicht machen (weder telefonieren, SMS schreiben, noch Bilder aufnehmen - irgendwie logisch), aber es gibt einen schönen Eindruck in das Look&Feel.
 

Anhänge

  • CacheWolf.dex.zip
    1,1 MB · Aufrufe: 12
Oben