let’s dev

Blog

Top!

let’s dev | Scroll to top
let’s dev | Scroll to next content item

Hello

let’s dev | Scroll to previous content item
let’s dev Blog | App Builders 2019
by Nicolas
23. Mai 2019

App Builders 2019

Die vierte Ausgabe der App Builders Konferenz richtete sich einmal mehr an iOS- und Android-Entwickler aus aller Welt. Veranstaltungsort war zum zweiten Mal der am Schweizer Südzipfel gelegene Ferienort Lugano. Auf zwei Tage verteilt wurden Vorträge zu verschiedensten Themengebieten geboten.

Safety first!

Guilherme Rambo, der sich vor allem durch zahlreiche Leaks im iOS-Bereich einen Namen gemacht hat, sprach über die Wichtigkeit der Privatsphäre von Nutzern. Gerade in den letzten Monaten ist das Thema Datensicherheit und Privatsphäre von Nutzern immer mehr in den Fokus gerückt.

Laut Rambo sollen nur die Daten gesammelt werden, die in einer App auch wirklich benötigt werden. Er wies in diesem Zusammenhang auch darauf hin, vorsichtig im Umgang mit SDKs zu sein, die man selbst nicht entwickelt hat. Ganz besonders dann, wenn diese Closed Source sind und somit keinen Einblick in den Code ermöglichen. Denn in eine App eingebundenen SDKs haben die gleichen Rechte wie die App selbst. Das kann der Zugriff auf die Kamera, aber auch auf die Kontakte oder den Standort sein. Wenn ebendiese Rechte vom Nutzer eingeholt werden, gilt es außerdem zu beachten, nicht sämtliche Rechte durch zahlreiche Popups beim erstmaligen Starten der App einzuholen.

Rambo betont, dass die Rechte nur dann eingefordert werden sollen, wenn dies auch wirklich notwendig ist, also erst in der konkreten Situation z. B. beim Aufnehmen eines Fotos. Mit ähnlichen Fragestellungen rund um Datenschutz und Souveränität bei mobilen Applikationen beschäftigen auch wir uns intensiv im Rahmen des Forschungsvorhabens DaSoMan - Daten-Souveränitäts-Manager.

Auch beim Logging sollte darauf geachtet werden, welche Daten geloggt werden. Einen Vorteil bietet das Apple-eigene os_log. Verwendet man dabei dynamische Strings, wie im nachfolgenden Beispiel, werden diese in Release Builds nur mit <private> gekennzeichnet.

os_log(.default, "API token generated: %d", token)

Möchte man dies aus einem bestimmten Grund umgehen, lässt sich wie unten zu sehen %{public}d verwenden.

os_log(.default, "API token generated: %{public}d", token)

Eine App für alle iOS-Geräte

Janina Kutyn beleuchtete in ihrem Vortrag die Entwicklung von Benutzeroberflächen für verschiedene iOS-Geräte. Nachdem in den letzten Jahren immer mehr neue Gerätegrößen zur iOS-Familie hinzugekommen sind, gestaltet es sich immer schwieriger, eine UI zu entwickeln, die auf allen Geräten zugleich passend und ansprechend ist. Von Apple selbst gibt es im iOS SDK die Möglichkeit, auf Size Classes zurückzugreifen. Die verschiedenen Geräte werden sowohl in ihrer Höhe als auch in der Breite in Regular (groß) und Compact (klein) eingestuft. Doch inzwischen ist diese Einteilung eigentlich nicht mehr ausreichend, da sowohl das iPhone SE als auch das iPad Pro mit einem 12,9-Zoll-Bildschirm in der Höhe als Regular eingestuft werden.

Kutyn beschreibt, wie sie in einigen Projekten bereits eine eigene Alternative zu Size Classes definiert hat, abhängig von der Framehöhe und -breite eines Screens. Darauf kann dann beispielsweise in der Berechnung von Zellgrößen in einer UICollectionView zurückgegriffen werden. Es ist beispielsweise sinnvoll, auf kleineren Geräten weniger Spalten von Zellen anzuzeigen als auf großen iPads.

In dem Vortrag wurde anhand einer Beispiel-App gezeigt, wie man User Interfaces an verschiedene Gerätegrößen anpassen kann. Durch diese Darstellung wurde auch deutlich, wann es sinnvoll ist, UI im Code zu entwickeln und welche Vor- und Nachteile der Interface Builder bietet.

Crossplatform-Entwicklung und Code Sharing

