All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- GitHub-hosted
CIworkflow for lightweight PR/push checks: Python compile, shell syntax, PowerShell parse, workflow/package/docs sanity, and whitespace guard. - Manual self-hosted workflows for full
.debbuilds, Windows+ADB tablet smoke tests, and release asset metadata verification. docs/CI_CD.mddocumenting workflow boundaries, runner requirements, security model, and local equivalents.scripts/ci/check_repo.pyto keep release/docs/package contracts from silently regressing.scripts/device/run_termux_smoke.ps1andscripts/device/termux_smoke.shfor repeatable Termux tablet smoke testing.
- Moved the GitHub Release E2E script from repository root to
scripts/test/gh_e2e_test.sh. - Removed the stale
.agent/workflows/build-termux-flutter.mdworkflow in favor of maintained GitHub Actions anddocs/CI_CD.md. - Updated README/README_EN directory maps and CI/CD guidance to match the organized
scripts/{ci,device,test}layout. - Ignored local OMX/OMC runtime state and normalized line-ending rules for workflows, Python, Markdown, shell, and PowerShell files.
- Flutter 3.44.0 / Dart 3.12 package refresh for Termux ARM64.
- Packaged
dartvmalongsidedartanddartaotruntimeso Dart 3.10+ VM/tool split works on Termux. - Release artifact metadata in docs: size
666,366,556bytes and SHA256b8af08d26ee4ae4b3dcf1aab4ee6b05965529587ddf1bc9b936b48b5f01f9846.
- Flutter Tools Android-host crashes by mapping Termux/Android host lookups to Linux ARM64 artifacts.
- Flutter 3.44 Gradle plugin failure by adding
PLATFORM_ABI_LISTto the ARM64-onlyFlutterPluginConstants.ktpost-install template. - Stale Gradle included-build cache after post-install source rewrites.
- NDK clang runtime path handling for the 3.44 Android gen_snapshot build.
python3 build.py debuild --arch=arm64with artifact validator fordart,dartvm, anddartaotruntime.- On-device smoke on Samsung SM-X716B / Android 16 / Termux:
flutter --version,dart --version,dartvm --version,flutter doctor -v,flutter create,flutter build apk --release --target-platform android-arm64 --no-tree-shake-icons, andflutter build linux --release.
- APK target remains ARM64-only.
- Per-project Android settings still need API 34 +
android.aapt2FromMavenOverride. flutter runrequires ADB pairing/connection inside Termux.
flutter build linuxon device:post_install.shsed command used|delimiter which collided with||in Dart source code, silently failing. Changed to@delimiterbuild.pysync duplicating directories:cp -rcaused nestedscripts/scripts/dirs. Fixed to usecp -a {src}/. {dst}/- flutter_tools snapshot not rebuilt: Added
rm -f flutter_tools.stampandrm -f flutter_tools.snapshotafter patchingbuild_linux.dartto force Dart VM to pick up changes
docs/guides/UPGRADE_GUIDE.md— complete step-by-step guide for upgrading to new Flutter versions.gitignorepatterns for temp scripts (fix_*.sh,test_*.sh, etc.)- E2E test script
gh_e2e_test.shfor automated clean-install verification from GitHub Release
- Download .deb → dpkg install → post_install.sh → flutter create → build apk → build linux: ALL PASS
- Flutter version upgrade: 3.35.0 → 3.41.5 (Dart 3.11.3)
- Linux release/profile engine builds:
build_all()now compiles all three Linux modes (debug, release, profile) - Full build matrix verified on device (6/6): Linux debug/release/profile + APK debug/release/profile
flutter build linux(release/profile) failure:build_all()was only building debug mode engine for Linux, leavinglinux_release_arm64/andlinux_profile_arm64/empty in the deb packageutils.py __MODE__ordering bug: Original order('release', 'debug', 'profile')causedOutput.anyto select release (product mode) dart-sdk snapshots when release directory exists, breaking the entire Flutter CLI. Fixed to('debug', 'release', 'profile')
- Build output now includes 5 directories:
linux_debug_arm64/,linux_release_arm64/,linux_profile_arm64/,android_release_arm64/,android_profile_arm64/ build_all()expanded from 8 to 12 steps to include Linux release/profile configure+build- Deb package size increased from ~541MB to ~662MB due to additional engine artifacts
- Full Flutter 3.35.0 support for Termux ARM64
flutter build apksupport (ARM64 only, debug/profile/release modes)flutter build linuxsupportflutter runwith Hot Reload support (all modes: debug/profile/release)- Linux desktop app support via Termux X11
- One-command installation script (
install_flutter_complete.sh) - Automatic NDK clang wrapper configuration
- Android SDK integration with API 34
- VM snapshots for Linux profile mode
- libc++_shared.so symlink issue (was pointing to linker script instead of ELF)
- NDK clang wrapper detection for multiple NDK versions
- Dependency conflicts during package upgrades (openjdk-17 vs openjdk-21)
- Missing Android build tools (d8, dx, aidl, apksigner)
- libatomic.a stubs for CMake compatibility
- Linux profile mode crash (
_NetworkProfilingtype not found in dart.io)- Root cause:
PropagateIfError()crashes when no Dart stack frames - Fix: Made network profiling initialization optional in
dart_runtime_hooks.cc
- Root cause:
- Gradle auto-downloading new NDK versions causing build failures
- Fix: Auto-set
ANDROID_NDK_HOMEin profile script to use pre-configured NDK
- Fix: Auto-set
- APK builds only support ARM64 (android-arm64-v8a)
- ARMv7 (android-arm) not supported due to BoringSSL 32-bit issues
- x86/x64 Android targets not supported
- Cross-compiled from x86_64 Linux (WSL) to ARM64 Bionic
- Uses NDK r27d with API level 35
- Patches applied to Flutter Engine, Dart VM, and Skia
- TLS alignment fixed for Bionic linker compatibility
{flutter_version}-termux - e.g., 3.35.0-termux
flutter_version: Upstream Flutter SDK versiontermux: Indicates this is a Termux-compatible build
See UPGRADE_GUIDE.md for upgrade instructions.