Android C++ Native SDK

Ähnliche Dokumente
Vaadin TouchKit. W3L AG

XMLBeam. Einfach XML-Handling. W3L AG

Contexts and Dependency Injection. W3L AG

Werkzeuge für ein innovatives Wissensmanagement. W3L AG

Smartphone Entwicklung mit Android und Java

Android GUI Entwicklung

Informatik Sommercamp 2012

Einflussfaktoren auf eine Softwarearchitektur und ihre Wechselwirkungen Entwurfsentscheidungen systematisieren

Skalierbare Webanwendungen mit Apache und Apache Tomcat. W3L AG

4D Server v12 64-bit Version BETA VERSION

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Vorkurs Informatik WiSe 15/16

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

GameGrid mit BlueJ Seite 1

Apps Programmierung von Android-Smartphones

Cross-Platform Mobile Development mit Xamarin Mark

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Einführung zu den Übungen aus Softwareentwicklung 1

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS HSRM

Übung: Verwendung von Java-Threads

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Visual Studio LightSwitch 2011

Cross-Platform Mobile mit.net

Einführung in Eclipse und Java

Aktivierung von Makros in den Erfassungshilfen

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Zentrale Informatik. Cross-platform Apps. Andrea Grössbauer David Meier. 11/11/15 Lunchveranstaltungen HS16 - Crossplatform Apps 1

0. Einführung. C und C++ (CPP)

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Produktinformation DaVinci Developer

Naviki GPS-Anwendungsentwicklung für Mobiltelefone

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Version 0.3. Installation von MinGW und Eclipse CDT

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Applications Applets (eingeschränkte Rechte)

Datenhaltung für Android. Model First

Mobile Security (Android OS) Ein Vortrag zur Sensibilisierung eines Benutzers im Umgang mit Smartphones und Tablets mit dem Android OS.

Proseminar Technische Informatik A survey of virtualization technologies

App-Entwicklung für Android

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

Java Einführung Packages

EINSATZ VON MICROSOFT TERMINAL-SERVICES ODER CITRIX METAFRAME

LEHRSTUHL FÜR DATENBANKEN

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

DMSEXPLORER PRODUKTINFORMATIONEN

DOKUMENTATION PASY. Patientendaten verwalten

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Java für C++ Programmierer

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Installationsanweisung JavaHelp

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Java Einführung Programmcode

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

ObjectBridge Java Edition

Dokumentation zu Pocket NeuroNet

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober FH-Gieÿen-Friedberg Android Praktikum

Einstieg in die Informatik mit Java

Masterplan Link. Technische Dokumentation. ASEKO GmbH. Version 1.0

Einführung in Android. 9. Dezember 2014

Mobile App Development. - Einführung -

Zugriff auf die elektronischen Datenbanken

Walkabout: Location Based Services mit Android und dem Google Phone

Ein mobiler Electronic Program Guide für Android

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

2. Hintergrundverarbeitung in Android: Services und Notifications

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Windows Verbindung mit WLAN BZPflege trennen Verbindung mit WLAN EDU-BZPflege automatisch erstellen... 30

Praktikum: Einstieg: Arbeitsplatz, JCreator

Ihr IT-Dienstleister aus Bonn

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Überblick. Allgemeines, Geschichtliches. Architektur. Oberfläche. Plugins und deren Einsatz

360.NET. Jan Schenk Developer Evangelist Web/Live Microsoft Deutschland

ATHOS Benutzertreffen

INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION

DAS SIND WIR. Kronthalerstraße Königstein phone +49 (0) fax +49 (0) mail web nolinkup.

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Synchronisations- Assistent

Benutzerhandbuch. Bürgel ConsumerCheck für OXID eshop

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

ebusiness auf Wolke sieben? Internet-Partner der Wirtschaft

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

Kurzeinführung Excel2App. Version 1.0.0

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

>> Hallo mobile Welt << Einstieg in die Android-App-Programmierung

Informatik I Tutorial

D a s P r i n z i p V o r s p r u n g. Anleitung. - & SMS-Versand mit SSL (ab CHARLY 8.11 Windows)

Transkript:

1 Android C++ Native SDK Android NDK - Android Native Development Kit W3L AG info@w3l.de 2014

2 Inhaltsverzeichnis Android Android NDK Unterstützte Bibliotheken Entwicklung in NDK Java Native Interface Native Activity ARM Neon Entwicklungswerkzeuge RenderScript Fazit Links zurück

3 Android Übersicht Software-Plattform für mobile Geräte Entwickelt von Open Handset Alliance Programmiersprache Java SDK für Windows, Linux und Mac OS X erhältlich Java Development Kit erforderlich Entwicklungsumgebung Eclipse mit ADT-Plugin Android Studio

4 Android Laufzeitumgebung Multi-User Linux System Laufende Applikationen erhalten vom System eine eindeutige User-ID Zugriffsrechte für alle Dateien der Applikation werden nur der zugeteilten User-ID bereitgestellt Applikationen werden in eigenständigen System-Prozessen ausgeführt Principle of least privilege Dalvik VM bildet Laufzeitumgebung für Applikation

5 Android Applikation Activity View für Benutzer-Interaktion Service Komponente für lang laufende Prozesse im Hintergrund Unterstützt keine UI Content Provider Verwaltet Zugriff auf Daten Zugriff auf Datenbanken oder Dateisystem Broadcast Receiver Registrierung auf Systemereignisse

6 Android NDK Einleitung Ermöglicht die Entwicklung von native Applikationen Programmiersprache C und C++ Geeignet für CPU-Intensive Prozesse, die wenig Speicher benötigen Audio, Bild und Videobearbeitung Systemvoraussetzungen Linux, OS X oder Windows Cygwin 1.7 für Windows Zielsystem Android ab Version 1.5 Prozessorarchitektur ARMv5 und ARMv7 MIPS x86