Gleich zwei Redner beschäftigten sich damit, wie Code für Business Logik in iOS und Android geteilt werden kann. Cecilia Humlelu beleuchtete das Thema aus Sicht des Streaming-Anbieters Spotify, während Nicolas Märki und Joseph El Mallah die Vorteile für kleinere Unternehmen beschrieben.

Der große Nutzen in beispielsweise der Verwendung von C++-Code liegt darin, dass dieser sowohl in iOS als auch in Android nativ verwendet werden kann. Während aber in iOS eine recht einfache Zwischenschicht im Code genügt, um zwischen C++ und Objective-C zu kommunizieren, gestaltet sich das in Android durch das nicht besonders intuitive Java Native Interface (JNI) etwas schwieriger.

Um diese Zwischenschichten nicht selbst schreiben zu müssen, gibt es Ansätze wie beispielsweise Djinni von Dropbox, mit Hilfe dessen die Schnittstellen zum C++-Code generiert werden können. Ein Nachteil bei der Verwendung von Djinni ist jedoch die Tatsache, dass zusätzliche Interface Definitionen benötigt werden. Zusätzlich hat Dropbox erst kürzlich den Support für Djinni eingestellt.

Weitere Möglichkeiten wie Business Logik geteilt werden kann, sind unter anderem J2ObjC und Kotlin Native. In ihrem Vortrag beleuchtete Humlel zudem, wie in Swift Code mit C- und C++- Klassen integriert werden kann. Auch in Swift gibt es dabei Möglichkeiten, Speicher zu optimieren, wenn auf Pointer-Ebene gearbeitet wird. Außerdem betrachtete die Spotify-Entwicklerin, wie sich C-, C++- und Objective-C-Frameworks in Swift-Apps integrieren lassen.

Auch wir praktizieren seit vielen Jahren die Crossplatform Entwicklung mit C++. Der von uns entwickelte Ansatz bezeichnen wir als Shared Component und sehen insbesondere bei komplexen und umfangreichen Apps große Vorteile bei dieser Vorgehensweise.

Auf YouTube sind alle Vorträge noch einmal zu sehen. Neben den genannten Vorträgen sind auch die Erfahrungen von GitHub-Mitbegründer Scott Chacon als Unternehmer sowie die Erklärungen von Brandon Williams, an welchen Stellen Swift-Protokolle noch limitiert sind, sind sehr zu empfehlen. Neben den zahlreichen Vorträgen fanden auch zwei Interviews statt, in denen der Director of Engineering von SoundCloud und der Head of Engineering von Travis CI über ihre Erfahrungen sprachen.

Weitere Artikel aus unserem Blog

let’s dev Blog | Ausgeschlachtet - Tag der offenen Türen auf dem Alten Schlachthof Karlsruhe 2019

Corporate

Ausgeschlachtet - Tag der offenen Türen auf dem Alten Schlachthof Karlsruhe 2019

by Julian

2019-09-26

Weiterlesen
let’s dev Blog | Mensch und Computer 2019 - Konferenz zu User Experience und Usability in Hamburg

Corporate

Mensch und Computer 2019 - Konferenz zu User Experience und Usability in Hamburg

by Elena

2019-09-17

Weiterlesen
let’s dev Blog | Business und Enterprise App Verteilung unter iOS

Technical

Business und Enterprise App Verteilung unter iOS

by Aileen

2019-08-05

Weiterlesen
let’s dev Blog | Digital Transformation - Chances and Challenges in the Automotive Industry, Agriculture and New Technologies

Corporate

Digital Transformation - Chances and Challenges in the Automotive Industry, Agriculture and New Technologies

by Karl

2019-07-17

Weiterlesen
let’s dev Blog | let’s dev unterstützt Läuferinnen und Läufer bei der 7. KIT Meisterschaft

Corporate

let’s dev unterstützt Läuferinnen und Läufer bei der 7. KIT Meisterschaft

by Karl

2019-07-05

Weiterlesen
let’s dev Blog | Automatisiertes Testing von C++ Code mit Google Test und Google Mock – Teil 2

Technical

Automatisiertes Testing von C++ Code mit Google Test und Google Mock – Teil 2

by Arne

2019-06-13

Weiterlesen
let’s dev Blog | Apple WWDC 2019: Das sind die Highlights der Keynote

Technical

Apple WWDC 2019: Das sind die Highlights der Keynote

by Nicolas

2019-06-05

Weiterlesen
let’s dev Blog | Offizielle Eröffnung des Festigungs- und Expansionszentrums (FUX)

Corporate

Offizielle Eröffnung des Festigungs- und Expansionszentrums (FUX)

