Android-Programme starten [] (Android-Programme starten), Lektion, Seite 722692
https://www.purl.org/stefan_ram/pub/starten_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Starten eines Java -Programms auf dem Emulator

Der Emulator sollte laufen und online sein.

Der Startbildschirm des Emulators muß nun durch Entsperren verlassen werden, damit die von uns erstellte App auf dem Emulator laufen kann.

Es sollten nun die folgenden drei Dateien in dem zuvor angelegten Arbeitsverzeichnis angelegt werden.

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1" >
<uses-sdk android:minSdkVersion="21"
android:targetSdkVersion="21" />
<application>
<activity
android:name="com.example.MainActivity"
android:label="hello, world">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter></activity></application></manifest>
MainActivity.java

package com.example;

public final class MainActivity extends android.app.Activity {}

50_run.cmd

@SET DIRECTORY_OF_SCRIPT=%~dp0
@CD /D "%DIRECTORY_OF_SCRIPT%"
@ECHO OFF

@ECHO %~f0
@CALL "env.cmd"

@%SHELL% logcat -c
@%ADB% logcat -c
@SET SET_THE_DEFAULT_FILTER_TO_SILENT=-s
@SET SHOW_AT_MOST_NINE_OLD_LOGS=-T 9
@START /B "" %SHELL% logcat ^
%SHOW_AT_MOST_NINE_OLD_LOGS% %SET_THE_DEFAULT_FILTER_TO_SILENT% AndroidRuntime:V com.example:V

@SET HERE=%~d0%~p0
@SET PROJECT=%HERE%project
@SET MAIN=%PROJECT%\src\main
@SET SOURCE=%MAIN%\java
@SET APKNAME=ComExampleMainActivity

DEL /F/S/Q project >nul: 2>nul:
RMDIR /S/Q project >nul: 2>nul:
DEL /F/S/Q project >nul: 2>nul:
RMDIR /S/Q project >nul: 2>nul:

@MKDIR "%MAIN%"
@IF ERRORLEVEL 1 GOTO OUT

@MKDIR "%PROJECT%\obj"
@MKDIR "%PROJECT%\lib"
@MKDIR "%PROJECT%\bin"
@MKDIR "%PROJECT%\src\res"
@MKDIR "%SOURCE%\com\example"
@COPY AndroidManifest.xml "%MAIN%">nul:
@IF ERRORLEVEL 1 GOTO OUT

@COPY MainActivity.java "%SOURCE%\com\example">nul:
@IF ERRORLEVEL 1 GOTO OUT

@%ADB% devices
@ECHO javac
@REM TODO: set bootclasspath to compile against the 1.6 rt.jar
@%JAVAC% -source 1.6 -target 1.6 -Xlint:deprecation ^
-Xlint:-options ^
-d "%PROJECT%/obj" -sourcepath "%SOURCE%" ^
-classpath "%SDK%\platforms\%PLATFORM%\android.jar;%PROJECT%\obj" ^
"%SOURCE%\com\example\MainActivity.java"
@IF ERRORLEVEL 1 GOTO OUT
IF EXIST tmp.txt del tmp.txt 2>nul:

@REM @ECHO adb kill-server
@REM @%ADB% kill-server
@REM @ECHO adb start-server
@REM @%ADB% start-server >tmp.txt
@IF ERRORLEVEL 1 GOTO OUT
IF EXIST tmp.txt TYPE tmp.txt | find /v "ting it now" | find /v "rted success"
IF EXIST tmp.txt del tmp.txt 2>nul:

@ECHO dex
@CALL %DX% --dex ^
"--output=%PROJECT%/bin/classes.dex" "%PROJECT%/obj" "%PROJECT%/lib"
@IF ERRORLEVEL 1 GOTO OUT
@ECHO ON

@ECHO aapt
@SET MANIFEST=-M "%PROJECT%\src\main\AndroidManifest.xml"
@SET RESOURCES=-S "%PROJECT%\src\res"
@SET ANDROID=-I "%SDK%\platforms\%PLATFORM%\android.jar"
@SET TARGET=-F "%PROJECT%/bin/%APKNAME%.unsigned.apk"
@%AAPT% package -f %MANIFEST% %RESOURCES% %ANDROID% %TARGET% "%PROJECT%/bin"
@IF ERRORLEVEL 1 GOTO OUT

@ECHO jarsigner
@SET ALGORITHMS=-sigalg SHA1withRSA -digestalg SHA1
@SET KEYSTORE=-keystore "%USERPROFILE%\.android\debug.keystore"
@SET PASSWORDS=-storepass android -keypass android
@SET TARGET=-signedjar "%PROJECT%/bin/%APKNAME%.apk"
@SET SOURCE="%PROJECT%/bin/%APKNAME%.unsigned.apk"
@SET OPTIONS=%ALGORITHMS% %KEYSTORE% %PASSWORDS% %TARGET% %SOURCE% androiddebugkey
@"%JDK%\bin\jarsigner" %OPTIONS% >tmp.txt
@IF ERRORLEVEL 1 GOTO OUT
@IF EXIST tmp.txt type tmp.txt | find /v "not timestamped" | find ^
/v "Warning:" | find /v "jar signed." | findstr /v /r "^$"
@IF EXIST tmp.txt del tmp.txt 2>nul:

