Skip to content

webstorage119/flutter-embedded-linux

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Embedded Linux embedding for Flutter

build-test

This project was created to develop non-official embedded Linux embeddings of Flutter. This embedder is focusing on embedded Linux system use cases. It is also implemented based on Flutter desktop for Windows and has some unique features to use it in embedded systems.

Objective & Goal

Our objective is to use Flutter in embedded systems. We're developing this embedder to use Flutter in embedded products. Ultimately we would like to propose and contribute this software to the mainline of Flutter Engine, which means we would like to add embedded systems support into Flutter officially for all embedded developers. Please note that this is just our ideal, not the official opinion of the Flutter community.

We would be grateful if you could give us feedback on bugs and new feature requests. We would like to cover specifications of general-purpose embedded systems.

Features

  • Suitable for use in embedded systems
    • Minimal dependent libraries
    • Lightweight than Flutter desktop for Linux (Not using X11 and GTK)
    • The main target of this embedder is Arm64 devices. We haven't confirmed in Arm 32bit (ARMv7, armhf) devices
  • Wayland backend support
  • Direct rendering module (DRM) backend support
    • Generic Buffer Management (GBM)
    • EGLStream for NVIDIA devices
  • X11 backend supoort
    • This is for the purpose of developing Flutter apps in Linux desktops. It is not intended for use in embedded systems.
  • Always single window fullscreen
    • You can choose always-fullscreen or flexible-screen (any size) only when using Wayland/X11 backend
  • Keyboard, mouse and touch inputs support
  • Equivalent quality to Flutter desktops
  • API compatibility with Flutter desktop for Windows and GLFW
    • APIs such as MethodChannel and EventChannel are completely the same with them

Supported platforms

This embedder supports x64 and Arm64 (aarch64, ARMv8) architectures on Linux which supports either Wayland backend or DRM backend.

Tested devices

Board / SoC Vendor OS / BSP Backend Status
Desktop (x86_64) Intel Ubuntu18.04 Wayland ✔️
Desktop (x86_64) Intel Ubuntu18.04 DRM ✔️
Desktop (x86_64) Intel Ubuntu18.04 X11 ✔️
QEMU (x86_64) QEMU AGL (Automotive Grade Linux) koi Wayland ✔️
QEMU (x86_64) QEMU AGL (Automotive Grade Linux) koi DRM ✔️
Jetson Nano NVIDIA JetPack 4.3 Wayland ✔️
Jetson Nano NVIDIA JetPack 4.3 DRM ✔️ (#1)
Raspberry Pi 4 Model B Raspberry Pi Foundation Ubuntu 20.10 Wayland ✔️
Raspberry Pi 4 Model B Raspberry Pi Foundation Ubuntu 20.10 DRM ✔️ (#9)
i.MX 8MQuad EVK NXP Sumo (kernel 4.14.98) Wayland ✔️
i.MX 8MQuad EVK NXP Sumo (kernel 4.14.98) DRM Not tested
i.MX 8M Mini EVKB NXP Zeus (kernel 5.4.70) Wayland ✔️
i.MX 8M Mini EVKB NXP Zeus (kernel 5.4.70) DRM Not tested
Zynq Xilinx - - Not tested
RB5 Development Kit Qualcomm - - Not tested

Tested Wayland compositors

Weston ✔️ Sway ✔️ Wayfire ✔️ Gnome ✔️ Phosh ✔️
Cage ✔️ Lomiri ✔️ Plasma Wayland ✔️ Plasma Mobile ✔️ GlacierUX

Contributing

Now, we cannot accept any Pull Request (PR). Because We are building a system (e.g. CLA) to accept PRs, so please wait for a while the system is getting ready! However, we are always welcome to report bugs and request new features by creating issues.

With the assumption, our final goal of this software openly is to be merged this embedder into Flutter Engine after getting feedbacks. And Google CLA will be required when we do that in the future. Therefore, we cannot easily accept an external PR. However, you can free to create issues for reporting bugs and requesting new features.

See also: Contributing to the Flutter engine

Documents

All documents for this embedder are under the doc directory.

About

Embedded Linux embedding for Flutter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 76.9%
  • C 21.9%
  • CMake 1.2%