71. Android SDK Dominik Gätjens Thomas Maier Fragen? Vielen Dank für die Aufmerksamkeit :-)
Notas do Editor
-> Vorstellung 30 sek
Thomas -> Agenda 30 sek
Thomas -> Agenda 30 sek
Thomas -> Agenda 30 sek
Thomas -> Ein Betriebssystem für mobile Endgeräte Beispielgeräte/hersteller. Mehr als Betriebssystem... -> Entwickelt von der Open Handset Alliance 65 Unternehmen, Netzbetreiber, Software-Firmen, Marketing-Firme, Geräte-Hersteller, unter Goole -> Unter Apache und GPL Lizenz (Open Source) klar... -> Basiert auf Linux-Kernel und Java klar...+Dalvik -> Gute Integration in die Google-Cloud Kalender, Mail, Kontakte 1 min
Thomas -> Multitasking klar... -> Vielfalt an unterstützter Hardware Keine proprietäre Software, Abstraktionsschichten, Geräteverwaltung Viel Aktorik: Beschleunigungssensor, Kompass, GPS, WiFi, Bluetooth, Beleuchtungssensor -> Entwicklerfreundlich (Java) Keine neue Sprache, Hochsprache, Gute Entwicklungsumgebung, gewohnte Werkzeuge -> Durchgängig durchdachte Security sandboxing, jede app in eigener vm, permissions -> Reichhaltiges Angebot an Apps Fast 50.000 im offiziellen Google Market, Sekündärmärkte verfügbar Bsp.: andappstore.com slideme.org handandgo.com Anmeldung: 25$ nach Registration: upload vom Handy aus -> Internet-Optimiert (Social Networking Mail, Messenger, Facebook und co., Browser, Telefon rückt in den Hintergrund (kleineres Netbook mit Telefon) -> Google-Integration Synchronisation mit Kalender, Mail und Kontakte -> Open Source ...klar 2 min
Thomas -> Google-Integration Guter voller Funktionsumfang nur mit Google-Diensten -> Taskverwaltung Programme lassen sich oft nicht explizit beenden (ohne Taskkiller) Sollte aber eigentlich nicht nötig sein...da android automatisch killt Nur indirekte Wechsel über GUI. -> Gerätevielfalt Muss Hardware vieler Hersteller unterstützen. HAL nötig. -> Langsamer (theoretisch) -> VM (keine JIT-Kompilierung) JIT kompiliert teilstücke von class-files vor runtime, statt sie zu interpretieren 1 min
Thomas -> Development Tools 30 sek
Thomas ->dx *.dex executable für dalvik vm dx baut aus class-bytecode bytecode für dalvik-vm explizite nutzung -> apkbuilder *.apk packages beihnhalten alle nötigen daten für app (quasi-installationsdatei) (resources+dex-classes) explizite nutzung ->adb Android Debug Bridge Client auf development-pc Server auf development-pc (daemon) Client auf Target (real oder avd)(daemon) explizite nutzung +telefon komplett bedienen ->layoutopt optimiert, validiert layout commandline-tool -> Dominik jeztt Eclipse 3 min sum: 9 min
Thomas Bestandteil des SDK. Java-Programm. Verwaltet API-Versionen. Verwaltet Google-API's, nötig für Google Maps. Verwaltet Virtual Devices (AVD-Android Virtual Device) Path für Eclipse (bzw. allgemein AVD-Manager und andere Tools) setze. 1 min
Dominik AVD Anlegen 30 sek
Dominik gestarter Emulator 30 sek
Dominik 30sek Standard Eclipse ansicht kennt jeder Java Entwickler
Dominik 30sek Applikation Starten -> Device Chooser
Dominik DDMS View Device Ansicht mit Prozessen, Heap, Allocation Tracker, Threads, File Explorer Performance Löcher und Bugs finden LogCat kommt gleich 30 sek
Dominik Debug View lässt sich auch ganz normal starten Bekannt aus Java Entwicklung + LogCat LogCat gibt Android Logs aus, ähnlich einem consolen appender in Log4J 1 min
Dominik Vollwertiger Gui Designer Links Komponents und Properties Rechts View-Hirachie wird später im Detail drauf eingegangen 30 sek
Dominik Android Manifest, Alle wichtigen Meta informationen für die Applikation. gehen wir später drauf ein 30 sek sum: 14,5 min
Thomas -> Architektur 0 sek
Thomas -> Linux-Kernel Version 2.6 System-Dienste security, memory management, process management, network stack, and driver model. HAL für restlichen Softwarestack -> Android Runtime Für jede Applikation eigene Dalvik-VM (Mehrere Instanzen pro Gerät) Core-Libraries (nur teilmenge der, der Java-VM) Es fehlt z.B. print, rmi, awt/swing Anderer Release-Zyklus (hinterher, momentan java 1.5) Java Vm basiert auf Kellerautomat, Dalvik VM auf Registermaschine (CPU auch). Dalvik in der Hinsicht besser Umwandlung durch dx -> Libraries (C/C++) Surface Manager: Display I/O, Bringt 2d und 3d auf display zusammen Media Framework: Media Codecs (Bilder, Video, Audio) SQLite: Relationelle Datenbank, Zugriff für alle Applikationen OpenGL: 3d Engine (Software, wahlweise hardware-beschleunigung) FreeType: Bitmap und Vektor-Rendering (Schriften) WebKit: HTML-Rendering Bibliothek SGL: 2d engine SSL: secure socket layer protocol...klar libc: Standard C Lib NDK: native development tools: für performance-kritische anwendungen zugriff auf c-libs -> Applikation Framework Activity-Manager: Verwaltet Activities Window-Manager: Verwaltet Windows Content-Providers: Stellen Daten zur Verfügung View-System: Verwaltet Views Package-Manager: Verwaltet installierte Apps Telephony-Manager: Zugriff auf Telefonie-status und service Resource-Manager: Verwaltet Zugriff auf nicht-code resourcen Location-Manager: Verwaltet Zugriff auf Positions-Daten Notification-Manager: events im hintergrund, led, statusleiste. 5 min
Thomas -> Components: Bausteine für Applikation, unabhängig. Andere Apps können Bausteine benutzen (mit permission). gleichzeitig auch immer eine klasse 30 sek sum: 20 min
Dominik Logik, Kontrolle und Ansicht eines Screens (App-View) erbt von Acitivity Life-Cycle Methoden werden überschrieben um code einzubringen 30 sek
Dominik onCreate() initalisierungen onStart() weitere reInitialisierung onResume() Animationen und Musik starten. onPause( Animation und Musik stoppen onPause() Activity wurde teilweise überlagert. onStop() Avitivty wurde vollständig überlagert. onDestroy() wird nur durch aufruf von finish! 4 min
Dominik laufen im Hintergrund z.B. Mp3 Spieler kein UI erben von Service 30 sek
Dominik 2 Life-Cycles 1. Service läuft immer und muss sich selbst beenden 2. Service wird beenden wenn keine bins mehr da sind. 2 min
Dominik Regestrieren sich für Broadcasts Broadcasts werden vom System bei Ereignissen geschickt (SMS,Akku, Boot) erbt von BroadcastReceiver 1 min
Dominik Leim zwischen den App-Blöcken Explizite und Impliizite Intents explizite geben Klasse an implizite nur eine Action 2. methoden zum starten ohne und mit Result 2 min
Dominik geben Context an jede Activity ist ein Context da Activitiy von Context erbt, darum meist "this" und aufzurufende Acitivity-Klasse 30 sek
Dominik Intent gibt eine Action und eine Data-URI an Android sucht die passende Acitivity anhand von definierten Filtern sehr Lose kopplung aber Laufzeitfehler möglich 2 min
Thomas -> Resources: Nicht-code daten, sind auch in android selbst noch in der form da, verwaltung durch resource-manager ->projekt anlegen/öffnen -> R.java 30 sek
Thomas Ein Layout File pro View Filename: [a-z0-9_.] res/layout namespace 1 min
Thomas 30 sek
Thomas Filename: [a-z0-9_.] res/values einafchster fall: verwendung als text direkt in layout "This'll work"This'll also work 3 min
Thomas 30 sek
Thomas Filename: [a-z0-9_.] res/values einafchster fall: verwendung als text direkt in layout "This'll work"This'll also work weitere möglichkeiten: farbe,dimensionen html-formatierung 3 min
Thomas Filename: [a-z0-9_.] res/drawables-hdpi,ldpi,mdpi +nine-patch 4 min
Thomas ....liber im Editor Liegt in applikations-root-verzeichnis was alles dazu? 3 min -> Demo Resources (5 min) sum 52,5 min
Thomas ....liber im Editor Liegt in applikations-root-verzeichnis was alles dazu? 3 min -> Demo Resources (5 min) sum 52,5 min
Thomas ....liber im Editor Liegt in applikations-root-verzeichnis was alles dazu? 3 min -> Demo Resources (5 min) sum 52,5 min
Thomas -> 10 min
Thomas -> 10 min
Thomas -> 10 min
Thomas -> 10 min
Thomas -> 10 min
Thomas -> 10 min
Thomas -> 10 min
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
Thomas sum 65,5 min -> demo über elemnt id's + findViews()
onStop()??? 30 sek Ein Paar Ausschnitte aus der API immer wieder Beispiel
Dominik 3 min
Dominik PDU = Packet Data Unit BEISPIEL 2 min + demo 3 min -> 5 min
Thomas API-Key 7 min 97 min
Thomas API-Key 7 min 97 min
Dominik http://code.google.com/intl/de-DE/android/maps-api-signup.html DEMO APPLIKATION STARTN 2 min + demo 3 min +app-demo 2 min 10 min sum: 85 min
db : public synchronized SQLiteDatabase getReadableDatabase ()
public long insert ( String table, String nullColumnHack, ContentValues values) nullColumnHack SQL doesn't allow inserting a completely empty row, so if initialValues is empty this column will explicitly be assigned a NULL value
Thomas 5 min
Thomas ->Linux-Security auf Prozessebene User/Groups - Permissions -> Sanboxing Jede App eigene VM security-safety -> Application Signing Jede App hat Zertifikat Private Key von Developer Keine Authority Nur um App zu identifizieren
Thomas ->Standard-Applikation hat keine Permissions klar... -> Überprüfung während der installation. User muss permissions geben. -> Beispiel Permissions in AndroidManifest.xml