Skip to content

xiaowei-guan/embedder

 
 

Repository files navigation

embedder

Build

The Flutter embedder for Tizen.

Build

Prerequisites

  • Linux (x64)
  • depot_tools
  • LLVM (10 or later)
    • sudo apt install clang-12
  • Additional dependencies
    • sudo apt install git python3 rpm2cpio cpio
    • sudo apt install binutils-arm-linux-gnueabi binutils-aarch64-linux-gnu binutils-i686-linux-gnu

Environment setup

  1. Create an empty directory called embedder and cd into it.

  2. Create a .gclient file by running:

    gclient config --name=src --unmanaged https://github.com/flutter-tizen/embedder
  3. Run gclient sync to fetch all the source code and dependencies.

    Note: gclient sync must be run every time the DEPS file (or the generate_sysroot.py script) is updated.

Compile

cd into the generated src directory and run the following commands.

  • For arm

    tools/gn --target-cpu arm --target-toolchain /usr/lib/llvm-12
    ninja -C out/tizen_arm
  • For arm64

    tools/gn --target-cpu arm64 --target-toolchain /usr/lib/llvm-12
    ninja -C out/tizen_arm64
  • For x86

    tools/gn --target-cpu x86 --target-toolchain /usr/lib/llvm-12
    ninja -C out/tizen_x86

Notes

  • To build an app (TPK) with the embedder generated in the above, copy the output artifacts (libflutter_tizen*.so) into the flutter-tizen tool's cached artifacts directory (flutter/bin/cache/artifacts/engine) and run flutter-tizen run or flutter-tizen build tpk.
  • To use the embedder's built-in libc++ (third_party/libcxx) instead of the target device's libstdc++.so, provide the --no-system-cxx option to tools/gn.
  • Building NUI-related code requires a sysroot for Tizen 6.5 or above and the --api-version 6.5 option.

Repository structure

This repository contains the following files and directories.

  • //build
    • config: Contains GN configs for setting up the build environment for the toolchain.
    • secondary: The secondary source tree to find input files for build. See the .gn file for details.
  • //flutter
    • fml: A subset of the Flutter engine's fml library.
    • shell/platform/common: Contains C++ client wrapper and other common code used by the embedder implementation. Copied from flutter/engine.
    • shell/platform/embedder: Contains embedder.h which defines a low-level API for interacting with the Flutter engine. Copied from flutter/engine.
    • shell/platform/tizen: The Tizen embedder implementation.
      • channels: Internal plugins based on platform channels.
      • public: The public API of the embedder.
    • third_party/accessibility: A fork of the chromium accessibility library. Copied from flutter/engine.
  • //tools
    • download_engine.py: A script to download engine artifacts required for linking. Executed as a hook by gclient sync. The downloaded artifacts can be found in //engine.
    • generate_sysroot.py: A script to generate Tizen sysroots for arm/arm64/x86. Executed as a hook by gclient sync. The sysroots are by default generated in //sysroot.
    • gn: A script to automate running gn gen.
  • .gn: The top-level .gn file referenced by gn.
  • DEPS: The DEPS file used by gclient sync to install dependencies and execute hooks.

About

Flutter embedder for Tizen

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 78.4%
  • C 20.2%
  • Python 1.4%