A handbook for newcomers - flutter-tizen/flutter-tizen GitHub Wiki

Note: This page is for developers who want to contribute to the flutter-tizen project but not general app developers.

Where's the source code?

Tip: Apply these settings before you browse any source code in VS Code.

Learning resources

Must read

What's a custom embedder?

Getting started with plugin development

Flutter sample apps

Others

Glossary

  • Flutter framework. See the Flutter wiki.
  • Flutter engine. See the Flutter wiki.
  • Embedder. See the Flutter wiki.
  • Embedding. See the Flutter wiki.
  • flutter_tools. The flutter command line program. The flutter-tizen tool can be used as an alternative if you're developing for Tizen devices.
  • Platform channel. A messaging system around the engine, framework, apps, and plugins. A message codec is used to serialize Dart or C++ values as binary messages before they are sent over platform channels. Some common codecs and channel types (such as BasicMessageChannel, MethodChannel, EventChannel) are already implemented by the Flutter framework (for Dart) and cpp_client_wrapper (for C++).
  • Dart FFI. Dart's mechanism of calling C native functions from Dart code. Somewhat similar to .NET's P/Invoke. For details, see Flutter architectural overview: Foreign Function Interface.

TPK structure

A typical Flutter app package consists of the following files.

tpkroot
├── bin
│   ├── Runner.dll                   # The main executable (compiled App.cs)
│   └── Tizen.Flutter.Embedding.dll  # The embedding assembly (referenced by Runner.dll)
├── lib
│   ├── libapp.so                    # AOT compiled Dart code (app + framework)
│   ├── libflutter_engine.so         # The Flutter engine
│   ├── libflutter_tizen.so          # The Tizen embedder
│   └── libflutter_plugins.so        # Compiled native plugins (if any)
├── res
│   ├── flutter_assets
│   │   └── ...                      # Asset files (fonts, images, and etc.)
│   └── icudtl.dat                   # The ICU data file
├── shared
│   └── res
│       └── ic_launcher.png          # The icon file
└── tizen-manifest.xml               # The manifest file

The above tree represents a release TPK structure. In case of a debug TPK, the AOT snapshot libapp.so is replaced with the following three kernel snapshots (intermediate representation of Dart code which is to be JIT compiled by the Dart VM at runtime).

tpkroot
└── res
    └── flutter_assets
        ├── vm_snapshot_data
        ├── isolate_snapshot_data
        └── kernel_blob.bin