[Monkey] Wie Android Apps erstellen?

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

Midimaster

Betreff: Wie Android Apps erstellen?

BeitragMi, Jun 06, 2012 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich bastle mal wieder mit Monkey rum. Seit dem Kauf meines neuen Computers sind die Audio-"Fehler", die meine Monkey-Programme unter HTML-5 produzierten plötzlich weg. Musss wohl am Computer gelegen haben.

Jetzt jedenfalls bin ich wieder voller Mut und habe mir vorgenommen ein "Hello World" unter Android zum Laufen zu bringen.

Der Android-Simulator läuft auch schon. Wenn ich mit Eclipse programmiere, dann sehe ich erfolgreich meine App auf dem Simulator laufen.

Allerdings weiß ich nicht so recht, was ich noch alles tun muss, um nun auch direkt aus dem Monkey Apps zu erzeugen.

Folgender Code läuft unter html-5, erzeugt aber schon beim Compilieren nach Android eine Fehlermeldung:

Monkey:
Code: [AUSKLAPPEN]
Import mojo

Class MyExample Extends App

   Method OnCreate()
      SetUpdateRate 30
   End

   Method OnUpdate()
   End
   
   Method OnRender()      
      SetColor 255,0,0
      DrawText "Hallo",100,100
   End
End

Function Main()
   New MyExample
End


Compiler-Protokoll:
Zitat:
Translating MyExample
C:/MonkeyPro56b/bin/trans_winnt -target=android -run C:/Basic/Monkey/MyExample.monkey

TRANS monkey compiler V1.32
Parsing...
Semanting...
Translating...
Building...
Buildfile: C:\Basic\Monkey\MyExample.build\android\build.xml

-pre-clean:

clean:
[delete] Deleting directory C:\Basic\Monkey\MyExample.build\android\bin
[delete] Deleting directory C:\Basic\Monkey\MyExample.build\android\gen

BUILD SUCCESSFUL
Total time: 0 seconds
Buildfile: C:\Basic\Monkey\MyExample.build\android\build.xml

-set-mode-check:

-set-debug-files:

-set-debug-mode:

-debug-obfuscation-check:

-setup:
[echo] Creating output directories if needed...
[mkdir] Created dir: C:\Basic\Monkey\MyExample.build\android\bin
[mkdir] Created dir: C:\Basic\Monkey\MyExample.build\android\bin\res
[echo] Gathering info for MonkeyGame...
[setup] Android SDK Tools Revision 19
[setup] Project Target: Android 3.2
[setup] API level: 13
[setup]
[setup] ------------------
[setup] Resolving library dependencies:
[setup] No library dependencies.
[setup]
[setup] ------------------
[setup] API<=15: Adding annotations.jar to the classpath.
[setup]
[setup] ------------------

-build-setup:
[mkdir] Created dir: C:\Basic\Monkey\MyExample.build\android\gen
[mkdir] Created dir: C:\Basic\Monkey\MyExample.build\android\bin\classes

-pre-build:

