140 lines
4.5 KiB
Markdown
140 lines
4.5 KiB
Markdown
# Implementierung
|
|
|
|
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
|
|
|
|
### Visual Studio Code
|
|
|
|
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.
|
|
|
|
### 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
|
|
```
|
|
|
|
Windows
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri "https://puro.dev/builds/1.4.4/windows-x64/puro.exe" -OutFile "$env:temp\puro.exe"; &"$env:temp\puro.exe" install-puro --promote
|
|
```
|
|
|
|
Puro Optimierungen:
|
|
|
|
- parallel git clone and engine download
|
|
- global cache for git history
|
|
- global cache for engine versions
|
|
|
|
With other approaches, each Flutter repository is in its own folder, requiring you to download and store the git history, engine, and framework of each version:
|
|
|
|
Puro implements a technology similar to GitLab's object deduplication to avoid downloading the same git objects over and over again. It also uses symlinks to share the same engine version between multiple installations:
|
|
|
|
```bash
|
|
puro use -g stable
|
|
```
|
|
|
|
```bash
|
|
puro create bachelor_elinux 3.19.0
|
|
```
|
|
|
|
```bash
|
|
puro use bachelor_elinux
|
|
```
|
|
|
|
`.puro.json`:
|
|
|
|
```json
|
|
{
|
|
"env": "bachelor_elinux"
|
|
}
|
|
```
|
|
|
|
`.vscode/settings.json`
|
|
|
|
```json
|
|
{
|
|
"dart.flutterSdkPath": "/Users/fabian/.puro/envs/bachelor_elinux/flutter",
|
|
"dart.sdkPath": "/Users/fabian/.puro/envs/bachelor_elinux/flutter/bin/cache/dart-sdk"
|
|
}
|
|
```
|
|
|
|
```bash
|
|
puro flutter --version
|
|
```
|
|
|
|
```bash
|
|
Flutter 3.19.0 • channel stable • https://github.com/flutter/flutter.git
|
|
Framework • revision bae5e49bc2 (6 days ago) • 2024-02-13 17:46:18 -0800
|
|
Engine • revision 04817c99c9
|
|
Tools • Dart 3.3.0 • DevTools 2.31.1
|
|
```
|
|
|
|
## Setup von Raspberry Pi -->
|