AndEngine unter Android Studio einrichten
Die AndEngine unter Android Studio einrichten ist bereits die erste große Hürde, wenn man mit der AndEngine eine App entwickeln will. In meinem Fall stellte sich sogar heraus, dass es die größte war. Ich habe all meine Erfahrungen zusammengeschrieben um euch einen einfacheren Einstieg in die Welt der 2D Engine unter Android zu ermöglichen. Neben diesem Tutorial findet man auch sehr gute Ebooks zum Thema AndEngine.
AndEngine unter Android Studio einrichten
Die Anleitung basiert auf dem GLES2-AnchorCenter Brand der AndEngine die ich über Git wie hier beschrieben ausgecheckt habe. Für meine Projekte benötige ich sowohl die Engine als auch die Box2D Erweiterung. Die beiden Git Projekte werden wie folgt von Github geholt:
git clone https://github.com/nicolasgramlich/AndEngine.git andEngine git clone https://github.com/nicolasgramlich/AndEnginePhysicsBox2DExtension.git andEnginePhysicsBox2DExtension
Ich habe mir im AndroidStudioProjects Ordner einen Unterordner Engines erstellt und führe die beiden Kommandos dort aus. Es gibt nun 2 neue Unterordner andEngine und andEnginePhysicsBox2DExtension. Da ich nicht mit dem master Branch arbeite sondern mit dem GLES2-AnchorCenter Brand muss ich diese noch auschecken. Das geht so:
cd andEngine git checkout -b GLES2-AnchorCenter origin/GLES2-AnchorCenter
beziehungsweise für die Box2D Erweiterung:
cd andEnginePhysicsBox2DExtension git checkout -b GLES2-AnchorCenter origin/GLES2-AnchorCenter
Nachdem wir den Code für die Engine und deren Physik Engine Erweiterung haben wird es Zeit das eigene Android Studio Projekt einzurichten.
Android Studio Projekt
Das fertig angelegte Projekt sieht in der Projektansicht etwa so aus (siehe Screenshot links). Ich habe ein Android Studio Projekt mit dem Namen ET angelegt. In diesem Projekt wurden die beiden AndEngine Projekte als Bibliothek hinzugefügt. Ich zeige nun Schritt für Schritt wie man sich das Projekt so einrichtet:
- ein neues Projekt anlegen
als minimum SDK wähle ich API 14 aus, als Projekttyp „Empty Activity„. Alle weiteren Einstellungen bleiben auf Standard. - Projektansicht ändern
ich hatte bisher keine Erfahrung mit dem Android Studio und fand die Projektansicht als eine der größten Herausforderungen an, wenn man von Eclipse umsteigt. Bei jedem Projekt ändere ich die Ansicht von Android auf Projekt, weil mir deren Ansicht übersichtlicher erscheint. Alle Screenshots basieren auf dieser Ansicht:
- AndEngine und die Box2D Erweiterung als Modul anlegen
Das war für mich die größte Hürde, da im Netz zahlreiche widersprüchliche Tutorials zu finden sind. Offenbar wurde im Programm die Menüstruktur verändert, so dass man oft Funktionen und Interfaces nicht an den in den Artikeln beschriebenen Pfaden fand. Ich lege die Module unter File->Project Structure an.
Links oben findet man ein grünes „+“ Symbol über dieses kann man neue Module/Bibliotheken dem Projekt hinzufügen. Im neuen Dialogfenster wählt man Android Library aus. Darauf hin erscheint ein weiteres Fenster in dem man für jedes der beiden Module die Felder ausfüllt. Bei der AndEngine sieht das wie folgt aus:Analog dazu füllt man bei der Box2D Engine den Modulnamen und den Paketnamen mit org.engine.extension.physics.box2d aus. Hat man alles richtig gemacht, dann zeigt das Project Structure Fenster nun in der Liste neben der eigenen App (app) auch die beiden hinzugefügten Module. - Abhängigkeiten
im vorerst letzten Schritt muss man noch die Abhängigkeiten der einzelnen Module definieren. Eine Abhängigkeit fügt man im Reiter Dependencies ein in dem man auf das grüne „+“ Symbol klickt. Als Tyüp wählen wir 3 Module dependency.
Es gibt folgende Abhängigkeiten:
app hängt von org.andengine und org.andengine.extension.physics.box2d ab
org.andengine.extension.physics.box2d ab hängt von org.andengine ab
wenn man das korrekt angelegt hat sieht das bei der app so aus:
Wir sind nun soweit im Android Studio fertig, das Projekt ist angelegt. Wir müssen nun den Code für die beiden AndEngine Module hinzufügen. Wir öffnen dazu einen Datei Explorer.
Source Code der Module hinzufügen
Die Projektstruktur ist fertig, jedoch fehlt noch der Source Code der beiden Module. Im Hauptverzeichnis eurer App unter AndroidStudioProjects/ET/ könnt ihr nun zwei neue Ordner org.andengine und org.andengine.extension.physics.box2d finden. In den Unterordnern der beiden findet sich bereits die von Android Studio angelegte Projektstruktur. Wir kopieren nun den Source Code wie folgt:
- AndEngine
alles von AndroidStudioProjects/Engines/andEngine/src/org/andengine/ nach AndroidStudioProjects/ET/org.andengine/src/main/java/org/andengine/ kopieren - AndEngine Box2D Erweiterung
alles von AndroidStudioProjects/Engines/andEnginePhysicsBox2DExtension/src/org/andengine/extension/physics/box2d/ nach AndroidStudioProjects/ET/org.andengine.extension.physics.box2d/src/main/java/org/andengine/extension/physics/box2d/ kopieren - Abhängigkeiten kopieren
Box2D hat selbst noch Abhängigkeiten die man mit kopieren muss. Aus dem Grund kopieren wir von AndroidStudioProjects/Engines/andEnginePhysicsBox2DExtension/src/ den com Ordner nach AndroidStudioProjects/ET/org.andengine.extension.physics.box2d/src/main/java/
Finalisieren
Wenn man nun kompiliert, dann werden zahlreiche Fehler angezeigt.
In der Datei util/net/HttpClientUtils.java der AndEngine fehlt eine Abhängigkeit. Diese fügen wir ganz einfach hinzu
import org.apache.http.HttpStatus;
Zusätzlich müssen wir nun noch eine zusätzliche Zeile in die Datei build.gradle des org.andengine App Projekts einfügen. Diese wird nach der Zeile mit den buildToolsVersion eingefügt:
apply plugin: 'com.android.library' android { compileSdkVersion 23 buildToolsVersion "23.0.2" useLibrary 'org.apache.http.legacy'
Ihr solltet nun die App fehlerfrei erstellen können. Sofern ihr eine „Empty Activity“ erstellt habt seht ihr eine „Hello World“ Ausgabe. Von der AndEngine ist noch nichts zu sehen. Im nächsten Artikel zeige ich euch wie ihr ein einfaches AndEngine Testprojekt daraus macht!
Problem
Das größte Problem ist, dass fast alle Artikel die man im Internet findet entweder über Eclipse berichten oder eine ältere Android Studio Version. Offenbar wurde vor Version 1.5 das Build System komplett überarbeitet und auf Gradle umgestellt. Da ich selber Gradle gar nicht kannte war es relativ schwer sich in die Konfiguration davon einzulesen, vor allem wenn man als erstes mit zahlreichen Fehlermeldungen konfrontiert ist, die einem selber absolut nichts sagen. Googlen und Try and Error war angesagt.
Weitere Quellen die mir bei dem Setup des Projekts geholfen haben:
- Stackoverflow how-do-i-make-a-hello-world-with-andengine-inside-android-studio-on-a-mac
- Stackoverflow android-gradle-apache-httpclient-does-not-exist
Fazit
Nach einer Woche mit Kopfschmerzen konnte ich AndEngine unter Android Studio eingerichtet. Ich habe ein Demoprojekt mit der AndEngine und der Box2D Erweiterung zum Laufen gebracht. Dieses werde ich mir nun für alle weiteren Projekte als Basis kopieren und von dem Stand weiter arbeiten.
Die Entwicklung von Android über das Android Studio ist meiner Meinung nach viel komfortabler als mit Eclipse. Leider ist auch die Einrichtung des Projekts um einiges komplexer (zumindest in meiner getesteten Version). Die AndEngine selbst macht einen sehr guten Eindruck und ich freue mich bereits auf spannende Projekte damit.
Wie gefällt euch das Android Studio oder die AndEngine? Ihr dürft gerne Links auf eure Apps posten.
Alles unter google:“Setup Andengine Android Studio“ ausprobiert. Dann dieses Tutorial gefunden und (nach 2 Tagen) hats geklappt. Danke!
freut mich, genau deshalb habe ich den Artikel geschrieben!
Super Artikel. Besten Dank! Folgende zwei Dinge sollten aber für alle weiteren Anwender noch angepasst / erweitert werden:
– org.engine.extension.physics.box2d sollte natürlich org.andengine.extension.physics.box2d heissen (ausser man passt alle imports der Box2D Extension an)
– Importieren der Libs (siehe dazu http://stackoverflow.com/questions/25146677/android-studio-with-andengine-physicsbox2d-extension)
Dann klappts auch mit der Box2DExtension 🙂
Nochmals Danke!
danke für die Info!
Der Zielordner im Absatz „Box2D hat selbst noch Abhängigkeiten“ entspricht nicht der Dateistruktur in Android Studio 2.1.3.
Folglich hat man am Schluss immernoch 100 Kompilationsfehler.
Meine Einschätzung nach vielstündiger Google-Recherche: Auch wenn man dieses Paket heute zum Laufen brächte – morgen oder übermorgen
ist es tot. So kann man nicht arbeiten.
AndEngine wird die Lib noch weiterentwickelt? Auf der Seite derLib sind die Dateien schon einige Jahre alt.
Hallo und danke erstmal für das tutorial aber leider habe ich ein paar schwierigkeiten daher ich ziemlich neu in diesem bereich bin.
Sobald ich den punkt: [Source Code der Module hinzufügen] ausführe, kommen fehlermeldungen mit [Error:(9, 21) error: cannot find symbol class BuildConfig]. Danach habe ich die [useLibrary ‚org.apache.http.legacy‘] angehängt. Bei mir existiert jedoch der util/net/ ordner nicht bzw beim Module hinzufügen hatte ich auch keine com ordner. Kann mir da jemand vlt. weiterhelfen ?
Ich bedanke mich jetzt schon mal 🙂