-code-gen:
[echo] ----------
[echo] Handling aidl files...
[aidl] No AIDL files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[renderscript] No RenderScript files to compile.
[echo] ----------
[echo] Handling Resources...
[aapt] Generating resource IDs...
[echo] ----------
[echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
[javac] Compiling 3 source files to C:\Basic\Monkey\MyExample.build\android\bin\classes
[javac] Note: C:\Basic\Monkey\MyExample.build\android\src\com\monkey\MonkeyGame.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.

-post-compile:

-obfuscate:

-dex:
[dex] Converting compiled files and external libraries into C:\Basic\Monkey\MyExample.build\android\bin\classes.dex...

-crunch:
[crunch] Crunching PNG Files in source dir: C:\Basic\Monkey\MyExample.build\android\res
[crunch] To destination dir: C:\Basic\Monkey\MyExample.build\android\bin\res
[crunch] Processing image to cache: C:\Basic\Monkey\MyExample.build\android\res\drawable-hdpi\icon.png => C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-hdpi\icon.png
[crunch] (processed image to cache entry C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-hdpi\icon.png: 0% size of source)
[crunch] Processing image to cache: C:\Basic\Monkey\MyExample.build\android\res\drawable-ldpi\icon.png => C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-ldpi\icon.png
[crunch] (processed image to cache entry C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-ldpi\icon.png: 0% size of source)
[crunch] Processing image to cache: C:\Basic\Monkey\MyExample.build\android\res\drawable-mdpi\icon.png => C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-mdpi\icon.png
[crunch] (processed image to cache entry C:\Basic\Monkey\MyExample.build\android\bin\res\drawable-mdpi\icon.png: 0% size of source)
[crunch] Crunched 3 PNG files to update cache

-package-resources:
[aapt] Creating full resource package...

-package:
[apkbuilder] Current build type is different than previous build: forced apkbuilder run.
[apkbuilder] Creating MonkeyGame-debug-unaligned.apk and signing it with a debug key...

-post-package:

-do-debug:
[zipalign] Running zip align on final apk...
[echo] Debug Package: C:\Basic\Monkey\MyExample.build\android\bin\MonkeyGame-debug.apk
[propertyfile] Creating new property file: C:\Basic\Monkey\MyExample.build\android\bin\build.prop
[propertyfile] Updating property file: C:\Basic\Monkey\MyExample.build\android\bin\build.prop
[propertyfile] Updating property file: C:\Basic\Monkey\MyExample.build\android\bin\build.prop
[propertyfile] Updating property file: C:\Basic\Monkey\MyExample.build\android\bin\build.prop

-post-build:

debug:

install:
[echo] Installing C:\Basic\Monkey\MyExample.build\android\bin\MonkeyGame-debug.apk onto default emulator or device...
[exec] error: device not found
BUILD FAILED
C:\Programme\Android\android-sdk\tools\ant\build.xml:1194: The following error occurred while executing this line:
C:\Programme\Android\android-sdk\tools\ant\build.xml:1208: exec returned: 1
Total time: 7 seconds
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: device not found

Process Complete



Kann man daraus schon erkennen, woran es hakt?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

ZaP

BeitragMi, Jun 06, 2012 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Midimaster,

grundsätzlich möchte ich ja davon abraten, den Android Simulator zu benutzen, aber wenn Du kein echtes Gerät hast, geht es ja nicht anders.

1. Starte doch einfach mal den Simulator (im android-sdk Verzeichnis ist der Launcher dazu, oder auch in Eclipse).

2. Wenn es jetzt nicht klappt, öffne einfach mal eine Eingabeaufforderung, und navigiere in das platform-tools Verzeichnis im android-sdk Verzeichnis. Dort kannst Du folgendes eingeben:

Code: [AUSKLAPPEN]
adb connect 127.0.0.1:5554


3. Wenn das geht, aber Monkey immer noch nichts tut, kannst Du folgendes tun, um die App "manuell" zu installieren

Code: [AUSKLAPPEN]
adb install "C:\Basic\Monkey\MyExample.build\android\bin\MonkeyGame-debug.apk"


Hoffentlich hilft dir das weiter, auch wenn das wohl eher aufwändig ist, um eine App zu testen. Aus deinem Log geht ja hervor, dass kein (virtuelles) Gerät läuft, vielleicht ist das Problem also auch schon gelöst, nachdem der Simulator läuft (man kann den ja ruhig laufen lassen)

Viel Erfolg Smile
Starfare: Worklog, Website (download)

Midimaster

BeitragMo, Jun 11, 2012 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, ZaP....

nun scheint es zu laufen. Ich hatte keine Ahnung, dass der Android Simulator zuerst gestartet werden muss. Bei Eclipse wird er ja automatisch aufgerufen.

Nun finde ich auf dem Simulator meine App "Monkey Game" und kann damit weiterexperimentieren. Was mir jetzt schon auffällt ist, das der Anroid-"Zurück" oder "Exit"-Button (??? Symbol "Pfeil gegen den Uhrzeigersinn...") bei meiner App nicht zur Übersicht zurückführt. Mit dem "Home"-Knopf (Symbol "Haus") komme ich raus. Muss ich hier eine Methode hinzufügen? Sowas wie "OnExit()" oder so?

Wenn ich es wieder rufe, startet es scheinbar wirklich erneut, was ich durch diese Zeile bemerkt habe:
Code: [AUSKLAPPEN]
DrawText "Hallo" + Millisecs() ,100,100

Die Millisecs() beginnen nach dem Klick auf "Monkey Game" wieder bei 0.

[...halbe Stunde später...]

Ich habe jetzt schon 3 meiner Monkey Spiele getestet und alle drei scheinen zu laufen. Nur scheint man unter Android immer den gesamten Screen bei jeden OnRender() neu zeichnen zu müssen. Hier dachte ich ich könnte wie bei HTML-5 Performance sparen und nur geänderte Stellen des Spielfeldes neuzeichnen, aber das blinkt dann ganz schrecklich unter Android.

Ja jedenfalls weiß ich jetzt, was ich heute Nacht so mache...

Danke nochmal!
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

ViK

BeitragFr, Jun 15, 2012 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat Folgendes geschrieben:

Was mir jetzt schon auffällt ist, das der Anroid-"Zurück" oder "Exit"-Button (??? Symbol "Pfeil gegen den Uhrzeigersinn...") bei meiner App nicht zur Übersicht zurückführt. Mit dem "Home"-Knopf (Symbol "Haus") komme ich raus. Muss ich hier eine Methode hinzufügen? Sowas wie "OnExit()" oder so?

Du mußt KeyHit(KEY_ESCAPE) abfragen. Entspricht dem Back-Button unter Android.
Zum Schließen der App wird Error("") verwendet.
Mit dem Home-Knopf wird die App nur in den Hintergrund geschaltet. Android schaltet
sie dann gegebenenfalls aus wenn Speicher benötigt wird.
In der Methode OnSuspend() der Klasse App kannst du festlegen was passieren soll wenn.
Zb. Pausieren oder Speichern.

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group