{"id":13743943,"url":"https://github.com/meta-flutter/flutter_embedded","last_synced_at":"2025-12-25T11:38:30.430Z","repository":{"id":37950573,"uuid":"161820286","full_name":"meta-flutter/flutter_embedded","owner":"meta-flutter","description":"Embedded Flutter","archived":false,"fork":false,"pushed_at":"2022-10-24T14:53:26.000Z","size":196,"stargazers_count":160,"open_issues_count":1,"forks_count":29,"subscribers_count":15,"default_branch":"ci","last_synced_at":"2025-01-01T02:33:27.689Z","etag":null,"topics":["cmake","embedded","flutter","flutter-engine","linux","raspberry-pi","rpi"],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meta-flutter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-14T17:39:37.000Z","updated_at":"2024-10-17T00:39:54.000Z","dependencies_parsed_at":"2023-01-19T14:45:18.527Z","dependency_job_id":null,"html_url":"https://github.com/meta-flutter/flutter_embedded","commit_stats":null,"previous_names":["jwinarske/flutter_embedded"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meta-flutter%2Fflutter_embedded","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meta-flutter%2Fflutter_embedded/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meta-flutter%2Fflutter_embedded/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meta-flutter%2Fflutter_embedded/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meta-flutter","download_url":"https://codeload.github.com/meta-flutter/flutter_embedded/tar.gz/refs/heads/ci","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253177758,"owners_count":21866394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","embedded","flutter","flutter-engine","linux","raspberry-pi","rpi"],"created_at":"2024-08-03T05:01:00.108Z","updated_at":"2025-12-25T11:38:30.424Z","avatar_url":"https://github.com/meta-flutter.png","language":"CMake","funding_links":[],"categories":["CMake","Projects"],"sub_categories":[],"readme":"# flutter_embedded\n\nThis repo is used for CI automation to build flutter-engine embedder for Linux.\n\n# Project Status\n\nx86_86 and aarch64 functional\n\nNo external toolchain is required, it uses toolchain pulled as part of engine build - Clang Toolchain.\n\nIf your are using a sysroot different than that included as default, you will need to override a few variables.  See examples below.\n\nThe original Yocto Layer to build Engine with variety of Flutter embedders:  [meta-flutter](https://github.com/jwinarske/meta-flutter)\n\n\n# Build Example\n\nSee CI build jobs here: https://github.com/jwinarske/flutter_embedded/blob/ci/.github/workflows/blank.yml\n\n## Switching channels\nTo switch channels add variable CHANNEL to cmake invocation.  Like this\n\n    cmake .. -DCHANNEL=beta\n    make package -j8\n\nTo build all channels of Engine/GLFW shell for Raspberry Pi armv7 in your nightly CI build job, you could do this\n\n    git clone https://github.com/jwinarske/flutter_embedded\n    cd flutter_embedded\n    mkdir build \u0026\u0026 cd build\n    cmake ..\n    make package -j8\n    cmake .. -DCHANNEL=beta\n    make package -j8\n    cmake .. -DCHANNEL=dev\n    make package -j8\n    cmake .. -DCHANNEL=master\n    make package -j8\n    cmake .. -DCHANNEL=stable -DENGINE_RUNTIME_MODE=release\n    make package -j8\n    cmake .. -DCHANNEL=beta\n    make package -j8\n    cmake .. -DCHANNEL=dev\n    make package -j8\n    cmake .. -DCHANNEL=master\n    make package -j8\n\n# Override Variables\nTo use the override variables, pass them in with the cmake command.  One example\n\n    cmake -DTOOLCHAIN_DIR=~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64 -DTARGET_SYSROOT=~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot  -DENGINE_REPO=https://github.com/jwinarske/engine -DCMAKE_BUILD_TYPE=Release\n\n### TARGET_SYSROOT\nThis is the location of the target sysroot.  The default value is \"${CMAKE_SOURCE_DIR}/sdk/sysroot\".  One approach would be to download target image such as a Raspberry Pi image, and mount it.  Setting TARGET_SYSROOT to the rootfs directory.\n\n### TARGET_ARCH\nThis is the target architecture of your build.  It must  match your toolchain, and that which the flutter engine build supports.\n\n### ENGINE_REPO\nThis is the repo of the flutter engine.  The default value is https://github.com/flutter/engine.git.  If you want to use your own fork, set this variable to point to your fork's url.\n\n### ENGINE_UNOPTIMIZED\nUnoptimized flag, defaults to OFF\n\n### ENGINE_RUNTIME_MODE\nIf ENGINE_RUNTIME_MODE is not set to `debug`, `profile`, or `release`, it defaults to `debug`.\n\n### ENGINE_SIMULATOR\nEnable simulator, defaults to OFF\n\n### ENGINE_INTERPRETER\nEnable interpreter, defaults to OFF\n\n### ENGINE_DART_DEBUG\nEnable dart-debug, defaults to OFF\n\n### ENGINE_CLANG\nEnable clang, defaults to ON\n\n### ENGINE_GOMA\nEnable goma, defaults to OFF\n\n### ENGINE_LTO\nEnable link-time optimization, defaults to ON\n\n### ENGINE_EMBEDDER_FOR_TARGET\nEmbedder for Target, defaults to ON\n\n### ENGINE_ENABLE_VULKAN\nEnable Vulkan, defaults to OFF\n\n## Native Flutter Target Debug\nI am successfully able to single step the Flutter Embedder using Host Side gdb-multiarch, and latest Eclipse release.  Target side requires gdbserver installed.  LLDB will be at a later date.\n\n    sudo apt-get install gdbserver\n\nChange build flags in this file\n\n    {build folder}/engine-prefix/src/engine/src/build/config/compiler/BUILD.gn\n\nTo include\n\n    if (is_linux) {\n        if (current_cpu != \"x86\") {\n            cflags_cc += [ \n            \"-ggdb\",\n            \"-ggdb3\",\n\nRebuild Engine\n\nCopy Artifact\n\n    scp {absolute build folder}/engine-prefix/src/engine/src/out/linux_debug_arm/so.unstripped/libflutter_engine.so pi@raspberrypi.local:/home/pi/lib\n\nInside Eclipse - Import C/C++ Executable, and select the Flutter binary.\n\n\n*Configuration - via Debugger Dialog*\n\n    Main / C/C++ Application: flutter\n\n    Main / Connection: Remote Host\n\n    Main / Remote Absolute File Path for C/C++ Application: /home/pi/bin/flutter\n\n    Main / Commands to execute before application\n\n        export LD_LIBRARY_PATH=/home/pi/lib\n\n    Main / Skip download to target path [TRUE]\n\n    Arguments: /home/pi/build/flutter_assets/\n\n    Debugger / Main / GDB Debugger\n\n        gdb-multiarch\n\n    Debugger / Shared Libraries\n\n        {absolute build folder}/engine-prefix/src/engine/src/out/linux_debug_arm/so.unstripped\n        {absolute sdk folder}/sysroot/lib\n        {absolute sdk folder}/toolchain/lib\n\n    Debugger / Shared Libraries / Load shared library symbols automatically [TRUE]  \n\n\nSet breakpoint at FlutterEngineRun().  \n\nRun the debugger, once breakpoint hits, change to the Debugger Console window, and issue\n\n    set step-mode on\n\nStep into FlutterEngineRun()\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeta-flutter%2Fflutter_embedded","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeta-flutter%2Fflutter_embedded","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeta-flutter%2Fflutter_embedded/lists"}