Das Ausführungs-Skript
Die Schritte zum Ausführen eines Programm
Das Skript »50_run.cmd« zeigt die einzelnen Schritte zum Ausführen eines Programms an.
Das Skript legt das Verzeichnis »project« mit den Projektdateien stets neu an. Weil dieses Verzeichnis beim Start des Skriptes gelöscht wird, gehen eventuelle manuelle Änderungen von Dateien in diesem Verzeichnisses also verloren.
Das Skript kopiert die Dateien »Main.java« und »AndroidManifest.xml« dann aus dem Arbeitsverzeichnis in das neu angelegte leere Projektverzeichnis. Diese Dateien im Arbeitsverzeichnis können also manuell geändert werden.
Anschließend führt das Skript einige Schritte aus, die es kurz anzeigt.
- Ausgabe des Build-Skripts »50_run.cmd«
javac
dex
aapt
jarsigner
install
663 KB/s (4756 bytes in 0.003s)
start
Im folgenden erläutern wir die einzelnen Schritte kurz.
javac
- Der Compiler »javac« (Teil des JDK ) erzeugt aus der Quelldatei »Main.java« die Klassendatei »Main.class«.
dex
- Der Prozessor »dex« erzeugt aus der Klassendatei »Main.class« die Android -Klassendatei »classes.dex«.
- (Die beiden letzten Schritte sollten durch das Werkzeug »jack« in einem Schritt erledigt werden, was aber inzwischen wieder aufgegeben wurde – Stand: 2017-03-15, bestätigt: 2017-05-18.)
aapt
- Der Prozessor »aapt« erzeugt aus der Android -Klassendatei »classes.dex« und der XML-Konfigurationsdatei »AndroidManifest.xml« die nicht-signierte Paketdatei »ComExampleMain.unsigned.apk«.
jarsigner
- Das Werkzeug »jarsigner« (Teil des JDK ) erzeugt aus der nicht-signierten Paketdatei »ComExampleMain.unsigned.apk« die signierte Paketdatei »ComExampleMain.apk«.
install
- Beim Installieren wird die signierte Paketdatei »ComExampleMain.apk« auf das Android -Gerät kopiert und dann dort installiert.
- Dabei wird angenommen, daß genau ein Android -Gerät angeschlossen ist. Dies kann entweder ein simuliertes oder ein reales Gerät sein. Wie genau ein reales Gerät anzuschließen ist, wurde in diesem Skript aber noch nicht behandelt.
start
- Beim Starten wird die zuvor installierte App »com.example/.Main« auf dem Android -Gerät gestartet.
- Aufzeichnungen
- Das Skript gibt anschließend eventuelle Aufzeichnungen aus, welche die App mit »android.util.Log« und dem Etikett »com.example« schreibt.
- Schritte bei der Herstellung einer APK-Datei
AndroidManifest.xml Main.java
| |
| |
| |
| | javac
| |
| V
| class
| |
| |
| |
| | dex
| |
| V
| dex
| |
| |
| |
aapt '<------------------------'
|
V
bin/
unsigned APK
|
|
|
| jarsigner
|
V
bin/
signed APK
|
|
|
| frueher
.- - - - - - - - - - - - -.
| |
|
| |
dex2oat | dexopt
| |
OAT odex
| |
|
| |
| JIT
| |ART-execution dalvik-execution
ohne mit
java.lang.System. java.lang.System.
out.println out.println
Das Projekt-Verzeichnis
Die folgende Darstellung zeigt den Aufbau des Projekt-Verzeichnisses mit den darin enthaltenen Dateien.
- Erzeugtes Projekt
Ordner Pfade
Dateien
project
|
'---bin project\bin
| classes.dex
'---lib ComExampleMain.apk
| ComExampleMain.unsigned.apk
'---obj
| |
| '---com
| |
| '---example project\obj\com\example
'---src Main.class
|
'---main project\src\main
| | AndroidManifest.xml
| '---java
| |
'---res '---com
|
'---example project\src\main\java\com\example
Main.java
Die Projekt-Dateien
Im folgenden erläutern wir die einzelnen Dateien kurz.
Main.java
project\src\main\java\com\example\Main.java
- Diese Datei enthält das von einem Programmierer geschriebene Java -Programm für die App.
AndroidManifest.xml
project\src\main\AndroidManifest.xml
- Diese Datei enthält von einem Programmierer geschriebene Festlegungen für die App. Sie wird vom Prozessor »aapt« (Android Asset Packaging Tool ) vor Erstellung der Paketdatei »ComExampleMain.unsigned.apk« eingelesen.
Main.class
project\obj\com\example\Main.class
- Diese Klassendatei wird vom Compiler »javac« aus der Quelldatei »Main.java« erzeugt und dann vom Prozessor »dex« gelesen, um die Android -Klassendatei »classes.dex« zu erzeugen.
classes.dex
project\bin\classes.dex
- Die Android -Klassendatei »classes.dex« wird vom Prozessor »dex« erzeugt. Der Prozesor »aapt« (Android Asset Packaging Tool ) erzeugt aus dieser Datei und der XML-Konfigurationsdatei »AndroidManifest.xml« dann die nicht-signierte Paketdatei »ComExampleMain.unsigned.apk« (Android Application Package File ).
ComExampleMain.unsigned.apk
project\bin\ComExampleMain.unsigned.apk
- Diese Datei wurde vom Prozesor »aapt« (Android Asset Packaging Tool ) aus der Android -Klassendatei »classes.dex« und der XML-Konfigurationsdatei »AndroidManifest.xml« erzeugt. Sie wird dann anschließend mit dem Werkzeug »jarsigner« signiert.
ComExampleMain.apk
project\bin\ComExampleMain.apk
- Diese Datei wurde durch Signieren der Datei »ComExampleMain.unsigned.apk« mit Hilfe des Werkzeuges »jarsigner« erzeugt. Sie kann nun auf ein Android-Gerät kopiert, dort installiert und gestartet werden. Obwohl das Skript dies automatisiert erledigt, können diese Schritte auch manuell erledigt werden. Diese Datei kann auch nach Google Play kopiert werden, um von dort aus als App verteilt zu werden.
Abkürzungen
- aapt
- Android Asset Packaging Tool
- apk
- Android Application Package
- ART
- Android Runtime
- DDMS
- Dalvik Debug Monitor Server
- dex
- Dalvik Executable
- javac
- Java Compiler
- OAT
- Optimized ART
- ODEX
- Optimized Dalvik Executable