7 Unterstützte Bibliotheken C und C++ Minimale C++ Unterstützung RTTI wird nicht unterstützt C++ Exceptions werden nicht unterstützt Alternative Runtime kann eingebunden werden gabi++ stlport gnustl libc++

8 Unterstützte Bibliotheken Hilfsfunktionen Math Library Mathematische Funktionen und Makros Trigonometrische Funktion Android Log-Support Ausgabe von Log-Informationen in Log-Buffer Priorität kann festgelegt werden Log-Buffer sehr klein (< 64 KB) Text kann im Logcat ausgelesen werden Zlib Komprimieren und Dekomprimieren von Daten Deflate-Algorithmus Dynamic Linker Lib Dynamisches nachladen von Programmbibliotheken

9 Unterstützte Bibliotheken Multimedia OpenGL ES Bibliotheken zur Ansteuerung von Grafikhardware für eingebettete Systeme Darstellung von 3D-Szenen Datentypen sind beschränkt OpenSL ES Bibliotheken für die native Audioverarbeitung für eingebettete Systeme Spezifische Erweiterungen für Android OpenMAX AL EGL Bibliotheken für die Audio- und Videoverarbeitung Programmierschnittstelle zwischen OpenGL ES und Fenster- Management

10 Unterstützte Bibliotheken Android JNIGraphics Ermöglicht Zugriff auf Pixel-Buffer von Java-Bitmap Objekten Bildinformationen werden bereitgestellt Android Native Application API Native Activity Registrierung auf Eingaben und Sensoren Fenstermanagement Zugriff auf Assets oder OBB-Dateien (Opaque Binary Blob)

11 Entwicklung in NDK Hello World SDK Android Projektstruktur Projektstruktur mit Verzeichnis /jni erweitern Projektbeschreibung Application.mk Zielprozessor Einstellungen für Compiler und Linker Projektbeschreibung Android.mk Module Quelltext-Dateien

12 Java Native Interface Schnittstelle für Zugriff auf plattformspezifische Funktionen Native Funktionen können zur Laufzeit von Java-Code aufgerufen werden Bidirektionale Aufrufe möglich static { System.loadLibrary("example-jni"); } public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } TextView tv = new TextView(this); tv.settext(jnifunction()); setcontentview(tv); public native String jnifunction();

13 Native Activity Implementierung einer Activity in C-Code native_activity.h android_native_app_glue.h Keine UI-Komponenten vorhanden Applikation weiterhin an eigene VM-Prozess gebunden Konfigurationseintrag in AndroidManifest.xml

14 ARM Neon Multimedia-Erweiterung Erweiterung der Prozessor-Architektur ARM SIMD (Single Instruction, Multiple Data) Eine Rechenoperation wird auf mehrere Datenströme ausgeführt Sinnvoll bei parallelen Operationen in der Bild-, Audio- und Videoverarbeitung Leistungssteigerung von 60% bis 150% bei komplexe Videocodecs Unterstützte Standards MPEG-4 H.264 On2 VP6/7/8 Real AVS

15 Entwicklungswerkzeuge Import Modul NDK-Module außerhalb der Projektstruktur importieren Konfiguration in Android.mk Keine zyklischen Abhängigkeiten erlaubt NDK Build Kommandozeilentool für die Kompilierung NDK Depends Abhängigkeiten der Bibliotheken werden aufgelöst Option --print-java generiert Java-Code für JNI

16 Entwicklungswerkzeuge NDK GDB Erzeugt eine Debug-Session für die native Implementierung Ausführbedingungen Maschinencode muss mit NDK Build erzeugt werden Debug-Funktion muss in der Manifest-Datei von Android aktiviert werden Wird nur für Android Version 2.2 oder höher unterstützt NDK Stack Erleichtert Auswertung von Log-Informationen Stack Trace aus Logcat kann ausgewertet werden

17 RenderScript Alternative für native Implementierungen Script-Sprache für performance-kritische Codeabschnitte Entwickelt für verschiedene Prozessortypen Laufzeitumgebung nutzt CPU, GPU oder DSP Script-Code Programmiersprache von C99 abgeleitet RS- oder RSH-Dateien, abgelegt im Android-Projekt LLVM (Low Level Virtual Machine) kompiliert Code in Bytecode Bytecode wird zur Laufzeit (Just-In-Time) in Maschinencode umgewandelt Unterstützte Versionen Android Version 2.2 mit Support Library Android Version 3.0

18 Fazit NDK in der Praxis Erhöhte Ausführgeschwindigkeit bei rechenintensive Operationen Steigert Komplexität der Anwendung Geringe Portabilität Erhöhte Anforderungen bei Testumgebung Debug-Möglichkeiten sind begrenzt Wartungsaufwand wird erhöht

19 Links Android NDK https://developer.android.com/tools/sdk/ndk/index.html Android NDK Dokumentation http://www.kandroid.org/ndk/docs/overview.html ARM NEON http://www.arm.com/products/processors/technologies/neon.php Android RenderScript http://developer.android.com/guide/topics/renderscript/index.html

Inhouse-Schulungen W3L-Akademie Flexibel online lernen und studieren! Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und Berater. Schulungsthemen Softwarearchitektur (OOD) Requirements Engineering (OOA) Nebenläufige & verteilte Programmierung Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen. In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir zwei Online-Studiengänge B.Sc. Web- und Medieninformatik B.Sc. Wirtschaftsinformatik und 7 Weiterbildungen im IT-Bereich an. Sprechen Sie uns an! Tel. 0231/61 804-0, info@w3l.de Besuchen Sie unsere Akademie! http://akademie.w3l.de