final small changes
This commit is contained in:
parent
31fd6a413f
commit
05455c7793
30
Bachelor.bib
30
Bachelor.bib
@ -103,6 +103,17 @@
|
|||||||
file = {/Users/fabian/Zotero/storage/Z2MJS6AP/crops.html}
|
file = {/Users/fabian/Zotero/storage/Z2MJS6AP/crops.html}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@software{CunaristRinf2024,
|
||||||
|
title = {Cunarist/Rinf},
|
||||||
|
date = {2024-03-21T21:50:33Z},
|
||||||
|
origdate = {2023-02-15T14:47:18Z},
|
||||||
|
url = {https://github.com/cunarist/rinf},
|
||||||
|
urldate = {2024-03-22},
|
||||||
|
abstract = {Rust for native business logic, Flutter for flexible and beautiful GUI},
|
||||||
|
organization = {Cunarist},
|
||||||
|
keywords = {android,app,cross-platform,dart,ffi,flutter,gui,ios,linux,macos,production-ready,restful-api,rust,web,windows}
|
||||||
|
}
|
||||||
|
|
||||||
@online{CustomFlutterEnginec,
|
@online{CustomFlutterEnginec,
|
||||||
title = {Custom {{Flutter Engine Embedders}}},
|
title = {Custom {{Flutter Engine Embedders}}},
|
||||||
url = {https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders},
|
url = {https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders},
|
||||||
@ -910,6 +921,14 @@
|
|||||||
file = {/Users/fabian/Zotero/storage/4YEIHLEH/why-gnu-linux.en.html}
|
file = {/Users/fabian/Zotero/storage/4YEIHLEH/why-gnu-linux.en.html}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@online{Riverpod,
|
||||||
|
title = {Riverpod},
|
||||||
|
url = {https://riverpod.dev/},
|
||||||
|
urldate = {2024-03-22},
|
||||||
|
langid = {english},
|
||||||
|
file = {/Users/fabian/Zotero/storage/KM39FJQT/riverpod.dev.html}
|
||||||
|
}
|
||||||
|
|
||||||
@online{Roadmap,
|
@online{Roadmap,
|
||||||
title = {Roadmap},
|
title = {Roadmap},
|
||||||
url = {https://github.com/flutter/flutter/wiki/Roadmap},
|
url = {https://github.com/flutter/flutter/wiki/Roadmap},
|
||||||
@ -927,6 +946,17 @@
|
|||||||
publisher = {Université de Liège, Liège, Belgique}
|
publisher = {Université de Liège, Liège, Belgique}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@software{rousseletRrousselGitRiverpod2024,
|
||||||
|
title = {{{rrousselGit}}/Riverpod},
|
||||||
|
author = {Rousselet, Remi},
|
||||||
|
date = {2024-03-21T23:37:31Z},
|
||||||
|
origdate = {2020-04-16T10:40:29Z},
|
||||||
|
url = {https://github.com/rrousselGit/riverpod},
|
||||||
|
urldate = {2024-03-22},
|
||||||
|
abstract = {A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.},
|
||||||
|
keywords = {dart,flutter,hacktoberfest,inheritedwidget,provider,riverpod,service-locator,state-management}
|
||||||
|
}
|
||||||
|
|
||||||
@online{RpifirmwareAddFirmware,
|
@online{RpifirmwareAddFirmware,
|
||||||
title = {Rpi-Firmware: Add Firmware for Zero 2w by Classabbyamp · {{Pull Request}} \#39123 · Void-Linux/Void-Packages},
|
title = {Rpi-Firmware: Add Firmware for Zero 2w by Classabbyamp · {{Pull Request}} \#39123 · Void-Linux/Void-Packages},
|
||||||
url = {https://github.com/void-linux/void-packages/pull/39123},
|
url = {https://github.com/void-linux/void-packages/pull/39123},
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,26 +2,20 @@
|
|||||||
|
|
||||||
\renewcommand{\headrulewidth}{0pt}
|
\renewcommand{\headrulewidth}{0pt}
|
||||||
|
|
||||||
\begin{abstract}
|
\subsection*{Abstract}
|
||||||
Die Integration von Flutter's plattformübergreifenden
|
|
||||||
UI-Fähigkeiten mit der Anpassungsfähigkeit von Embedded
|
\noindent
|
||||||
Linux verspricht die Rationalisierung der Entwicklung
|
|
||||||
von Benutzeroberflächen (UIs) für eingebettete Systeme.
|
Die Nutzung des quelloffenen Benutzerschnittstellen-Entwicklungs-Kit
|
||||||
Diese Arbeit untersucht die Eignung von Flutter in
|
Flutter für eingebettete Linux-Systeme ist ein neuer Ansatz, der
|
||||||
|
die Entwicklung von Benutzeroberflächen für eingebettete Systeme
|
||||||
|
vereinfachen könnte. Diese Arbeit untersucht deswegen die Eignung von Flutter in
|
||||||
diesem Kontext durch eine Fallstudie: die Entwicklung
|
diesem Kontext durch eine Fallstudie: die Entwicklung
|
||||||
einer Demo Anwendung mit Flutter für einen Raspberry
|
einer Demo Anwendung mit Flutter für einen Raspberry
|
||||||
Pi mit einer angepassten eingebetteten Linux Distribution.
|
Pi mit einer angepassten eingebetteten Linux Distribution.
|
||||||
Leistungsmesswerte und der Entwicklungsprozess werden bewertet.
|
Leistungsmesswerte und der Entwicklungsprozess werden dokumentiert.
|
||||||
Die Ergebnisse zeigen, dass Flutter, wenn es angepasst wird,
|
Die Ergebnisse zeigen, dass Flutter, wenn es angepasst wird,
|
||||||
erfolgreich zur Erstellung von attraktiven und benutzerfreundlichen
|
erfolgreich zur Erstellung von attraktiven und benutzerfreundlichen
|
||||||
eingebetteten Schnittstellen mit wenigen Kompromissen
|
eingebetteten Schnittstellen mit wenigen Kompromissen
|
||||||
bei der Leistung genutzt werden kann. \\
|
bei der Leistung genutzt werden kann. Es wurden dabei speziell die Embedder
|
||||||
|
|
||||||
Die Arbeit beschäftigt sich im Wesentlichen mit der Entwicklung einer
|
|
||||||
prototypischen Anwendung mit Flutter für ein eingebettetes Linux System.
|
|
||||||
Dabei wurde ein Konzept ausgearbeitet, dass zeigt wie Flutter in
|
|
||||||
eingebetteten Linux Systemen genutzt werden kann und es wurde anhand der
|
|
||||||
prototypischen Anwendung untersucht, wie gut Flutter für diesen
|
|
||||||
Verwendungszweck geeignet ist. Es wurden dabei speziell die Embedder
|
|
||||||
Flutter-Pi und Flutter-Auto genauer untersucht.
|
Flutter-Pi und Flutter-Auto genauer untersucht.
|
||||||
\end{abstract}
|
|
||||||
|
@ -118,6 +118,28 @@ Für die Demo App ist dies besonders wichtig, da die Anwendung als
|
|||||||
Einstiegspunkt so später umstrukturiert werden kann für andere
|
Einstiegspunkt so später umstrukturiert werden kann für andere
|
||||||
Anwendungen, die auf der Demo App aufbauen.
|
Anwendungen, die auf der Demo App aufbauen.
|
||||||
|
|
||||||
|
## Riverpod
|
||||||
|
|
||||||
|
Riverpod ist ein einfaches, aber leistungsstarkes
|
||||||
|
State-Management-Tool für Flutter. Es wurde entwickelt,
|
||||||
|
um die Verwaltung des Zustands in Flutter-Anwendungen
|
||||||
|
zu vereinfachen [@rousseletRrousselGitRiverpod2024]. In dem Projekt wurde
|
||||||
|
Riverpod genutzt, um die Zustandsverwaltung der Anwendung
|
||||||
|
zwischen der Prästentations- und Geschäftsschicht zu
|
||||||
|
verwalten. In der Präsentationsschicht werden die
|
||||||
|
Provider genutzt, um den Zustand von diesen auszulesen und
|
||||||
|
in der Geschäftsschicht werden die Provider mithilfe des
|
||||||
|
Riverpod Generators generiert.
|
||||||
|
Der Riverpod Generator ist ein Code-Generator, der
|
||||||
|
mit Riverpod verwendet wird, um die Provider und anderen
|
||||||
|
Boilerplate-Code automatisch zu generieren. Genutzt wird
|
||||||
|
der Generator mit der Definition "@riverpod" am Anfang
|
||||||
|
einer Klasse oder Funktion. Mit dem Paket "_riverpod_annotation_"
|
||||||
|
werden dabei Hinweise im Code Editor angezeigt, die zeigen,
|
||||||
|
ob der Code für den Generator korrekt ist oder nicht.
|
||||||
|
Das Projekt ist so konfiguriert, dass "_riverpod_annotation_"
|
||||||
|
aktiviert ist. Generierte Dart Dateien enden mit "_.g.dart_".
|
||||||
|
|
||||||
<!-- eine Klasse pro File, Ausnahmen eng zusammengehörige Klassen
|
<!-- eine Klasse pro File, Ausnahmen eng zusammengehörige Klassen
|
||||||
wie zB. Stateful Widgets
|
wie zB. Stateful Widgets
|
||||||
|
|
||||||
|
@ -450,3 +450,5 @@ Der Fehler tritt wahrscheinlich auf, weil die Anwendung nicht den Einstiegspunkt
|
|||||||
in der "_MaterialApp_" richtig neuladen kann. Es ist aber unklar wieso
|
in der "_MaterialApp_" richtig neuladen kann. Es ist aber unklar wieso
|
||||||
es nur beim ersten Mal passiert und die Fehlernachricht hilft in diesem
|
es nur beim ersten Mal passiert und die Fehlernachricht hilft in diesem
|
||||||
Fall nicht weiter.
|
Fall nicht weiter.
|
||||||
|
|
||||||
|
# Implementierung der Features {#features}
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
\pagebreak
|
|
||||||
|
|
||||||
# Implementierung der Features {#features}
|
|
||||||
|
|
||||||
Im Folgenden wird die Implementierung der
|
Im Folgenden wird die Implementierung der
|
||||||
einzelnen Features des Projektes beschrieben. Jedes
|
einzelnen Features des Projektes beschrieben. Jedes
|
||||||
Feature beschreibt einen Seitenbereich in der entwickelten Flutter Anwendung.
|
Feature beschreibt einen Seitenbereich in der entwickelten Flutter Anwendung.
|
||||||
@ -45,8 +41,6 @@ besteht aus einem einfachen Screen, der
|
|||||||
nur den Text "Flutter on Embedded Linux" anzeigt (siehe Abbildung
|
nur den Text "Flutter on Embedded Linux" anzeigt (siehe Abbildung
|
||||||
\ref{homeScreen}).
|
\ref{homeScreen}).
|
||||||
|
|
||||||
\pagebreak
|
|
||||||
|
|
||||||
\begin{multicols}{2}
|
\begin{multicols}{2}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
@ -5,6 +5,8 @@ Raster aus Karten mit den verschiedenen Benchmark Tests,
|
|||||||
welche ausgewählt werden können (siehe Abbildung \ref{benchmark}).
|
welche ausgewählt werden können (siehe Abbildung \ref{benchmark}).
|
||||||
Im folgenden wird jeder Benchmark Test genauer beschrieben.
|
Im folgenden wird jeder Benchmark Test genauer beschrieben.
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
\begin{multicols}{2}
|
\begin{multicols}{2}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
@ -90,6 +92,8 @@ erlaubt es normalen GLSL Shader Code in der Engine zu verwenden, der Code
|
|||||||
muss dazu nur manchmal leicht angepasst werden [@googleinc.WritingUsingFragment].
|
muss dazu nur manchmal leicht angepasst werden [@googleinc.WritingUsingFragment].
|
||||||
Der Shader Code von Shader Toy musste nur leicht angepasst werden.
|
Der Shader Code von Shader Toy musste nur leicht angepasst werden.
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
\begin{multicols}{2}
|
\begin{multicols}{2}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
@ -129,6 +133,8 @@ Im Test kann man visuell beobachten, ob die Karte flüssig bewegt
|
|||||||
werden kann und wie schnell die Tiles aus dem Internet geladen werden können
|
werden kann und wie schnell die Tiles aus dem Internet geladen werden können
|
||||||
(siehe Abbildung \ref{benchmarkMap}).
|
(siehe Abbildung \ref{benchmarkMap}).
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
\begin{multicols}{2}
|
\begin{multicols}{2}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
@ -13,8 +13,6 @@ Angeboten, welche explizit unter der CC-Lizenz stehen.
|
|||||||
Außerdem soll man mit nicht mehr als 60 Abrufen pro Stunde tätigen,
|
Außerdem soll man mit nicht mehr als 60 Abrufen pro Stunde tätigen,
|
||||||
was für die Testzwecke in dieser Arbeit ausreichend ist [@TagesschauAPIOpenAPIa].
|
was für die Testzwecke in dieser Arbeit ausreichend ist [@TagesschauAPIOpenAPIa].
|
||||||
|
|
||||||
\pagebreak
|
|
||||||
|
|
||||||
\Begin{multicols}{2}
|
\Begin{multicols}{2}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
@ -147,6 +147,17 @@ umzusetzen. Der Einsatz der CustomPainter in Flutter zeigte auch, dass man
|
|||||||
falls notwendig in Flutter relativ einfach angepasste komplexere Widgets
|
falls notwendig in Flutter relativ einfach angepasste komplexere Widgets
|
||||||
erstellen kann wie die Pixel-Matrix für die Ansteuerung der RGB-Matrix.
|
erstellen kann wie die Pixel-Matrix für die Ansteuerung der RGB-Matrix.
|
||||||
|
|
||||||
|
Mit dem zusätzlichen Testgerät Raspberry Pi Zero 2W konnte gezeigt werden,
|
||||||
|
dass Flutter auch auf schwächeren Geräten lauffähig ist und die Anwendung
|
||||||
|
läuft auf diesem Gerät auch weitesgehend flüssig, kam jedoch hin und wieder
|
||||||
|
an seine Grenzen. Der Leistungsbereich eines Pi Zero 2W scheint hier also im
|
||||||
|
Bereich der minimalen Anforderungen von Flutter zu liegen. Für Anwendungen
|
||||||
|
ohne stark aufwendige Animationen und an kleinen Displays mit einer niedrigen
|
||||||
|
Auflösung ist der Pi Zero 2W durchaus noch gut zur Nutzung geeignet. In der
|
||||||
|
Programmierung sollte auch besser versucht werden den Verbrauch vom Arbeitsspeicher
|
||||||
|
gering zu halten und Sicherheitsmaßnahmen treffen, welche verhindern, dass
|
||||||
|
der Arbeitsspeicher überläuft und die Anwendung abstürzt.
|
||||||
|
|
||||||
## Zukünftige Verbesserungen und Ideen
|
## Zukünftige Verbesserungen und Ideen
|
||||||
|
|
||||||
### Behebung von Fehlern
|
### Behebung von Fehlern
|
||||||
@ -174,4 +185,16 @@ Der zusätzliche Wechsel von OpenGL zu Vulkan könnte die
|
|||||||
Leistung eventuell auch verbessern, da Vulkan eine modernere
|
Leistung eventuell auch verbessern, da Vulkan eine modernere
|
||||||
API ist und der Nachfolger von OpenGL ist. [@googleinc.ImpellerRenderingEngine]
|
API ist und der Nachfolger von OpenGL ist. [@googleinc.ImpellerRenderingEngine]
|
||||||
|
|
||||||
|
### Nutzung von Rust
|
||||||
|
|
||||||
|
Mit dem Projekt "_rinf_" (Rust in Flutter) ist es möglich ohne
|
||||||
|
großen Aufwand Rust Code in Flutter zu nutzen [@CunaristRinf2024]. Rust ist eine
|
||||||
|
sehr performante Programmiersprache die genutzt werden könnte
|
||||||
|
um die Leistung von Flutter im eingebetteten Bereich zu verbessern,
|
||||||
|
indem Funktionen die viel Rechenleistung benötigen in Rust
|
||||||
|
implementiert werden. Besonders bei leistungsschwachen Geräten
|
||||||
|
wie dem Raspberry Pi Zero 2W könnte dies die Leistung
|
||||||
|
verbessern. Die Nutzung von Rinf mit Yocto müsste dazu
|
||||||
|
getestet werden.
|
||||||
|
|
||||||
# Schlussfolgerung
|
# Schlussfolgerung
|
||||||
|
Loading…
x
Reference in New Issue
Block a user