Droidcon DE 2016 - Tag 1
Posted in tech with tags Android Telefon gadget Nerdig Technik Dienstreise Droidcon Konferenz -Ich mache es kurz, ich bin unter massen Applehipstern (jeder ein Notebook o.ä. mit Apfel auf dem Schoß) auf einer Konferenz aufgeschlagen. Die 8. Ausgabe der Droidcon in Berlin. Schlimm diese Hipster! Stehen mir auch ständig im Weg rum wenn ich mit meinem 2in1-Netbook, Phablet und meiner Systemkamera irgendwohin will. Oh…
Hier die kurze Zusammenfassung was ich mir an Talks heute so angetan habe. Es ging schwach los und steigerte sich dann aber im Laufe des Tages (mit wenigen Ausreißern). Alles in Allem ein recht informativer und unterhaltsamer Tag.
Leider gibt’s (noch?) nirgendwo Links auf Folien oder so, dabei einige wirklich lesezeichenwürdig.
Korrektur: gibt es doch
Einleitung
irgendeine Julia und ein Boris Jebsen (wenn ich die Namen richtig verstanden habe) verzählen 10-15min davon dass das die 8. Droidcon in Berlin ist und wie toll alles ist. Außerdem Sponsoren!
Achja… eine Android-App hat irgendwer nun doch tatsächlich gebaut (und am Ende des ersten Tages veröffentlicht - timing!). Nur X Jahre nachdem alle anderen Konferenzen sowas bekommen haben. Ein ordentlicher Kalender-Export oder die passende XML-Datei für bestehende Apps hätte es auch getan, aber hey!1
Dann noch organisatorisches und Ausblick. *gähn*
Keynote
- Thema: “ANDROID IS THE WORLD PHONE”
- Redner: Corey Leigh Latislaw
- Themen: Android wächst… go figure!
Sie erzählt dass in Afrika und co. andere Probleme herrschen und das ja der zukünftige Markt wäre. Milliarden möglicher Downloads für Leute ohne Strom/gutes Netzwerk - yeah.. right. Klingt nach total relevantem Markt. Teilweise 50% bis 60% Leute die nicht lesen können und wenn du $1 Preis verlangst wird das keiner bezahlen - soll ich darauf meine deutschen Apps optimieren? Was will die mir eigentlich sagen?
Ich verlasse selten Vorträge vorzeitig, aber hier bin ich 10min vor angekündigtem ende gegangen um lieber keinesfalls den Anfang des nächsten zu verpassen.
Spaßbemerkungen nebenbei: “She has 10mio App-Downloads, who else can claim that much here?” - Typ meldet sich - “Deutsche Bahn” - großartige Leistung sowas abartig verbocktes wie DB-Navigator zu produzieren!
Deep dive into android data bindings
- Redner: Radosław Piekarz
- Themen: Googles Android Data Binding Library - Verwendung/Konzepte, MVVM
Hochinteressantes Thema, am Rand werden auch viele dazugehörige Konzepte erwähnt und gezeigt (Lambdas, MVVM). Blöd halt nur dass der Sprecher mit starkem Akzent redet und der Vortrag nur aus Code besteht. Ich werde mir bestimmt keine Code-Listings aus dem Vortrag abtippen oder gar merken. Sowas will ich in einem Howto oder Beispielprojekt. Für den Vortrag wäre mehr “Was und Warum” schön gewesen und weniger “Wie genau?”.
Oder um eine Zwischenbemerkung zu zitieren: “Don’t worry, the Demo will be available on GitHub - 5-10min Vortrag und ein Link wären besser gewesen als 30min Quellcode-Slides.
https://github.com/radzio/DeepDiveIntoAndroidDataBinding
Offline-first - Apps for an always on UX
- Redner: Glynn Bird
- Themen: Ansätze um Anwendungen sinnvoll mit Offlinemodus zu versorgen
Erst ein Stapel Algemeinwissen warum man Offline-First bauen sollte und lustige Beispiele. Dann vorgeschlagene Lösung auf Basis von Apache CouchDB und IBM Cloudant (“our name for CouchDB-as-a-Service) IBM CloudantSync als Lib die die Arbeit tut plus 1-2 Libs für Änderungsbenachrichtigungen und ähnliches- Eigentlich geht es nur darum die CouchDB-Replikation als Synchronisation zu verwenden. Das Konzept scheint interessant, aber er hat nicht ein einziges Mal erwähnt wie das für Berechtigungen o.ä. abgesichert werden sollte. Auch die Idee nur Teile der DB zu replizieren kam nur mehr als Nachgedanke im Fragen/Antworten-Teil vor. “Of course! That’s the main part of synchronisation-Problems. We have Customers that do that.”
“Welche Seite entscheidet bei Konflikten was passiert? Meine Anwendung oder der Server?” - leider keine wirkliche Antwort, nur Hinweis auf Umfang und Bitte um Gespräch nach dem Talk.
Vlt. ist mir da aber auch nur der ein oder andere Teil entgangen. Interessantes Thema jedenfalls und auch wenn ich kein Fan von schemalosen DBs bin werde ich mir das vlt. mal ansehen.
Android in the World of IoT
- Redner: Selim Salman
- Themen: Beispiele für IoT-Android-Kombinationen - schön nichtssagend
“This is more like an inspiring Talk!”
Der Vortrag war Schrott, ein Stapel ganz vager Beispiele was IoT sein soll und was man messen könnte. Wozu? egal! Dafür schön wirr vorgetragen und oben drauf noch in gebrochenem Englisch.
Am Ende ein paar Beispiele für (hauptsächlich Google-) APIs, davon könnten 1-2 interessant sein. dann noch eine Folie mit 20 Links, für 1sec zu sehen.
What’s new in Android?
- Redner: WOJTEK KALICINSKI
- Themen: neue Funktionen und APIs in der nächsten Android-Version N, Multi-Window-Modus, Neuerungen an Benachrichtigungen, Batterie-Verhalten, Systemstatus, …
Neuigkeiten in Android Studio 2.2 (viele), Android Play (hauptsächlich zu Downloadgrösse relevant, 1-2 debug-sachen), Android N (24)
- Project Volta - Stromsparzeugs, weniger interessant für Entwickler - wird für betroffene Projekte aber Änderungen benötigen
- keine file://-URLs in Intents mehr, weil Berechtigungsprobleme u.ä. (jetzt Datei-Stream überreichen)
- private NDK-APIs sind jetzt hart verboten statt nur deprecated
- Multi-Window-Support
- app-zugriffs-api auf einzelne Verzeichnisse (statt ganzer SD, wie run-time-permissions)
- direct boot (nicht so interessant)
- Benachrichtigungen stark überarbeitet
- grösstenteils Java8-Unterstützung
Leider konnte er zu diesem Zeitpunkt keine Aussage zu Instant-Apps abgeben außer “It’s comming” und “We are really excited about it”
Argumented Reality with Project Tango
- Redner: Dominik Helleberg
- Themen: Kamera-Tracking, Beleuchtungs-Modellierung, 3D Occlusion und Schatten, professionelle VFX
Eine wirklich sehr nette Zusammenfassung was gerade per AR mögpich ist, was nicht und warum nicht. Dazu Vorstellung der Tango-Serie an Geräten die auf AR spezialisiert sind (existieren seit 2014, neueedings erstes frei kaufbares Gerät von Lenovo erhältlich) Vorführung dessen was ein Tango-Gerät praktisch kann, Einschränkungen aufgezählt (noch niemand analysiert Beleuchtung für sowas) und immer wieder Querverweise wie das bei 3D-Animationen für TV/Kino realisiert wird.
Werde ich mir hoffentlich auch beruflich nochmal genauer ansehen können.
IoT and rapid prototyping with Android
- Redner: Bernard Pletikosa
- Themen: Relayr Wolkenlösung um IoT-Anbindungen zusammen zu klicken
Erstmal werden jede Menge Beispiele für typische Rumspiel-IoT-Projekte aufgelistet. Dabei sowohl Versuche der Datenübertragung per Bildschirm (idiotisch, QR-Codes sind eine etablierte Lösung die besser funktioniert), Ton (schon eher), Touch-Interaktionen (Damit habe ich auch schon beruflich Zeit verschwendet, die Idee ist Schwachsinn und es funktionierte auch noch nirgendwo sinnvoll.)
Der Vortrag enthielt zwar kein verkaufbares Beispiel für irgendwas was die mal hergestellt haben, aber zumindest viele nette Ideen um die Hacker zu begeistern (Kaffeetassenzähler, Lampenfernbedienung, Klosensoren…).
taming the NDK-dragon for cross platform development
- Redner: Jernej Virag
- Themen: wie PSPDFKit mit C++ gegen verschiedene Platformen entwickelt
Die hatten eine bestehende Lib, die irgendwann auf Android benutzt werden sollte, also wie baut man die am besten in eine Android-Anwendung ein? NDK schien die einzige Lösung. Monorepo statt Git-Submodules o.ä. um alle Platformen und Abhängigkeiten in einem Repository zu verwalten.2
NDK bietet Zugriff auf Sound, OpenGL, Log, zlib… und nicht viel mehr. Wenn du das NDK verwendest, baust du am besten ein Spiel - alles andere ist Schmerz!
JNI ist unerträglich langsam und umständlich. Djinni sollte dabei helfen und magisch 99% der Schmerzen wegautomatisieren.
Debugging und Testing funktioniert überhaupt nicht. Emulatoren/Simulatoren/IDE-Unterstützung ist quasi nicht vorhanden. Darum: solche Dinge einfach nativ als Desktop-Anwendung ausführen3. (ist eh schneller und Desktop-Development-Tools gibt’s wie Sand am Meer)
Unbedingt aktuellen C++-Standard verwenden! Zwischen 1998 und 2014 gab es tatsächlich Verbesserungen in der Sprache (Überraschung!), z.b. bei Speicherverwaltung oder einfach sinnvoller Iteration.
Kleinkram:
- 6 typische C++ Standardlibraries werden unterstützt - keine vollständig.
- Um alle 6 unterstützte CPU-Architekturen4 von Android zu unterstützen musst du nur Binärcode für 3-4 Platformen mitliefern.
- Nicht gegen System-Libs linken
- Nicht die UTF8-Implementierung von C++ verwenden (stattdessen miniUTF oder platformspezifisches) - aber nimm gefälligst UTF8!
- alles in eine einzelne .so Bibliothek linken. Dynamisches Linken macht nur Ärger auf Android.
- gegen Nachmittag gab’s dann auch noch ein Update für die App, danach sah die sogar benutzbar aus ↩
- Nachteil sei dass das Repo ziemlich groß wurde, bei denen 3-4GB und damit ordentlich Zeitaufwand für Checkout und co. ↩
- zusätzlich bietet sich noch ein Jenkins-Script o.ä. an das die fertigten Binaries auf ein physikalisches Android-Gerät schiebt und ausführt. Das wäre auch relativ schnell zu implementieren ↩
- Aber wirklich NIEMAND nutzt Android-MIPS-Geräte und mit aktuellem ARM+x86 unterstützt man >98% aller Geräte. ↩