@ECHO install
@IF EXIST tmp.txt del tmp.txt 2>nul:
@%ADB% install -r -d "%PROJECT%/bin/%APKNAME%.apk" 2>&1 >tmp.txt
@IF ERRORLEVEL 1 GOTO OUT
@IF EXIST tmp.txt type tmp.txt | find /v "bytes in" | find ^
/v "pkg:" | find /v "Success"
@IF EXIST tmp.txt del tmp.txt 2>nul:

@ECHO start
@IF EXIST tmp.txt del tmp.txt 2>nul:
@%SHELL% am start -n "com.example/.MainActivity" >tmp.txt
@IF ERRORLEVEL 1 GOTO OUT
@IF EXIST tmp.txt type tmp.txt | find /v "Starting:"
@IF EXIST tmp.txt del tmp.txt 2>nul:

@START /B "" %SHELL% logcat -s AndroidRuntime:V com.example:V

@GOTO END

:OUT
@ECHO "An error occurred."
PAUSE

:END

Das Skript »50_run.cmd« sollte dann gestartet werden. Es wird dann die folgenden Ausgabe des Skripts erhofft:

ungefähre Ausgabe des Skripts
javac
dex
aapt
jarsigner
install
87 KB/s (4624 bytes in 0.058s)
start
Java output:

Nun sollte nach zirka einer Minute der Text “hello, world ” auf dem Android-Gerät erscheinen. Falls dies tatsächlich der Fall ist, dann wurde die Installation des SDK erfolgreich abgeschlossen.

App
.---------------------------------.
|---------------------------------|
| hello, world |
|---------------------------------|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
'---------------------------------'

Erklärungen zur Bedeutung der Java -Datei und der XML-Datei folgen erst etwas später in anderen Lektionen.

Nach der Betrachtung des laufenden Prozesses auf dem Android-Gerät sollte der Versuchung widerstanden werden, das Emulatorfenster zu schließen. Falls dies doch geschehen ist, sollte gewartet werden, bis der Emulatorprozeß beendet ist. Dann kann er mit dem Skript »40_start.cmd« wieder gestartet werden.

Für den Rest des Kurses werden nur diese beiden letzten Skripte benötigt: »40_start.cmd« zum Starten des Emulators und »50_run.cmd« zu Ausführen eines Programms benötigt. Zusätzlich ist das in der nächsten Lektion vorgestellte Skript »30_config.cmd« auch manchmal hilfreich.

Falls es Probleme mit dem Emulator gibt, so daß dieser nicht mehr richtig startet, können die Schritte ab dem Abschnitt mit »20_first.cmd« wiederholt werden.

Falls die Installation so beschädigt sein sollte, daß dies auch nicht hilft, verbleibt noch die Möglichkeit alle oben angelegten Datei im Ordner »%TEMP%« und den Ordner »%LOCALAPPDATA%\android-sdk_r22.3-windows« zu löschen und alle Schritte zu wiederholen.

Für die nächsten Lektionen werden die beiden eben angelegten Dateien »AndroidManifest.xml« und »50_run.cmd« unverändert weiterverwendet. Wir werden uns bald mehr der eigentlichen Programmierung zuwenden, indem wir jeweils eine neue MainActivity.java-Datei erstellen werden.

Problemhinweise

Falls der Emulator bei seinem ersten Start ohne Speicherbild nicht auf Kommandos reagierte, so kann es manchmal helfen, diesen zu schließen und dann vom Speicherabbild aus zu starten.

Falls der Emulator bei seinem Start zu sehr durch einen langsamen Computer oder parallele Prozesse gebremst wurde, kann es sein, daß er nicht verwendbar ist, und etwa die Installation hängt. In diesem Fall könnte es helfen, den Emulator zu schließen und dann neu zu starten.

Bei Problemen kann es auch helfen, den automatisch angelegten Ordner »project« zu löschen.

Im Arbeitsverzeichnis sollten keine anderen Dateien mit der Endung ».java« sein als »MainActivity.java«.

Dalvik -Hinweise *

Falls noch Dalvik  verwendet wird, so kann das folgende Fragment verwendet werden, um auch die mit »java.lang.System.out.println« erzeugten Ausgaben zu sehen, vorausgesetzt, daß auch das Skript »30_config.cmd« entsprechend angepaßt wurde.

Fragment
@ECHO Java output:
@%SHELL% logcat -c
@%SHELL% logcat -v long -s -T 9 "com.example:V" "System.out" "System.err" "AndroidRuntime:E" "*:S"

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722692 stefan_ram:722692 Android-Programme starten Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722692, slrprddef722692, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/starten_android