by Helena

2019-04-15

Weiterlesen
let’s dev Blog | Delegation aus Nottingham zu Besuch auf dem Alten Schlachthof in Karlsruhe

Corporate

Delegation aus Nottingham zu Besuch auf dem Alten Schlachthof in Karlsruhe

by Helena

2019-04-14

Weiterlesen
let’s dev Blog | Es ist soweit: Wir ziehen um!

Corporate

Es ist soweit: Wir ziehen um!

by Helena

2019-03-26

Weiterlesen
let’s dev Blog | Automatisiertes Testing von C++ Code mit Frameworks – Teil 1

Technical

Automatisiertes Testing von C++ Code mit Frameworks – Teil 1

by Arne

2019-02-20

Weiterlesen
let’s dev Blog | Die App im Google Play Store

Technical

Die App im Google Play Store

by Elisa

2019-01-24

Weiterlesen
let’s dev Blog | „UX Day“ 2018

Corporate

„UX Day“ 2018

by Aileen

2018-12-17

Weiterlesen
let’s dev Blog | let’s dev unterstützt SG Siemens Volleyballer aus Karlsruhe

Corporate

let’s dev unterstützt SG Siemens Volleyballer aus Karlsruhe

by Helena

2018-12-04

Weiterlesen
let’s dev Blog | KMU gestalten die Digitalisierung – Mittelstandskonferenz 2018

Corporate

KMU gestalten die Digitalisierung – Mittelstandskonferenz 2018

by Helena

2018-11-12

Weiterlesen
let’s dev Blog | Apple Wallet

Technical

Apple Wallet

by Maik

2018-10-26

Weiterlesen
let’s dev Blog | „Mensch und Computer“ 2018

Corporate

„Mensch und Computer“ 2018

by Judith

2018-09-24

Weiterlesen
let’s dev Blog | State Design Pattern in Android

Technical

State Design Pattern in Android

by Thomas

2018-09-17

Weiterlesen
let’s dev Blog | let’s dev ist autorisiertes Beraterunternehmen im Förderprogramm „go-digital“

Corporate

let’s dev ist autorisiertes Beraterunternehmen im Förderprogramm „go-digital“

by Helena

2018-09-01

Weiterlesen
let’s dev Blog | App Design & Development Conference 2018

Corporate

App Design & Development Conference 2018

by Helena

2018-08-14

Weiterlesen
let’s dev Blog | iOS 12: Die Top-Neuerungen im Überblick

Technical

iOS 12: Die Top-Neuerungen im Überblick

by Nicolas

2018-07-17

Weiterlesen
let’s dev Blog | let’s dev auf der CEBIT

Corporate

let’s dev auf der CEBIT

by Karl

2018-06-11

Weiterlesen
let’s dev Blog | Einführung in User Interface (UI) Tests mit Espresso

Technical

Einführung in User Interface (UI) Tests mit Espresso

by Raphael

2018-06-07

Weiterlesen
let’s dev Blog | Die App im Apple App Store: welche Informationen werden benötigt?

Technical

Die App im Apple App Store: welche Informationen werden benötigt?

by Aileen

2018-04-27

Weiterlesen
let’s dev Blog | Smart Pointer in C++

Technical

Smart Pointer in C++

by Matthias

2018-04-01

Weiterlesen
let’s dev Blog | User Interface Design für das iPhone X: alle Neuerungen auf einen Blick

Technical

User Interface Design für das iPhone X: alle Neuerungen auf einen Blick

by Helena

2018-02-07

Weiterlesen
let’s dev Blog | WebVR – Virtual Reality Experience im Browser mit dem A-Frame Framework

Technical

WebVR – Virtual Reality Experience im Browser mit dem A-Frame Framework

by Judith

2018-01-10

Weiterlesen
let’s dev Blog | Open Data Hackathon der Deutschen Bahn

Corporate

Open Data Hackathon der Deutschen Bahn

by Karl

2015-03-31

Weiterlesen
let’s dev Blog | Blur-Effekte unter iOS 7

Technical

Blur-Effekte unter iOS 7

by Katja

2014-04-24

Weiterlesen
let’s dev Blog | Beyond App Store – Distribution von iOS-Anwendungen

Technical

Beyond App Store – Distribution von iOS-Anwendungen

by Karl

2012-08-27

Weiterlesen
let’s dev Blog | Frontend-Architektur – Model View Presenter und Message Bus

Technical

Frontend-Architektur – Model View Presenter und Message Bus

by Karl

2011-03-08

Weiterlesen