This commit is contained in:
baldeau 2024-03-09 23:25:22 +01:00
parent 39a6d87817
commit c7a38ea9a7
51 changed files with 1212 additions and 47 deletions

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "code/flutter_elinux"]
path = code/flutter_elinux
url = https://avoid.sh/bachelor/flutter_elinux.git
[submodule "code/crops-yocto"]
path = code/crops-yocto
url = https://avoid.sh/bachelor/crops-yocto.git

View File

@ -5,7 +5,7 @@
date = {2015-01-14},
url = {https://stackoverflow.com/a/27950451},
urldate = {2024-02-19},
organization = {{Stack Overflow}},
organization = {Stack Overflow},
file = {/Users/fabian/Zotero/storage/HNIIPU6S/what-is-the-minimum-amount-of-ram-required-to-run-linux-kernel-on-an-embedded-de.html}
}
@ -16,10 +16,17 @@
urldate = {2024-02-18},
abstract = {Note: This license has also been called the “New BSD License” or “Modified BSD License”. See also the 2-clause BSD License. Copyright {$<$}YEAR{$>$} {$<$}COPYRIGHT HOLDER{$>$} R…},
langid = {american},
organization = {{Open Source Initiative}},
organization = {Open Source Initiative},
file = {/Users/fabian/Zotero/storage/ZHWXNYXB/bsd-3-clause.html}
}
@online{BestWayUse,
title = {The Best Way to Use {{Yocto}} and {{Docker}} — {{Get Intimate With Cyber}} ! 0.1 Documentation},
url = {https://ubs_csse.gitlab.io/secu_os/tutorials/crops_yocto.html},
urldate = {2024-03-09},
file = {/Users/fabian/Zotero/storage/IHWHZKUM/crops_yocto.html}
}
@online{bizzottoComparisonPopularFlutter2023,
title = {A {{Comparison}} of {{Popular Flutter App Architectures}}},
author = {Bizzotto, Andrea},
@ -28,10 +35,17 @@
urldate = {2023-11-19},
abstract = {Comparing my Riverpod App Architecture with other popular ones such as MVC, MVVM, Bloc, Stacked, Clean Architecture, and Android App Architecture.},
langid = {english},
organization = {{Code With Andrea}},
organization = {Code With Andrea},
file = {/Users/fabian/Zotero/storage/DUDXBAGD/comparison-flutter-app-architectures.html}
}
@online{DartVSJava,
title = {Dart {{VS Java}} Benchmarks, {{Which}} Programming Language or Compiler Is Faster},
url = {https://programming-language-benchmarks.vercel.app/dart-vs-java},
urldate = {2024-03-08},
file = {/Users/fabian/Zotero/storage/VNKS4FFB/dart-vs-java.html}
}
@article{dechenshawSystemsSystemsCyberPhysical2016,
title = {Systems of {{Systems}}, {{Cyber-Physical Systems}}, the {{Internet-of-Things}}…whatever {{Next}}?},
author = {family=C Henshaw, given=Michael J., prefix=de, useprefix=true},
@ -75,7 +89,7 @@
urldate = {2024-02-22},
abstract = {The article explains what a Linux distribution is, its main characteristics and components, how it caters to a wide range of users and purposes.},
langid = {english},
organization = {{Alibaba Cloud Community}},
organization = {Alibaba Cloud Community},
file = {/Users/fabian/Zotero/storage/LAGSLH4P/what-is-linux-distribution_599979.html}
}
@ -103,7 +117,7 @@
urldate = {2024-02-15},
abstract = {Flutter makes it easy and fast to build beautiful apps for mobile and beyond - flutter/flutter},
langid = {english},
organization = {{GitHub}},
organization = {GitHub},
file = {/Users/fabian/Zotero/storage/VVZT5YJA/Flutter-GPU.html}
}
@ -124,7 +138,7 @@
urldate = {2024-02-22},
abstract = {At the 2004 ESC Wind River's Jerry Fiddler claimed that there is no real embedded systems market. He felt that it was all about "the device," and in},
langid = {american},
organization = {{Embedded.com}},
organization = {Embedded.com},
file = {/Users/fabian/Zotero/storage/XNVLRL6Q/whats-embedded.html}
}
@ -136,10 +150,20 @@
urldate = {2023-11-13},
abstract = {This document describes an experiment in porting the Flutter engine to a target that is currently not supported. That fact that I used a…},
langid = {english},
organization = {{Flutter}},
organization = {Flutter},
file = {/Users/fabian/Zotero/storage/3K7HX2EI/flutter-on-raspberry-pi-mostly-from-scratch-2824c5e7dcb1.html}
}
@online{googleinc.DartLanguageEvolution,
title = {Dart Language Evolution},
author = {{Google Inc.}},
url = {https://dart.dev/guides/language/evolution/},
urldate = {2024-03-09},
abstract = {Notable changes and additions to the Dart programming language.},
langid = {english},
file = {/Users/fabian/Zotero/storage/BRNQA73A/evolution.html}
}
@online{googleinc.FutterBuildAny,
title = {Futter - {{Build}} for Any Screen},
author = {{Google Inc.}},
@ -160,11 +184,21 @@
file = {/Users/fabian/Zotero/storage/F6LI3FTY/declarative.html}
}
@online{googleinc.UnsoundNullSafety,
title = {Unsound Null Safety},
author = {{Google Inc.}},
url = {https://dart.dev/null-safety/unsound-null-safety/},
urldate = {2024-03-09},
abstract = {Mixing language versions lets you migrate to null safety at your own pace, with some of the benefits of null safety.},
langid = {english},
file = {/Users/fabian/Zotero/storage/JWER5SLE/unsound-null-safety.html}
}
@book{hajianFlutterEngineering2024,
title = {Flutter Engineering},
author = {Hajian, Majid},
date = {2024-01-18},
publisher = {{Staten House}},
publisher = {Staten House},
abstract = {Become a Flutter professional using tactics explained from a software engineer's perspective.This book covers various software engineering topics in Flutter and is divided into five parts, each addressing specific areas of interest and expertise.Foundation of Flutter Engineering introduces software engineering concepts specifically relevant to Flutter. It starts by explaining the fundamental principles of Flutter and how they work and then moves on to demonstrate how these concepts can be applied within the Flutter framework. This section also covers coding design patterns that help readers develop a foundational understanding of the subject matter.Architecture: beginning with basic principles and progressing onto different styles and patterns in architectural design. It covers essential concepts such as concurrency, parallelism, dependency injection, and state management. Additionally, this section explores the architectural factors involved in developing offline apps, guiding readers on strategic thinking and decision-making in software architecture.Processes part covers rules and guidelines, continuous delivery and integration, testing methodologies, and effective documentation practices in a comprehensive manner. This section gives readers the knowledge needed to streamline and efficiently develop apps.Ethical Engineering discusses the OWASP Top 10 security risks, privacy standards, and accessibility considerations. The section emphasizes creating inclusive and secure applications that value user privacy.Advancing UI Development explores adaptive and responsive UIs and sophisticated topics like custom painting, shaders, internationalization, localization, and effective theming in Flutter. This section enhances the readers skills in creating visually appealing and user-friendly interfaces.Whether a beginner or an experienced developer, this book can offer you something to learn.},
isbn = {9798889405528},
langid = {Englisch},
@ -175,7 +209,7 @@
title = {Embedded Systems Design},
author = {Heath, Steve},
date = {2002},
publisher = {{Elsevier}},
publisher = {Elsevier},
isbn = {0-08-047756-9}
}
@ -207,6 +241,13 @@
file = {/Users/fabian/Zotero/storage/5RDNK486/042964.html}
}
@online{IvihomescreenShellPlugins,
title = {Ivi-Homescreen/Shell/Plugins/Platform\_views/{{README}}.Md at Ee49745485a88f23c32b8e3a62da40d4102c4623 · Toyota-Connected/Ivi-Homescreen},
url = {https://github.com/toyota-connected/ivi-homescreen/blob/ee49745485a88f23c32b8e3a62da40d4102c4623/shell/plugins/platform_views/README.md},
urldate = {2024-03-09},
file = {/Users/fabian/Zotero/storage/P428MCND/README.html}
}
@article{korogluComparisonKeypadsTouchscreen2015,
title = {Comparison of Keypads and Touch-Screen Mobile Phones/Devices as Potential Risk for Microbial Contamination},
author = {Koroglu, Mehmet and Gunal, Selami and Yildiz, Fatma and Savas, Mehtap and Ozer, Ali and Altindis, Mustafa},
@ -226,11 +267,22 @@
file = {/Users/fabian/Zotero/storage/TFSCZX36/Koroglu et al_2015_Comparison of keypads and touch-screen mobile phones-devices as potential risk.pdf}
}
@online{larsbakDartLanguageStructured2011,
title = {Dart: A Language for Structured Web Programming},
shorttitle = {Dart},
author = {{Lars Bak}},
date = {2011-10-10},
url = {https://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html},
urldate = {2024-03-09},
organization = {Dart: a language for structured web programming},
file = {/Users/fabian/Zotero/storage/3YTIXF3V/dart-language-for-structured-web.html}
}
@book{leeIntroductionEmbeddedSystems2016,
title = {Introduction to Embedded Systems: {{A}} Cyber-Physical Systems Approach},
author = {Lee, Edward Ashford and Seshia, Sanjit Arunkumar},
date = {2016},
publisher = {{MIT press}},
publisher = {MIT press},
isbn = {0-262-53381-2}
}
@ -243,7 +295,7 @@
volume = {15},
number = {3},
pages = {4837--4869},
publisher = {{Multidisciplinary Digital Publishing Institute}},
publisher = {Multidisciplinary Digital Publishing Institute},
issn = {1424-8220},
doi = {10.3390/s150304837},
url = {https://www.mdpi.com/1424-8220/15/3/4837},
@ -268,10 +320,31 @@
title = {Embedded System Design: Embedded Systems Foundations of Cyber-Physical Systems, and the Internet of Things},
author = {Marwedel, Peter},
date = {2021},
publisher = {{Springer Nature}},
publisher = {Springer Nature},
isbn = {3-030-60910-3}
}
@article{matsubayashiGraphicalUserInterface2020,
title = {Graphical {{User Interface Using Flutter}} in {{Embedded Systems}}},
author = {Matsubayashi, Hidenori},
date = {2020-10-27},
url = {https://elinux.org/images/6/61/Oct_27_Graphical_User_Interface_Using_Flutter_in_Embedded_Systems_Hidenori_Matsubayashi.pdf},
langid = {english},
file = {/Users/fabian/Zotero/storage/CJE3VI87/Matsubayashi and Corporation - Graphical User Interface Using Flutter in Embedded.pdf}
}
@online{mickeyYoctoProjectCROPSdemetaraspberrypiwobirudo1642213142,
title = {Yocto Project CROPSでmeta-raspberrypiをビルド},
author = {{mickey}},
date = {1642213142},
url = {https://mickey-happygolucky.hatenablog.com/entry/2022/01/15/111902},
urldate = {2024-03-09},
abstract = {はじめに 前回CROPSを動かしてみた。 CROPSでmeta-raspberrypiをビルドしてみる。今回はラズベリーパイ4を使用する。 run\_crops.sh 今回も前回作成したrun\_crops.shを使用する。 \#!/bin/sh cmd="source /workdir/poky/oe-init-build-env" if [ \$\# -gt 0 ] ; then cmd="\$\{cmd\} \&\& \$@" fi docker run --rm -it -v \$(pwd):/workdir crops/poky --workdir=/workdir bash -c "\$\{cmd\}" 実行権…},
langid = {japanese},
organization = {みつきんのメモ},
file = {/Users/fabian/Zotero/storage/KYSU3P75/111902.html}
}
@article{oszutowska-mazurekAssociationsKnowledgeBehaviours2021,
title = {The {{Associations}} between {{Knowledge}} and {{Behaviours Related}} to {{Touch Screens}} and {{Microbiological Threats}} among {{IT Students}}},
author = {Oszutowska-Mazurek, Dorota and Fastowicz, Jaroslaw and Mazurek, Przemyslaw},
@ -301,7 +374,7 @@
volume = {14},
number = {2},
pages = {65--68},
publisher = {{SAGE Publications}},
publisher = {SAGE Publications},
issn = {1757-1774},
doi = {10.1177/1757177413475903},
url = {https://doi.org/10.1177/1757177413475903},
@ -334,7 +407,7 @@
urldate = {2024-02-18},
abstract = {VERSION: 0.0.6 flutter: 0.0.26 flutter\_driver: 0.0.4 flutter\_test: 0.0.4},
langid = {english},
organization = {{GitHub}},
organization = {GitHub},
file = {/Users/fabian/Zotero/storage/DJJMSGJK/v0.0.html}
}
@ -353,16 +426,55 @@
file = {/Users/fabian/Zotero/storage/QWUKGL4U/39123.html}
}
@online{SetEditor,
title = {Set up an Editor},
url = {https://docs.flutter.dev/get-started/editor},
urldate = {2024-03-07},
abstract = {Configuring an IDE for Flutter.},
langid = {english},
file = {/Users/fabian/Zotero/storage/TL9QUH84/editor.html}
}
@online{Skia,
title = {Skia},
url = {https://skia.org/},
urldate = {2024-02-13},
abstract = {2D Graphics Library},
langid = {english},
organization = {{Skia}},
organization = {Skia},
file = {/Users/fabian/Zotero/storage/NV4BSHXY/skia.org.html}
}
@online{stephanievannessRacingCESExciting2024,
title = {Racing {{Toward CES}} with an {{Exciting New UI}} for {{Automotive Grade Linux IVI Demo}}},
author = {{Stephanie Van Ness}},
date = {2024-01-02},
url = {https://www.ics.com/blog/racing-toward-ces-exciting-new-ui-automotive-grade-linux-ivi-demo},
urldate = {2024-03-09},
abstract = {ICS created an exciting new IVI demo to showcase Automotive-Grade Linux at CES.},
langid = {english},
file = {/Users/fabian/Zotero/storage/8C8IWBCH/racing-toward-ces-exciting-new-ui-automotive-grade-linux-ivi-demo.html}
}
@online{SupportNonnullableTypes,
title = {Support Non-Nullable Types. · {{Issue}} \#22 · Dart-Lang/Sdk},
url = {https://github.com/dart-lang/sdk/issues/22},
urldate = {2024-03-09},
abstract = {Admin comment: This is activaly being worked on, see dart-lang/language\#110 and https://dart.dev/null-safety This issue was originally filed by cflew...@gmail.com Short version: Null pointers are a...},
langid = {english},
organization = {GitHub},
file = {/Users/fabian/Zotero/storage/DZE53CBK/22.html}
}
@online{TechnicalOverviewa,
title = {Technical {{Overview}}},
url = {https://www.yoctoproject.org/development/technical-overview/},
urldate = {2024-03-09},
langid = {american},
organization = {The Yocto Project},
file = {/Users/fabian/Zotero/storage/6YINBYHZ/technical-overview.html}
}
@online{theflutterauthorsEngineShellPlatform,
title = {Engine/Shell/Platform/Embedder/Embedder.h at 436f9707b94774d1d049c04b8cda9d81d85aa4a8 · Flutter/Engine},
author = {{The Flutter Authors}},
@ -370,7 +482,7 @@
urldate = {2024-02-22},
abstract = {The Flutter engine. Contribute to flutter/engine development by creating an account on GitHub.},
langid = {english},
organization = {{GitHub}},
organization = {GitHub},
file = {/Users/fabian/Zotero/storage/SQZ53EIM/embedder.html}
}
@ -385,6 +497,30 @@
abstract = {Tonight we'll talk about the years leading up to Flutter and how Adam and I worked on a variety of projects for the web which inspired what Flutter would become, including at least 3 frameworks in JS, how we briefly thought "shake to reload" was our killer feature, how for more than the first 6 months of the project Flutter was DOM-based and network loaded and much more. Gonna be amazing. Slides: https://docs.google.com/presentation/...}
}
@video{thelinuxfoundationGraphicalUserInterface2020,
entrysubtype = {video},
title = {Graphical {{User Interface Using Flutter}} in {{Embedded Systems}} - {{Hidenori Matsubayashi}}, {{Sony}}},
editor = {{The Linux Foundation}},
editortype = {director},
date = {2020-11-29},
url = {https://www.youtube.com/watch?v=KN-ileJvorg},
urldate = {2024-03-09},
abstract = {Graphical User Interface Using Flutter in Embedded Systems - Hidenori Matsubayashi, Sony}
}
@online{thomsenRoadDartFully2022,
title = {The Road to {{Dart}} 3: {{A}} Fully Sound, Null Safe Language},
shorttitle = {The Road to {{Dart}} 3},
author = {Thomsen, Michael},
date = {2022-12-08T15:25:01},
url = {https://medium.com/dartlang/the-road-to-dart-3-afdd580fbefa},
urldate = {2024-03-09},
abstract = {Preparing for the next major release, where Dart only supports sound null safety},
langid = {english},
organization = {Dart},
file = {/Users/fabian/Zotero/storage/BSNRLE6L/the-road-to-dart-3-afdd580fbefa.html}
}
@online{valleyWhatLinuxOverview2020,
title = {What {{Is Linux}}: {{An Overview}} of the {{Linux Operating System}}},
shorttitle = {What {{Is Linux}}},
@ -394,10 +530,17 @@
urldate = {2024-02-19},
abstract = {What is Linux: An Overview of the Linux Operating System},
langid = {english},
organization = {{Medium}},
organization = {Medium},
file = {/Users/fabian/Zotero/storage/L97SMPU5/what-is-linux-an-overview-of-the-linux-operating-system-77bc7421c7e5.html}
}
@book{walrathkathyWhatDart2012,
title = {What Is {{Dart}}?},
author = {{Walrath, Kathy}},
date = {2012},
abstract = {Annotation This short, free ebook from March 2012 describes the Dart language, libraries, and tools that help you develop structured, fast, and maintainable web apps that run in any modern browser.}
}
@article{weiserComputer21stCentury1999,
title = {The Computer for the 21st Century},
author = {Weiser, Mark},
@ -429,10 +572,18 @@
urldate = {2024-02-13},
abstract = {How to use Flutter/Darts magical ways to convert JSON data into usable structures so that you can get unstuck — and get going. Why are you here? You have read tons of Medium posts and watched plenty of YouTube videos and still feel a little confused. Along the way, you…},
langid = {american},
organization = {{https://maeda.pm/}},
organization = {https://maeda.pm/},
file = {/Users/fabian/Zotero/storage/ND8L5RU6/working-with-json-in-flutter-while-using-json_annotations-and-json_serializable-modules-in-2022.html}
}
@online{yusukemitsukiHelperScriptRun,
title = {The Helper Script to Run the Bitbake with Using {{CROPS}}.},
author = {{Yusuke Mitsuki}},
url = {https://gist.github.com/mickey-happygolucky/2b9671f062de558f3312f7378ed3c240},
urldate = {2024-03-09},
file = {/Users/fabian/Zotero/storage/P8BGUI2I/2b9671f062de558f3312f7378ed3c240.html}
}
@online{zotero-649,
url = {https://tagesschau.api.bund.dev/openapi.yaml},
urldate = {2024-03-03},

BIN
assets/.DS_Store vendored

Binary file not shown.

BIN
assets/pdf/sony1.pdf Normal file

Binary file not shown.

BIN
assets/pdf/sony2.pdf Normal file

Binary file not shown.

BIN
assets/pdf/sony3.pdf Normal file

Binary file not shown.

BIN
assets/screenshots/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
assets/screenshots/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

View File

@ -159,7 +159,7 @@ erstellt werden kann.
Yocto ist ein Open-Source-Projekt der Linux Foundation, das es ermöglicht,
maßgeschneiderte Linux-Distributionen für eingebettete Systeme
zu erstellen. Es bietet hierzu eine Sammlung von Tools, Vorlagen und
Methoden, die vor allem auf die Prinzipien der quellbasierten
Methoden, die vor allem auf den Prinzipien der quellbasierten
Linux-Distribution Gentoo basieren. Eine quellbasierte Distribution
ist eine Linux-Distribution, die aus den Quellcodes der Software
zusammengestellt wird. Das bedeutet, dass die Software auf dem

View File

@ -0,0 +1,53 @@
\linebreak
## Dart
Dart ist die offizielle Programmiersprache für die Entwicklung von
Flutter Apps und wurde in dieser Arbeit für die Entwicklung der
Demo Anwendung verwendet. Dart ist eine objektorientierte, klassenbasierte
Programmiersprache mit Garbage Collection und C-ähnlicher Syntax hat.
Die Sprache wurde von Lars Bak und Kasper Lund entworfen und
bei Google entwickelt. 2011 wurde sie veröffentlicht [@larsbakDartLanguageStructured2011].
Damals wurde Dart speziell für die Entwicklung von Webanwendungen
entwickelt. Es sollte besonders dabei helfen komplexe und hochleistungsfähige
Webanwendungen zu entwickeln. Google sah es aber explizit nicht als
Ersatz für JavaScript, sondern als Ergänzung. Im Buch "What is Dart?" von
den Google Entwicklern Kathy Walrath und Seth Ladd betonten diese 2012,
dass Google nicht erwarten würde, dass Dart JavaScript ersetze, sondern
dass Dart und JavaScript nebeneinander existieren könnten und Dart auch von
JavaScript profitieren kann, da Dart Code in JavaScript transpiliert
werden kann [@walrathkathyWhatDart2012, 1-2]. Hingegen der Erwartungen von Google
wurde Dart jedoch nicht so populär wie erwartet. Google nutzte Dart
zwar intern für einige Projekte, doch die Programmiersprache blieb
weitesgehend unbekannt und wurde nur von wenigen Entwicklern genutzt.
Genaue Gründe sind hierfür nicht bekannt, doch ein Grund könnte sein,
dass die JavaScript Community zu diesem Zeitpunkt
schon sehr groß war und viele Entwickler nicht bereit waren, auf eine
komplett neue Programmiersprache umzusteigen. Zudem wurde 2012 TypeScript von
Microsoft veröffentlicht, welches ähnliche Probleme wie Dart löst, jedoch
besser in die bestehende JavaScript-Community integriert werden konnte, da es JavaScript
als Sprache erweitert und Entwickler so nicht eine komplett neue
Sprache lernen mussten.
Erst durch die Einführung von Flutter wurde Dart populärer, da es die
offizielle Programmiersprache für die Entwicklung von Flutter Apps ist.
Flutter wurde intern bei Google anfangs mit JavaScript entwickelt, doch
dies führte zu Problemen, da JavaScript nicht die Performance und
Stabilität bieten konnte, die Google für die Entwicklung von mobilen
Apps erwartete. Daher wurde JavaScript durch Dart ersetzt und das
Flutter und Dart Team haben eng zusammengearbeitet, um Dart so zu
verbessern, dass es die Anforderungen von Flutter am besten erfüllt.
Heute ist die neueste Version von Dart die Version 3.3.1. Dart ist
eine der wenigen Programmiersprachen, die seit ihrer Veröffentlichung
sehr starke Veränderungen durchgemacht hat. So wurde zu der JIT (Just
in Time) Kompilierung, die Dart ursprünglich verwendete, eine AOT (Ahead of
Time) Kompilierung hinzugefügt, die es ermöglicht, Dart Code in nativen Code
zu kompilieren. Dies war notwendig, um die Performance von Dart zu
verbessern und um Dart für die Entwicklung von mobilen Apps zu
optimieren, zusätzlich auch weil Apple keine JIT Kompilierung auf iOS
Geräten erlaubt. Mit Version 3 wurde eine komplette Sound Null Safety
zu Dart hinzugefügt. Sound Null Safety bedeutet, dass der komplette
Code und auch Code aus allen Bibliotheken vollständig null-sicher sein muss.
Mit Version 3 ist dies auch eine Voraussetzung in Dart, nicht null-sicherer
Code kann nicht mehr kompiliert werden [@googleinc.UnsoundNullSafety].

View File

@ -0,0 +1,51 @@
\pagebreak
# Stand der Technik
In diesem Kapitel wird der Stand der Technik in Bezug auf die
Themenbereiche der Arbeit erläutert.
Dabei wird auf die Themenbereiche der
Arbeit eingegangen und die aktuelle Situation
in der Forschung und Entwicklung dargestellt.
## Toyota
- CES 2024 Automotive Linux mit Flutter [@stephanievannessRacingCESExciting2024]
## Sony
```{=latex}
\begin{figure}[h]
\centering
\caption{Sony}
\includegraphics[width=15cm]{./assets/pdf/sony1.pdf}
\label{sony1}
<!-- prettier-ignore -->
\caption*{
```
Quelle: @matsubayashiGraphicalUserInterface2020
```{=latex}
}
\end{figure}
```
\begin{figure}[h]
\caption{This is a figure.}
\begin{center}
\includegraphics[width=15cm]{./assets/pdf/sony2.pdf}
\end{center}
\end{figure}
<!-- \begin{figure}[h]
\caption{This is a figure.}
\begin{center}
\includegraphics[width=15cm]{./assets/pdf/sony3.pdf}
\end{center}
\end{figure} -->
## Texas Instruments
\pagebreak

View File

@ -2,12 +2,97 @@
# Analyse und Design
## Hardware
- Raspberry Pi 4
- Touchscreen 15 Zoll (1920x1080)
- Raspberry Pi 0 2W
- Touchscreen 7 Zoll (1024x600)
- RGB Matrix
- Led
\pagebreak
## Anforderungen
### Anwendungseinsatz
\begin{multicols}{3}
### Anwendungsfunktionen
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=2in]{./assets/skizzen/home.png}}
\label{fig:screeplot}
\end{figure}
### Abgrenzungskriterien
\begin{figure}[H]
\caption{Material 3 Widgets}
\centering
{\includegraphics[width=2in]{./assets/skizzen/materialWidgets.png}}
\label{fig:screeplot}
\end{figure}
### Benutzeroberfläche
\begin{figure}[H]
\caption{Video Player}
\centering
{\includegraphics[width=2in]{./assets/skizzen/video.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{multicols}{3}
\begin{figure}[H]
\caption{Led Controller}
\centering
{\includegraphics[width=2in]{./assets/skizzen/led.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Matrix Painter}
\centering
{\includegraphics[width=2in]{./assets/skizzen/matrix.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{System Informationen}
\centering
{\includegraphics[width=2in]{./assets/skizzen/systeminfo.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{multicols}{3}
\begin{figure}[H]
\caption{Unendliche Liste}
\centering
{\includegraphics[width=2in]{./assets/skizzen/openapi.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Kartenansicht}
\centering
{\includegraphics[width=2in]{./assets/skizzen/openstreetmap.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Einstellungen}
\centering
{\includegraphics[width=2in]{./assets/skizzen/einstellungen.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{figure}[H]
\caption{Endless Runner}
\centering
{\includegraphics[width=2in]{./assets/skizzen/dashgame.png}}
\label{fig:screeplot}
\end{figure}

View File

@ -1,11 +1,85 @@
\pagebreak
## Architektur
### Analyse
### Design
<!-- Flutter Entwicklung folgt einer unidirektionalen
Datenflussarchitektur, die auf dem Modell-View-Controller
(MVC)-Muster basiert. -->
Flutter gibt Entwicklern eine große Freiheit bei der
Auswahl der Architektur für ihre Anwendungen. Es gibt
keine festen Regeln oder Vorschriften zur Ordnerstruktur
oder anderen Konventionen bezüglich der Architektur.
Als Architektur für die Anwendung
wurde eine drei-schichtige Architektur gewählt.
Eine Schichtenarchitektur ist nicht nur Teil der
Architektur von Flutter selbst, sondern ist auch
eine bewährte Architektur für die Entwicklung von
Flutter Anwendungen. Die drei Haupt-Schichten
der Architektur der Anwendung sind die Präsentationsschicht,
die Geschäftsschicht und die Datenzugriffsschicht.
In der Präsentationsschicht werden die Benutzeroberfläche
und die Benutzerinteraktionen implementiert. Die Geschäftsschicht
ist für die Implementierung der Geschäftslogik verantwortlich.
Die Datenzugriffsschicht ist für den Zugriff auf die Datenbank
und die Datenverarbeitung verantwortlich. Die drei Schichten
Die drei Schichten sind die **Präsentationsschicht**,
die **Geschäftslogikschicht** und die **Datenzugriffsschicht**.
Die Präsentationsschicht ist für die Darstellung der
Benutzeroberfläche verantwortlich. Die Anwendungsschicht ist für die Geschäftslogik verantwortlich. Die Datenzugriffsschicht ist für den Zugriff auf die Datenbank verantwortlich. Die drei Schichten sind voneinander unabhängig und kommunizieren über definierte Schnittstellen. Die drei Schichten sind in der Abbildung 3.1 dargestellt.
- three-layer architecture [@hajianFlutterEngineering2024, 219]
\begin{figure}[ht]
\centering
\caption{3-Schichtenarchitektur der Flutter Anwendung}
\end{figure}
```{=latex}
\begin{center}
```
```{.mermaid loc=assets/mermaid caption="3-Schichtenarchitektur der Flutter Anwendung" #fig:reference-name}
flowchart TD
A[Präsentationsschicht] <--> B
B[Geschäftslogikschicht] <--> C
C[Datenzugriffsschicht]
```
```{=latex}
\end{center}
```
\begin{figure}[ht]
\centering
<!-- prettier-ignore -->
\caption*{Quelle: eigene Darstellung}
\end{figure}
## Ordner Konventionen
### Layers-First Ordnerstruktur
- schneller und einfacher Start
- einfach zu verstehen
- sehr unübersichtlich, sobald die Anwendung wächst
- zusammengehörende Dateien für ein Feature über das Projekt verteilt
### Feature-First Ordnerstruktur
- Dateien, die zu einem Feature gehören, sind an einem
Ort zu finden
- Layers in Feature
- Einfache Kommunikation
- Verständnis, was ein Feature ist, muss im Team trainiert werden
\begin{figure}[ht]
\centering
\begin{minipage}{7cm}
@ -17,9 +91,9 @@
.3 benchmark.
.3 home.
.3 settings.
<!-- prettier-ignore -->
.3 system\_information.
.2 localization.
.3 system\char`\_resources.
.2 app.dart.
.2 main.dart.
}
\end{minipage}
\caption{Example caption}
@ -27,3 +101,20 @@
<!-- prettier-ignore -->
\caption*{Quelle: hier Quellangabe}
\end{figure}
eine Klasse pro File, Ausnahmen eng zusammengehörige Klassen
wie zB. Stateful Widgets
state Architektur
android architecture
### freezed package
generiert den notwendigen Code einer
unveränderlichen Klasse:
- Konstruktor
- toString, equlas, hashCode Methode
- copyWith Methode
- JSON Serialisierung

View File

@ -1,17 +1,80 @@
# Implementierung
## Grundaufbau
Im folgenden Kapitel wird die Implementierung des Projektes
beschrieben. Dabei wird auf die Entwicklungsumgebung, die
Verwendung von Flutter und Dart, die Einrichtung des Raspberry
Pi und die Implementierung der Software eingegangen.
### Entwicklungsumgebung
## Entwicklungsumgebung
### Flutter Version Management
### Visual Studio Code
Zur Installation von Flutter und Dart empfiehlt
sich ein Version Manager. Der bekannteste Version
Manager ist FVM (Flutter Version Management), doch
der neuere Manager Puro bietet viele Vorteile.
Für die Implementierung der Fallstudie wurde die
plattformübergreifende Open-Source-Entwicklungsumgebung
Visual Studio Code (VS Code) von Microsoft verwendet.
VS Code ist eine sehr beliebte Entwicklungsumgebung
für die Entwicklung von Webanwendungen, mobilen
Anwendungen und Desktopanwendungen. Die Entwicklungsumgebung
bietet eine Vielzahl von Erweiterungen, die die
Entwicklung von Anwendungen in verschiedenen
Programmiersprachen und Frameworks unterstützen.
MacOS und Linux
### Flutter Versionsverwaltung
Das Versionsmanagement von Flutter ist standardmäßig
sehr einfach gehalten. Es gibt nur eine globale
Installation von Flutter, die manuell auf dem System
installiert wird. Diese globale Installation
arbeitet mit Git und nutzt verschiedene Branches
für die verschiedenen Versionen von Flutter,
diese Branches nennt Google Channels. Die
Channels sind **stable**, **beta** und **master**.
Die **stable** Version ist immer die aktuellste
stabile Version von Flutter, diese wird für die
Produktion und für die meisten Entwickler empfohlen.
Die **beta** Version ist die neueste stabile Version
von Flutter, welche neue Features beinhalten kann und
nicht für die Produktion empfohlen wird. Diese Version
wird später zur nächsten **stable** Version höhergestuft
und wird von Google jedoch auch bereits extensiv getestet
und sollte sehr stabil sein. Die **master** Version ist die neueste
Entwicklungsversion von Flutter, diese Version ist
nicht stabil und wird nicht für die Produktion
empfohlen. Diese Version beinhaltet alle neuesten
Commits welche von Entwicklern in das Flutter
Repository gepusht wurden.
Hierbei gibt es jedoch einige Probleme, die
durch die globale Installation von Flutter
entstehen. Die globale Installation von Flutter
ist nicht für die Arbeit mit verschiedenen
Projekten und verschiedenen Versionen von Flutter
ausgelegt. Es gibt keine Möglichkeit, verschiedene
Versionen von Flutter zu installieren und zu
verwalten. Außerdem gibt es keine einfache Möglichkeit,
eine bestimmte Version von Flutter zu installieren,
es wird immer die neueste **stable**, **beta** oder
**master** Version installiert. So wurde in der
Entwicklung der Fallstudie Flutter Version 3.19.2
verwendet, welche jedoch zu einem späteren Zeitpunkt
nicht mehr aktuell ist.
Zur Lösung dieser Probleme gibt es verschiedene
Versionsverwaltungs-Tools für Flutter. Die bekanntesten
sind FVM (Flutter Version Management) und Puro.
FVM ist ein simples CLI-Tool, welches es ermöglicht,
verschiedene Versionen von Flutter zu installieren
und zu verwalten. Puro dahingegen ist ein weiteres
CLI-Tool, welches neben der Versionsverwaltung von
Flutter auch eine Integration mit den bekannten
Entwicklungsumgebungen VS Code und IntelliJ bietet.
In der Fallstudie wurde Puro verwendet und das
Projekt ist so konfiguriert, dass es die Version
3.19.2 von Flutter verwendet.
<!-- MacOS und Linux
```bash
curl -o- https://puro.dev/install.sh | PURO_VERSION="1.4.4" bash
@ -73,4 +136,4 @@ Engine • revision 04817c99c9
Tools • Dart 3.3.0 • DevTools 2.31.1
```
## Setup von Raspberry Pi
## Setup von Raspberry Pi -->

View File

@ -75,3 +75,452 @@ Key Design Concepts:
- Challenges solved by your design choices.
- Did you address performance optimizations for embedded systems?
- How did you make the UI fit for the embedded target? -->
## Implementierung der Features
\pagebreak
### Home
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 home/.
.2 presentation/.
.3 home\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/home.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/homeDebug.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### Material Demo
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{10cm}
\dirtree{%
.1 material\char`\_demo/.
.2 presentation/.
.3 material\char`\_demo\char`\_screen.dart.
.3 widgets/.
.4 component\char`\_decoration.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/material3.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/material3Dialog.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### Benchmark
\begin{figure}[h]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 benchmark/.
.2 business/.
.3 flame/.
.4 rogue\char`\_shooter/.
.4 sprite\char`\_renderer/.
.2 data/.
.3 models/.
.4 benchmark.dart.
.4 ember.dart.
.3 benchmarks\char`\_list.dart.
.2 presentation/.
.3 widgets/.
.4 benchmark\char`\_card.dart.
.3 benchmark\char`\_screen.dart.
.3 map\char`\_benchmark\char`\_screen.dart.
.3 rogue\char`\_shooter\char`\_screen.dart.
.3 sprite\char`\_benchmark\char`\_screen.dart.
.3 video\char`\_benchmark\char`\_screen.dart.
.3 vsync\char`\_benchmark\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmark.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkSprite.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkSpriteFinished.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkFlame.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkFlame2.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkVsync.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkVideo.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/benchmarkMap.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### News
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 news\char`\_api/.
.2 business/.
.3 news\char`\_controller.dart.
.3 scroll\char`\_state\char`\_controller.dart.
.2 data/.
.3 models/.
.4 news.dart.
.4 region\char`\_news.dart.
.4 teaser\char`\_image\char`\_url.dart.
.4 teaser\char`\_image.dart.
.3 repository/.
.4 news\char`\_repository.dart.
.2 presentation/.
.3 widgets/.
.4 news\char`\_grid\char`\_item.dart.
.4 news\char`\_grid.dart.
.4 news\char`\_list\char`\_item.dart.
.4 news\char`\_list.dart.
.3 news\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/newsList.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/newsGrid.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### Led Morse
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 morse\char`\_led/.
.2 business/.
.3 service/.
.4 morse\char`\_service.dart.
.2 presentation/.
.3 led\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/morse.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/morseInput.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### Matrix
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 matrix\char`\_rgb/.
.2 business/.
.3 service/.
.4 matrix\char`\_service.dart.
.3 utils/.
.4 find\char`\_closest\char`\_color\char`\_index.dart.
.2 data/.
.3 models/.
.4 pixel.dart.
.2 presentation/.
.3 widgets/.
.4 pixel\char`\_painter.dart.
.3 matrix\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/matrix.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/matrixInput.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/matrixColor.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/matrixColorWheel.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
### System Informationen
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 system\char`\_resources/.
.2 business/.
.3 service/.
.4 memory\char`\_service.dart.
.3 utils/.
.4 get\char`\_cpu\char`\_usage\char`\_percentage.dart.
.2 presentation/.
.3 system\char`\_resources\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/systemResources.png}}
\label{fig:screeplot}
\end{figure}
\pagebreak
### Einstellungen
\begin{figure}[ht]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 settings/.
.2 business/.
.3 wifi\char`\_controller.dart.
.2 presentation/.
.3 settings\char`\_screen/.
.4 widgets/.
.5 color\char`\_seed\char`\_button.dart.
.4 settings\char`\_screen.dart.
.3 wifi\char`\_settings\char`\_screen/.
.4 widgets/.
.5 ap\char`\_pw\char`\_dialog.dart.
.5 ap\char`\_tile\char`\_demo.dart.
.5 ap\char`\_tile.dart.
.5 wifi\char`\_bar\char`\_icon.dart.
.4 accesspoint\char`\_screen.dart.
.4 wifi\char`\_settings\char`\_screen.dart.
}
\end{minipage}
\end{figure}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settings.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsDark.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\pagebreak
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsWifiList.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsWifiDetails.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{multicols}{2}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsWifiConnect.png}}
\label{fig:screeplot}
\end{figure}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsWifiPasswordInput.png}}
\label{fig:screeplot}
\end{figure}
\end{multicols}
\begin{figure}[H]
\caption{Home Screen}
\centering
{\includegraphics[width=8cm]{./assets/screenshots/settingsMaterial2.png}}
\label{fig:screeplot}
\end{figure}

View File

@ -0,0 +1,172 @@
\pagebreak
## Yocto Project
Kein source-code, nur meta daten.
Die Regeln, wie der Source-Code gebaut wird, werden in Rezepten festgelegt.
docker als build-umgebung.
https://hub.docker.com/r/crops/poky
poky = yocto.
Yocto Project basierend auf Poky Linux.
Ausgesprochen "Pocky" wie das japanische Knabberzeug.
Alle 6 Monate neue Version.
Alle 2 Jahre Long-Term-Support Version.
Distro: How I want to put my system together.
Machine: the board i want to build for.
Image: the selection of packages i want.
build cross-compiler.
tools for build time.
compile code for target machine.
### Layers
Layer contains bunch of recipes.
3 layers:
bsp: board support package
defines a machine and related board-specific packages
contains conf/machine/[MACHINE].conf
distribution: defines a DISTRO such as Poky
contains conf/distro/[DISTRO].conf
Software: everything else
contains neither conf/machine/[MACHINE].conf nor conf/distro/[DISTRO].conf
libraries, e.g. qt5
languages, e.g. Java
tools, e.g. virtualisation or selinux
### Recipes
contain instructions on how to fetch, configure, compile and install a software component
the body contains BitBake metadata (assignment of variables, mostly); the tasks are written
in shell script or Python
Recipe files have a suffix .bb
may be extended with append recipes with .bbappend suffix
majority of recipes produce packages.
/tmp/deploy/rpm/..
often one recipe produces several packages.
IMAGE_INSTALL:append
### Images
core-image-base: A console-only image that fully supports the target device hardware.
core-image-full-cmdline: A console-only image with more full-featured Linux system functionality installed.
core-image-minimal: A small image just capable of allowing a device to boot.
core-image-weston: A very basic Wayland image with a terminal. This image provides the
Wayland protocol libraries and the reference Weston compositor. For more information,
see the “Using Wayland and Weston” section in the Yocto Project Development Tasks Manual.
\begin{center}
\begin{table}[h]
\caption{Example caption}
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|}
\hline
Meta-Layer & Branch \\ \hline
https://github.com/kraj/meta-clang & 312ff1c39b1bf5d35c0321e873417eb013cea477 \\ \hline
https://github.com/meta-flutter/meta-flutter & 82e167a7f13161a4ee9c5a426f13df79987d1055 \\ \hline
https://github.com/openembedded/meta-openembedded & fda737ec0cc1d2a5217548a560074a8e4d5ec580 \\ \hline
https://github.com/agherzan/meta-raspberrypi & 9dc6673d41044f1174551120ce63501421dbcd85 \\ \hline
https://github.com/jwinarske/meta-vulkan & ceb47bd0ed2a9f657fdae48a901e8a41ba697e74 \\ \hline
https://codeberg.org/flk/meta-wayland & cb22939f751c74baa51d9474ba6e8ba647e99756 \\ \hline
\end{tabular}%
}
\end{table}
\end{center}
\begin{figure}[h]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 crops-yocto/.
.2 build/.
.3 conf/.
.4 bblayers.conf.
.4 local.conf.
.2 poky/.
.2 run\char`\_crops.sh.
.2 Makefile.
}
\end{minipage}
\end{figure}
\begin{figure}[h]
\caption{Example caption}
\centering
\begin{minipage}{7cm}
\dirtree{%
.1 poky/.
.2 meta/.
.2 meta-poky/.
.2 meta-yocto-bsp/.
.2 meta-selftest/.
.2 meta-skeleton/.
.2 mea-clang/.
.2 meta-flutter/.
.2 meta-flutter-apps/.
.2 meta-flutter-elinux/.
.2 meta-openembedded/.
.2 meta-raspberrypi/.
.2 meta-wayland/.
.2 meta-vulkan/.
}
\end{minipage}
\end{figure}
\begin{figure}[h]
\caption{Example caption}
\centering
\begin{minipage}{10cm}
\dirtree{%
.1 meta-flutter-apps/.
.2 recipes-graphics/.
.3 flutter-apps/.
.4 third-party/.
.5 flutter-elinux\char`\_git.bb/.
.5 flutter-wonders\char`\_git.bb/.
}
\end{minipage}
\end{figure}
\begin{figure}[h]
\caption{Example caption}
\centering
\begin{minipage}{10cm}
\dirtree{%
.1 meta-flutter-elinux/.
.2 recipes-core/.
.3 custom-scripts/.
.4 files/.
.5 flutter-auto-launch/.
.4 flutter-auto-launch\char`\_1.00.bb.
.3 flutter-elinux-rules/.
.4 files/.
.5 90-interfaces.rules.
.4 flutter-elinux-rules\char`\_1.00.bb.
.3 flutter-user/.
.4 flutter-user\char`\_1.00.bb.
.3 systemd/.
.4 files/.
.5 flutter-auto.service.
.5 flutter-pi.service.
.4 flutter-auto-service\char`\_1.00.bb.
.4 flutter-pi-service\char`\_1.00.bb.
.4 systemd\char`\_\%.bbappend.
.3 systemd-conf/.
.4 files/.
.5 en.network.
.5 eth.network.
.5 wlan.network.
.4 systemd-conf\char`\_\%.bbappend.
}
\end{minipage}
\end{figure}

View File

@ -0,0 +1,18 @@
# Zusammenfassung
## Benchmark
\begin{center}
\begin{table}[h]
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|}
\hline
Flutter Embedder & Ergebnisse (Animationen nach 30 Minuten) & Durchschnittlich (gerundet) \\ \hline
Flutter-Pi & 537, 543, 544 & 541 \\ \hline
Flutter-Auto & 1025, 1163, 1129 & 1106 \\ \hline
\end{tabular}%
}
\end{table}
\end{center}

1
code/crops-yocto Submodule

@ -0,0 +1 @@
Subproject commit 5fc57a6c602f3937bfe5392dc3bd3681edf944d0

View File

@ -75,6 +75,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: transitive
description:
@ -87,34 +111,34 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.8.0"
meta:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
path:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
sky_engine:
dependency: transitive
description: flutter
@ -176,13 +200,13 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
vm_service:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "0.3.0"
version: "13.0.0"
sdks:
dart: ">=3.2.6 <4.0.0"

1
code/flutter_elinux Submodule

@ -0,0 +1 @@
Subproject commit 97dd5476ed0ef7c4ee573bb6bbd7dbccd4ee0602