Andreas Schreiber @dlr.de fr alle Plattformen entwickeln ! Plattformbergreifende App- Entwicklung...

download Andreas Schreiber  @dlr.de  fr alle Plattformen entwickeln ! Plattformbergreifende App- Entwicklung mit Python und Kivy . Andreas Schreiber  @dlr.de

of 46

  • date post

    05-Mar-2018
  • Category

    Documents

  • view

    215
  • download

    2

Embed Size (px)

Transcript of Andreas Schreiber @dlr.de fr alle Plattformen entwickeln ! Plattformbergreifende App- Entwicklung...

  • Apps fr alle Plattformen entwickeln! Plattformbergreifende App-Entwicklung mit Python und Kivy

    Andreas Schreiber

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 1

  • Vorstellung Python Kivy Entwicklungstools Demos Beschrnkungen Credits

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 2

    bersicht

  • > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 3

    Vorstellung

    Wissenschaftler, Abteilungsleiter

    Grnder, Geschftsfhrer

    Python-begeistert

    http://www.dlr.de/sc/desktopdefault.aspx/tabid-1199/1657_read-3066/http://medando.de/https://2013.de.pycon.org/http://www.dlr.de/sc/desktopdefault.aspx/tabid-8685/14943_read-37157/

  • DLR.de Folie 4 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    Das DLR Deutsches Zentrum fr Luft- und Raumfahrt

    Forschungseinrichtung Raumfahrt-Agentur Projekttrger

  • Standorte und Personal

    DLR.de Folie 5 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    Circa 7.400 Mitarbeiterinnen und Mitarbeiter arbeiten in 32 Instituten und Einrichtungen in 16 Standorten.

    Bros in Brssel, Paris, Tokio und Washington.

    Kln

    Oberpfaffenhofen

    Braunschweig

    Gttingen

    Berlin

    Bonn

    Neustrelitz

    Weilheim

    Bremen Trauen

    Lampoldshausen

    Hamburg

    Stuttgart

    Stade

    Augsburg

    Jlich

  • Python

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 6

  • Universelle High-Level Programmiersprache

    Objektorientiert, Aspektorientiert, Funktional

    Dynamische Typisierung

    Einfach zu lernen und klare, bersichtliche Syntax

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 7

    Python

    def faculty(x): if x > 1: return x * faculty(x - 1) else: return 1

  • Frhe Technologien

    PyS60 for Symbian Python CE for Windows Mobile

    Aktuelle Technologien

    Scripting Layer for Android (SL4A) Python for Android (Py4A) PySide / Qt for Android WinRT / IronPython for Windows 8 Kivy

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 8

    Python auf mobilen Gerten

  • Kivy

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 9

  • Plattformbergreifendes Python-Framework

    Android iOS Meego Windows Linux OS X (Raspberry Pi)

    Entwicklung in Python auf allen Plattformen keine Emulation!

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 10

    Kivy

    kivy.org

  • Framework fr Natural User Interfaces (NUI)

    Touchscreens / Multi-Touch

    GPU-beschleunigte Grafik

    Basiert auf OpenGL ES 2.0

    Geeignet fr Prototypen und Produkte

    Portierung auf neue Plattformen ist leicht

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 11

    Kivy Grundlagen

  • Open Source (LGPL), 7 Core Developer

    Source Code: github.com/kivy

    Dokumentation: kivy.org/docs

    Kivy im Google Play Store: play.google.com/store/apps/details?id=org.kivy.pygame

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 12

    Kivy Software

  • Kivy sagt Hallo!

    DLR.de Folie 13 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text='Hello Cologne') TestApp().run()

  • DLR.de Folie 14 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

  • Python fr Widgets, I/O und Programmlogik

    Sprache KV fr Layout und Grafik Cython fr Low-level-Zugriff auf Grafikroutinen

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 15

    Entwicklung mit Kivy

  • Verfgbare Standard-Widgets

    Label, Button, CheckBox, Image, Slider, ProgressBar, Switch, Texteingabe

    Fnf Layouts: Grid, Box, Anchor, Float, Stack Komplexe Widgets: Bubble, Dropdown-Liste,

    Filechooser, Popup, Spinner, ListView, TabbedPanel, ... Screen manager und Screen-bergnge Interaktionen: Scatter, Zoom, Pan, Rotate

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 16

    Widgets

  • Leicht(er)es Erstellen des Benutzerinterfaces

    Drei Typen

    KV Rule: Style, das auf Widget-Klasse angewendet wird

    Root-Widget: Erzeugt ein neues Widget Dynamische Klassen: Erzeugt Widgets on-the-fly

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 17

    Kivy Language (KV)

  • Hello St. Augustin mit KV

    DLR.de Folie 18 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    from kivy.app import App class HelloApp(App): pass HelloApp().run()

    #:kivy 1.0 Button: text: Hello St. Augustin

    Datei hello.kv definiert Root-Widget

  • > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 19

    Beispiel: Pong import kivy from kivy.app import App from kivy.uix.widget import Widget class PongGame(Widget): pass class PongApp(App): def build(self): return PongGame() if __name__ == '__main__': PongApp().run()

  • Pong Grafik

    DLR.de Folie 20 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    #:kivy 1.7.1 : canvas: Rectangle: pos: self.center_x - 5, 0 size: 10, self.height Label: font_size: 70 center_x: root.width / 4 top: root.top - 50 text: "0" Label: font_size: 70 center_x: root.width * 3 / 4 top: root.top - 50 text: "0"

  • Pong

    DLR.de Folie 21 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    Ganzes Beispiel: http://kivy.org/docs/tutorials/pong.html

  • Entwicklungstools

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 22

  • Tools fr Android

    Python-for-android Cross compiler fr ARM Android SDK & NDK Python und einige Python-Msodule

    Tools fr iOS

    Kivy-iOS Generierung eines Xcode-Projekts

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 23

    Entwicklungstools

  • Buildozer

    Erledigt die einzelnen Schritte: Download Compilation Packaging

    https://github.com/kivy/buildozer

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 24

    Verstecken der Komplexitt

    % buildozer android debug deploy run

  • Gerte-APIs

    Kamera, Kompass, Beschleunigung, Location,

    Zugriff aus Kivy- bzw. Python-Anwendungen

    PyJNIus Zugriff auf Java-Klassen von Python PyOBJus Zugriff auf Objective-C von Python Plyer Plattformunabhngiger Wrapper der APIs

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 25

    Zugriff auf APIs der Gerte

  • PyJNIus

    Implementiert mit JNI und Java-Reflection

    https://github.com/kivy/pyjnius

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 26

    Zugriff auf Java-Klassen von Python

    from jnius import autoclass Hardware = autoclass('org.renpy.android.Hardware') print 'DPI is', Hardware.getDPI()

  • Plyer

    Noch sehr frisch! Benutzt PyJNIus bzw. PyOBJus

    https://github.com/kivy/plyer

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 27

    Wrapper fr plattformspezifische APIs

    from plyer import notification notification.notify(title='Hello', message='World')

  • Demos

    > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013 DLR.de Folie 28

  • Kivy Pictures

    DLR.de Folie 29 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    https://play.google.com/store/apps/details?id=org.kivy.pictures

  • Flat Jewels

    DLR.de Folie 30 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    https://play.google.com/store/apps/details?id=com.meltingrocks.flatjewels

  • Kleiner Drache Luki

    DLR.de Folie 31 > FrOSCon 8 > Andreas Schreiber Apps fr alle Plattformen entwickeln! > 25.08.2013

    http://medando.de/

  • Kleiner Drache Luki

    DLR.de Folie 32 > FrOSCon 8 > Andreas Schreiber Apps fr alle Pla