agus_maps_flutter 0.1.21
agus_maps_flutter: ^0.1.21 copied to clipboard
High-performance offline vector maps for Flutter using the CoMaps rendering engine.
0.1.21 #
Map View #
- Initial viewport ordering: Restored v0.1.17 behavior by applying the initial
setViewbeforeonMapReadyto avoid delayed/blank initial renders for consumers.
macOS #
- Metal context build fix: Restored missing
DrawMetalContextmembers and removed stale legacy-branch references to unblock macOS builds.
0.1.20 #
macOS/iOS Rendering #
- SDK shader validation: CI now fails if
shaders_metal.metallibis missing, preventing release of iOS/macOS SDK artifacts that would render blank.
0.1.19 #
macOS/iOS Rendering #
- Regression isolation toggle: Added a legacy Metal
Present()path toggle to help diagnose broken initial rendering on macOS/iOS SDK consumers introduced after v0.1.14. - Documentation note: Documented the regression investigation and the diagnostic toggle location in macOS implementation notes.
0.1.18 #
Map View #
- Initial Viewport Fix: Delayed initial map view setup to ensure
onMapReadyis called first and map registration completes, preventing race conditions during startup.
Documentation #
-
Cached headers troubleshooting: Updated README and RELEASE.md with instructions for clearing cached headers on iOS/macOS to resolve potential build issues.
-
Project management guides: Added
doc/ARCHIVING.mdanddoc/COPYING.mdto provide standardized guidelines for archiving and copying the project directory.
0.1.17 #
Map Rendering & UX #
-
Dynamic visual scaling: Added a
densityparameter tocreateMapSurfaceandresizeMapSurface, enabling DPI-aware visual scaling without surface recreation.AgusMapnow combines device pixel ratio with a user scale, and the example app includes a persistent map label scale slider. -
Windows pixel conversion: Rounded physical pixel dimensions on Windows and improved diagnostics/texture filtering for clearer rendering.
Platform Fixes #
- macOS shutdown stability: Fixed quit hangs and Cmd+Q aborts by making Metal context cleanup non-blocking and safer during teardown.
Build System & Tooling #
-
Windows data generation compatibility: Desktop data generation now uses Git Bash on Windows and avoids multiprocessing in
libkomwm.pyvia a dedicated patch. -
Map downloader enhancements: Added force re-download and cache handling flags to
tool/map_downloader.dart. -
Data tooling cleanup: Removed symbol texture download logic from the data generation pipeline.
-
Script cleanup: Retired legacy bootstrap/patch validation scripts in favor of Dart hooks and
build_allscripts.
CI/CD #
-
Windows-focused builds: CI now enables CoMaps builds on Windows only and streamlines Python setup/submodule LFS handling.
-
LFS reliability: Added
git lfs pullfor nested submodules and improved logging during initialization.
Dependencies #
- Tooling updates:
archive4.0.7,ffigen20.1.1,flutter_lints6.0.0; CI Flutter updated to 3.38.7.
Documentation #
-
Windows assets guidance: Documented extracted asset locations on Windows.
-
CoMaps tag refresh: Updated docs and scripts to
COMAPS_TAGv2026.01.08-11. -
Docs cleanup: Updated documentation to replace removed shell/PowerShell script references with
tool/build.dartusage.
Maintenance #
- Example lockfiles: Removed
path_provider_foundationfrom iOS/macOS example Podfile locks.
0.1.16 #
Windows Rendering #
-
Zero-copy pipeline: Implemented WGL_NV_DX_interop with DXGI shared handles for GPU-only frame transfer (CPU fallback retained). Includes adapter matching, interop FBO setup, renderbuffer fallback, draw/read buffer setup, and RGBA→BGRA swizzle in the CPU path.
-
Diagnostics overlay: Added native OpenGL overlay for runtime visibility of renderer/transfer path and keyed mutex state, with environment toggle and custom lines API.
-
Active frame notifications: CoMaps render loop now calls the active-frame callback when a frame is rendered, ensuring Flutter is notified of live frames.
Build System #
-
Windows runtime dependencies: Build tooling now copies
zlib1.dllfrom vcpkg into the output directory and improves vcpkg manifest path handling. -
Clean build helper: Added
clean-build.ps1to simplify Windows clean builds.
Documentation #
- Windows architecture updates: Added/expanded Windows implementation docs for zero-copy rendering, overlay diagnostics, and render loop behavior.
0.1.15 #
Map Mirrors & Downloads #
-
CoMaps CDN discovery:
MirrorServicenow targets CoMaps CDN servers and probes snapshots viacountries.txt(no directory listings), with a newdiscoverMirrors()that reports availability and latency. -
Shared mirror utilities: Added
lib/src/mirror_utils.dartto parsecountries.txtJSON, model regions/snapshots, and share mirror discovery logic between runtime and tools. -
Map downloader tooling: New
tool/map_downloader.dart(mirror discovery, snapshot probing, JSON reports, list modes) andtool/check_mirrors.dartdiagnostics for metaserver and CDN health checks.
Example App #
-
Mirror selector UI: Downloads tab now surfaces mirror status/latency, allows switching mirrors, and refreshes mirror discovery in the background.
-
Download paths & cleanup: Downloads now store maps under
Documents/agus_maps_flutter/maps; cache validation probescountries.txt, and startup cleanup checks both root and maps directories for partial downloads. -
Map deletion flow: Added per-map delete actions for non-bundled downloads, backed by new
MwmStorage.deleteMap()APIs and UI confirmation.
Build System & CI #
-
Thirdparty caching: Build runner can cache
thirdparty/into.thirdparty-<tag>.tar.gzand restore it on bootstrap; tar.gz create/extract support added to the archive manager. -
Boost headers handling: Build tooling now prefers Boost modular headers and falls back to
b2 headerswhen needed; CI verifies flat headers for plugin compilation. -
CI asset downloads: CI and build scripts now use the Dart map downloader for consistent asset retrieval (with optional JSON reports) and validate/copy ICU data.
-
iOS/macOS source hiding: CI temporarily hides CoMaps source during iOS/macOS example builds and extracts bundled headers for plugin compilation, then restores sources post-build.
-
Windows vcpkg baseline: Added
builtin-baselinetovcpkg.jsonand CI ensures the baseline commit is available in the cached vcpkg clone.
Build Tooling #
-
CMake/NDK detection: CMake discovery now prefers SDK-installed CMake on Windows; Android NDK detection honors
ANDROID_NDK_HOMEand falls back to the newest installed version with clearer errors. -
Process diagnostics: Process runner adds verbose command logging and prints captured stdout/stderr on failures.
Documentation #
- CoMaps CDN guidance: README and mirror service docs now describe CoMaps CDN servers, metaserver discovery, and updated download examples.
0.1.14 #
Build System Overhaul #
-
Dart Build Tool Migration: Replaced shell scripts (
.sh,.ps1) with a unified Dart build tool (tool/build.dart) for all platforms. This provides better cross-platform compatibility, easier maintenance, and consistent behavior across macOS, Linux, and Windows. -
Dart Hooks Infrastructure: Implemented Dart hooks system (
hook/build.dart) to automatically download and install the SDK duringflutter pub getfor plugin consumers. This eliminates the manual download step for typical consumers.- Consumer Workflow: The hook automatically downloads the SDK from GitHub Releases during
flutter pub get - Contributor Workflow: Contributors use
dart run tool/build.dart --build-binariesto build from source - Fallback Support: The
AGUS_MAPS_HOMEenvironment variable remains supported as a fallback
- Consumer Workflow: The hook automatically downloads the SDK from GitHub Releases during
-
Modular Build System: Created
tool/src/with modular Dart components:build_runner.dart- Main build orchestrationcmake_build.dart- CMake build logic for all platformssdk_downloader.dart- SDK download and installationplatform_detector.dart- OS and platform detectionfile_operations.dart- Cross-platform file operationsprocess_runner.dart- External process executiongit_operations.dart- Git operations (clone, checkout, submodules)patch_applicator.dart- CoMaps patch applicationarchive_manager.dart- Archive operationsconfig.dart- Build configuration and constants
Bug Fixes #
-
iOS XCFramework Generation: Fixed a critical issue where iOS XCFramework creation failed due to naming conflicts when merging static libraries from device and simulator builds. Both builds were creating
libcomaps.ain the same directory, causing overwrites. The fix creates separate temporary directories (temp/iphoneos/andtemp/iphonesimulator/) for each architecture's merged library. -
Windows Visual Studio Generator: On Windows, the build tool now uses Visual Studio 17 2022 generator instead of Ninja to avoid GCC/MinGW-w64 compatibility issues with ICU compilation. ICU has known issues with newer GCC versions (e.g., 15.2.0), so using MSVC via Visual Studio generator is more reliable.
-
Windows Multi-Config Builds: Fixed handling of Visual Studio multi-configuration builds where
CMAKE_BUILD_TYPEis ignored during configure and output DLLs are placed inbuildDir/Release/orbuildDir/Debug/subdirectories. The build tool now correctly uses the--configflag and searches appropriate output directories. -
Windows Path Handling: Improved path handling in the
copyPathfunction with proper normalization usingpath.absolute()andpath.normalize(). Added error handling to skip files that can't be copied (symlinks, missing files) instead of failing the entire copy operation. -
Windows Data Generation: The Dart build tool now only runs
generate_desktop_ui_strings.pydirectly on Windows and skips bash scripts (generate_drules.sh,generate_categories.sh), matching the behavior of the original PowerShell implementation. -
Windows zlib1.dll Runtime Dependency: Added CI step to copy
zlib1.dllruntime dependency for Windows builds, ensuring the DLL is available at runtime. -
CoMaps Data Generation Environment: Added
OMIM_PATHandDATA_PATHenvironment variables to data generation scripts (generate_drules.sh,generate_categories.sh), which are required by CoMaps tools to locate sources and output directories correctly.
CI/CD Improvements #
-
Workflow Modernization: Updated
.github/workflows/devops.ymlto usedart run tool/build.dartinstead of shell scripts for:- CoMaps bootstrap (
dart run tool/build.dart --no-cache) - Platform-specific native builds (
dart run tool/build.dart --build-binaries --platform <platform>)
- CoMaps bootstrap (
-
MWM Download Steps: Added explicit MWM file download steps to CI workflow for iOS, macOS, and Android example app builds. Downloads
World.mwm,WorldCoasts.mwm, andGibraltar.mwmfrom CoMaps CDN servers (with Organic Maps mirrors as fallback) to ensure map assets are available for example apps. -
Symbol Texture Downloading: Implemented automatic download of symbol textures from Organic Maps for various resolutions and themes (
.sdfand.pngfiles). -
CocoaPods Automation: Improved Metal shader compilation handling for macOS/iOS builds, ensuring shaders are correctly processed and linked. Added CocoaPods setup automation after building native binaries.
Documentation #
-
Early-Stage Notice: Added early-stage development notice to README to set appropriate expectations for users.
-
Dart Hooks Documentation: Added comprehensive
doc/DART-HOOKS.mddocumenting the new build system architecture, migration from shell scripts, build mode detection, and troubleshooting.
Dependencies #
- New Build Dependencies: Added the following packages to support the Dart build system:
hooks: ^1.0.0- Dart hooks API for build automationarchive: ^3.4.0- Archive operations (ZIP extraction/creation)yaml: ^3.1.2- YAML parsing for pubspec.yamlpath: ^1.9.1- Cross-platform path operations
Migration #
No action required for consumers upgrading from 0.1.13. The Dart hooks system provides a smoother experience:
- First-time setup: Simply run
flutter pub get- the SDK will be downloaded automatically - Existing
AGUS_MAPS_HOMEusers: Your existing setup continues to work; the environment variable takes precedence over auto-download - Contributors: Use
dart run tool/build.dart --build-binariesinstead of shell scripts
0.1.13 #
Documentation #
-
Comprehensive API Reference: Added
doc/API.mdwith complete documentation of all existing APIs and a roadmap for future API additions. Includes detailed implementation patterns for FFI and MethodChannel APIs, code review checklists, and CoMaps framework reference. -
Enhanced README: Significantly improved setup instructions with detailed platform-specific configuration for iOS, macOS, and Android minimum versions. Added a new "Quick Test" section with a compact example app to verify plugin setup.
-
API Reference Links: Updated README and CONTRIBUTING.md to include links to the new API reference documentation. Moved Features section to the example app README for better organization.
Linux Build System #
-
Simplified Binary Distribution: Removed the separate
libagus.sodependency from Linux builds. All CoMaps functionality is now statically linked intolibagus_maps_flutter.so, reducing deployment complexity and eliminating potential library loading issues. -
Streamlined CMakeLists.txt: Updated
linux/CMakeLists.txtto check only forlibagus_maps_flutter.soduring prebuilt detection, reflecting the consolidated library architecture.
Migration #
No action required for consumers upgrading from 0.1.12. The Linux build changes are fully backward compatible—existing AGUS_MAPS_HOME setups will continue to work with the new single-library architecture.
0.1.12 #
Bug Fixes #
-
Missing Metal Shaders in Release Binaries: Fixed a critical packaging issue where
shaders_metal.metallibwas omitted from theagus-binaries-ios.zipandagus-binaries-macos.ziprelease artifacts. This caused runtime crashes on iOS and macOS (specificallyCHECK(libPath != nil) shaders_metal.metallib not found in any bundle!). The CI/CD workflow and local build scripts now correctly package theResourcesdirectory containing the compiled shaders. -
Development Pod Resource Copying: Updated the
podspecdevelopment helper script (used when the plugin is a local path dependency) to copyResources(shaders) fromAGUS_MAPS_HOMEin addition to headers. This ensures that local example apps and development workflows correctly include the necessary Metal shaders.
0.1.11 #
Bug Fixes #
- iOS Release build failure (critical): Fixed missing
GCC_PREPROCESSOR_DEFINITIONSconfiguration overrides for Debug/Release builds in the iOS podspec. Without these, CoMaps'base/base.hpptriggers a static assertion:Either Debug or Release should be defined, but not both. This affected pub.dev consumers building for iOS in Release mode. The fix addsDEBUG=1for Debug builds andRELEASE=1 NDEBUG=1for Release/Profile builds, matching the macOS podspec.
Documentation #
- New Build Configuration Guide: Added
doc/BUILD-CONFIGURATION.mdto comprehensively document build configurations (Debug/Release/Profile), preprocessor definitions, and platform-specific build details. - Release Guide Update: Updated
doc/RELEASE.mdto reflect the deprecation of individual binary downloads. It now focuses on the Unified Binary Package and provides detailed instructions for installing pre-built Example Apps on all platforms.
Release & Distribution #
- Deprecated Individual Binary Downloads: The release workflow now only distributes the unified
agus-maps-sdk. Individual platform zip files (e.g.,agus-binaries-ios.zip) are no longer generated to streamline distribution. - Release Artifacts Cleanup: The
devops.ymlworkflow was updated to stop uploading deprecated artifacts.
0.1.10 #
iOS and macOS Build System Improvements #
-
Development Pod header support: Added automatic header copying at
pod installtime for Development Pods (path dependency) on both iOS and macOS. When using the plugin as a development dependency (e.g.,path: ../agus_maps_flutter), headers are now copied fromAGUS_MAPS_HOMEduring pod installation, fixing "file not found" errors for CoMaps headers likeboost/regex.hpp. -
SDK source tracking: Introduced a marker file (
.sdk_source) in theios/Headers/andmacos/Headers/directories to track which SDK the headers were copied from. The build system now detects whenAGUS_MAPS_HOMEchanges and automatically refreshes headers, ensuring consumers always have the correct headers for their configured SDK version. -
Header copying in
prepare_command: Both iOS and macOS podspecprepare_commandblocks now copy headers fromAGUS_MAPS_HOME/headerstoHeaders/comaps/alongside the XCFramework. This ensures pub.dev consumers have all necessary headers for compilation. -
Prioritized header search paths (macOS): Reordered
HEADER_SEARCH_PATHSin the macOS podspec to prioritize downloaded headers (Headers/comaps/) over in-repo thirdparty paths. This ensures consumers using the SDK binaries get consistent header resolution without interference from missing in-repo sources.
Repository Maintenance #
- Updated
.gitignore: Addedmacos/Headers/andios/Headers/to ignore downloaded headers, keeping the repository clean when using SDK binaries.
Technical Details #
-
Development Pod vs. Published Pod behavior:
- Published pods (from pub.dev):
prepare_commandruns duringpod install, copying frameworks and headers - Development pods (path dependency):
prepare_commandis skipped; new Ruby code at the top of the podspec handles header copying
- Published pods (from pub.dev):
-
Header refresh triggers:
Headers/comaps/directory missing.sdk_sourcemarker file missing.sdk_sourcecontains a different path than currentAGUS_MAPS_HOME
Migration #
No breaking changes. Consumers using AGUS_MAPS_HOME will benefit from automatic header management on both iOS and macOS. If you encounter stale headers after changing SDK versions, delete ios/Headers/ or macos/Headers/ and run pod install again.
0.1.9 #
Build System Improvements #
-
Streamlined Android prebuilt binary integration: Refactored
android/build.gradleto provide a cleaner separation between in-repo development mode and external consumer mode. External consumers now exclusively use pre-built binaries viajniLibs.srcDirs, while in-repo contributors continue to build from source via CMake. -
Enhanced AGUS_MAPS_HOME detection: When
AGUS_MAPS_HOMEenvironment variable is set and points to a valid directory, the build system now explicitly forces external consumer mode. This prevents accidental source builds when consumers have the SDK properly configured. -
Disabled CMake for external consumers: The
externalNativeBuildblock inandroid/build.gradleis now conditionally applied only for in-repo builds. External consumers no longer trigger CMake configuration, eliminating unnecessary build overhead and potential configuration errors. -
Simplified prebuilt library lookup: Removed complex multi-tier fallback logic in favor of a straightforward approach:
- Check
AGUS_MAPS_HOMEenvironment variable - Use
jniLibs.srcDirsto point to the prebuilt libraries - Provide clear error messages if binaries are not found
This eliminates the plugin-local
prebuilt/directory fallback for non-CI builds, making the consumer workflow more explicit and predictable. - Check
Bug Fixes #
-
Asset extraction verification: Enhanced the asset extraction check in
AgusMapsFlutterPlugin.javato verify that essential files (e.g.,unicode_blocks.txt) exist before skipping re-extraction. This prevents runtime errors caused by incomplete or corrupted asset extractions.The plugin now checks:
- Marker file (
.comaps_data_extracted) indicating prior extraction - Essential asset file (
fonts/unicode_blocks.txt) to confirm completeness
If either check fails, assets are re-extracted automatically.
- Marker file (
Error Message Improvements #
- Clearer setup instructions: Error messages when
AGUS_MAPS_HOMEis missing or invalid now provide more actionable guidance:- For consumers: Step-by-step instructions to download, extract, configure, and use the SDK
- For contributors: Direct reference to build scripts (
build_all.sh/build_all.ps1) - Distinguished between AGUS_MAPS_HOME path issues vs. missing binaries entirely
Technical Details #
-
Build mode detection logic: The build system now evaluates build mode in this order:
- AGUS_MAPS_HOME override: If set and valid, force external consumer mode
- In-repo check: If
.gitandthirdparty/comapsexist AND AGUS_MAPS_HOME is not set, use in-repo development mode - External consumer: Otherwise, require AGUS_MAPS_HOME with valid prebuilt binaries
-
jniLibs.srcDirs approach: Instead of using CMake arguments to configure prebuilt paths, the Gradle build now directly adds the prebuilt directory to
sourceSets.main.jniLibs.srcDirs. This is the standard Android approach for including pre-compiled native libraries and avoids CMake entirely for consumers.
Migration #
No breaking changes. Consumers using AGUS_MAPS_HOME correctly will see improved build performance (no CMake overhead) and clearer error messages. Ensure your AGUS_MAPS_HOME points to a valid SDK directory with the following structure:
agus-maps-sdk-v0.1.9/
├── android/prebuilt/{arm64-v8a,armeabi-v7a,x86_64}/
├── ios/Frameworks/CoMaps.xcframework/
├── macos/Frameworks/CoMaps.xcframework/
├── windows/prebuilt/x64/
├── linux/prebuilt/x64/
└── assets/
├── comaps_data/
└── ...
Cross-Platform Impact #
- Android only: All changes are scoped to Android Gradle configuration and Java plugin code
- No changes to iOS/macOS/Linux/Windows: Build systems for other platforms remain unchanged
0.1.8 #
Bug Fixes #
-
Android Gradle syntax error: Fixed a missing closing brace in
android/build.gradleinside the external CMake configuration block. The malformedelse { ... }caused Gradle to reportUnexpected input: '{'at theandroid {line during CI. The block is now correctly closed and parses under AGP 8.x. -
NDK handling aligned with v0.1.6: Retained
ndkVersion = android.ndkVersionto match prior successful builds. No changes to NDK behavior versus0.1.6; the consuming app continues to define the NDK version used.
CI Stability #
- GitHub Actions (Android): With the Gradle file corrected, CI can evaluate the project and proceed to build native libraries and example artifacts without early failure. NDK behavior remains unchanged from
0.1.6. No workflow changes are required.
Cross‑platform Impact #
- No changes to iOS/macOS/Linux/Windows: The fix is scoped to Android Gradle configuration only. Other platforms and their build systems (CocoaPods/CMake) remain unchanged and continue to work as in
0.1.7.
Migration #
No action required for consumers upgrading from 0.1.7. NDK behavior is unchanged compared to 0.1.6.
0.1.7 #
Breaking Changes #
-
Mandatory
AGUS_MAPS_HOMEfor consumers: Plugin consumers must now set theAGUS_MAPS_HOMEenvironment variable pointing to the extracted SDK directory. The fallback to extracting binaries into the app root directory has been removed. -
SDK Package Renamed: The release artifact is now named
agus-maps-sdk-vX.Y.Z.zip(previouslyagus-maps-binaries-vX.Y.Z.zip) to better reflect that it contains the complete SDK with binaries, assets, and optional headers.
New Features #
-
CI Environment Detection: All build systems (Gradle, CMake, CocoaPods) now detect CI environments via the
CIenvironment variable. This allows CI workflows to use plugin-localprebuilt/directories without requiringAGUS_MAPS_HOME. -
Standardized Error Messages: All platforms now display consistent, actionable error messages when binaries are not found, clearly distinguishing between consumer and contributor workflows.
Build System Improvements #
-
Android
build.gradle: Fixed a bug with orphaned if-block in prebuilt detection logic. Added CI detection to allow plugin-local prebuilt directories only in CI or when binaries actually exist. -
iOS/macOS podspecs: Enhanced
prepare_commandwith CI detection. CI builds now proceed with a placeholder, allowing the workflow to copy frameworks before the actual build step. -
Linux/Windows CMakeLists: Added
IS_CIdetection alongsideIS_IN_REPOfor cleaner workflow separation.
Documentation #
-
Rewrote
GUIDE.md: Replaced historical architecture document with current implementation details. Now covers the three workflow types (contributor, CI, consumer) and actual platform implementations. -
Updated
README.md: Refined consumer installation instructions with platform-specific commands for settingAGUS_MAPS_HOME. Added Windows CMD example alongside PowerShell. -
Updated
CONTRIBUTING.md: Added explicit warning that contributors should NOT setAGUS_MAPS_HOME- the build scripts handle everything automatically.
Migration Guide #
If upgrading from v0.1.6:
- Download
agus-maps-sdk-v0.1.7.zipfrom GitHub Releases - Extract to a permanent location (e.g.,
~/agus-sdk/agus-maps-sdk-v0.1.7) - Set
AGUS_MAPS_HOMEenvironment variable:# macOS/Linux (add to ~/.bashrc or ~/.zshrc) export AGUS_MAPS_HOME=/path/to/agus-maps-sdk-v0.1.7 # Windows PowerShell (add to profile or set system env var) $env:AGUS_MAPS_HOME = "C:\path\to\agus-maps-sdk-v0.1.7" - Copy assets from SDK to your Flutter app's
assets/folder - Rebuild with
flutter clean && flutter build
0.1.6 #
Bug Fixes #
- Fixed Windows CI archive creation step: Resolved a CI failure where the "Create Windows Binaries Archive" step was using bash-style commands (
rm -f,zip) but running in PowerShell by default. PowerShell interpretedrm -fasRemove-Itemwith an ambiguous-fparameter. Changed to native PowerShell commands (Remove-Item,Compress-Archive) with explicitshell: pwshfor consistency with other Windows steps.
0.1.5 #
Bug Fixes #
- Fixed Windows binaries path in unified package: Resolved an issue where Windows binaries in
agus-maps-binaries-vX.Y.Z.zipwere incorrectly placed atwindows/prebuilt/agus-binaries-windows/x64/instead ofwindows/prebuilt/x64/. This caused Windows consumers to get "file not found" errors when using the unified binary package.
New Features #
-
Auto-download XCFramework for iOS/macOS: Pub.dev consumers no longer need to manually place iOS/macOS frameworks. The CocoaPods
prepare_commandnow automatically downloads the XCFramework from GitHub releases when not found locally. This solves the issue where pub-cache installed plugins couldn't find frameworks extracted to the consumer app's directory (different directory trees).Important: Consumers still need to download and extract the unified binary package to their app root for assets (
assets/comaps_data/,assets/maps/). Only the XCFramework download is automated.
Build System Improvements #
-
Updated podspec versions: iOS and macOS podspecs now correctly specify version
0.1.5(previously0.0.1). -
Improved iOS/macOS podspec documentation: Added detailed comments explaining the three-tier framework resolution: (1) local existence check, (2) relative path search for vendored plugins, (3) auto-download from GitHub releases.
-
Improved Android build.gradle documentation: Added clarifying comments about how
rootDirresolves in Flutter Android builds to help future maintainers understand the prebuilt binary search logic.
CI/CD Improvements #
-
Consistent archive creation for Windows: Added a dedicated "Create Windows Binaries Archive" step in CI workflow (similar to Android and Linux) that creates the zip with content at root level, ensuring the correct
windows/prebuilt/x64/structure in the unified package. -
Removed duplicate release artifact: Removed the redundant non-versioned
agus-maps-binaries.zipfrom releases. Only the versionedagus-maps-binaries-vX.Y.Z.zipis now uploaded, avoiding confusion and reducing release artifact size. -
Individual iOS/macOS binary zips in releases: Added
agus-binaries-ios.zipandagus-binaries-macos.zipto GitHub releases for CocoaPods auto-download functionality.
0.1.4 #
Bug Fixes #
- Fixed Android CI build failure: Resolved an issue where in-repo builds (CI, local development) incorrectly used pre-built binary mode instead of building from source. This caused compilation failures with "file not found" errors for CoMaps headers (
base/task_loop.hpp,platform/platform.hpp, etc.) because the headers directory was not set.
Build System Changes #
- Prioritize source builds for in-repo development: Changed Android Gradle build logic to always build from source when running in-repo (when
.gitandthirdparty/comapsexist), regardless of whetherandroid/prebuilt/contains binaries. This ensures CI builds and local development always use the source code. - Clearer error for external consumers: External consumers (Flutter apps using this plugin as a dependency) now receive a clear
GradleExceptionwith download instructions if pre-built binaries are missing, instead of a generic warning.
0.1.3 #
Breaking Changes #
- Removed auto-download behavior: All build systems (CMake, Gradle, CocoaPods) no longer auto-download binaries during build. Consumers must manually download and extract the unified package before building.
- Removed
download_libs.sh: The auto-download script has been removed to ensure a single, consistent, deterministic workflow for all consumers.
Consumer Workflow Changes #
The workflow is now fully manual and deterministic:
- Add
agus_maps_flutter: ^0.1.3to yourpubspec.yaml - Download
agus-maps-binaries-v0.1.3.zipfrom GitHub Releases - Extract directly to your Flutter app root directory
- Add assets to your
pubspec.yaml:flutter: assets: - assets/comaps_data/ - assets/maps/ - Run
flutter build
⚠️ Upgrading from 0.1.2: When upgrading the plugin version, you must also manually download and extract the new binaries package. The build system will NOT auto-download - it only detects pre-existing binaries.
Unified Package Structure #
After extracting agus-maps-binaries-vX.Y.Z.zip to your app root (my_app/):
my_app/
├── android/prebuilt/{arm64-v8a,armeabi-v7a,x86_64}/ ← Native libraries
├── ios/Frameworks/CoMaps.xcframework/ ← iOS framework
├── macos/Frameworks/CoMaps.xcframework/ ← macOS framework
├── windows/prebuilt/x64/ ← Windows DLLs
├── linux/prebuilt/x64/ ← Linux shared libs
├── assets/comaps_data/ ← Engine data files
├── assets/maps/ ← Map files location
├── headers/ ← (Optional) C++ headers
├── lib/ ← Your app code
└── pubspec.yaml
Build System Improvements #
- Detection-only build systems: All platforms (CMake, Gradle, CocoaPods) now only detect pre-built binaries. Clear error messages with download instructions are shown when binaries are missing.
- No network during build: Build process is fully deterministic with no implicit downloads.
- Consistent archive format: All platform binaries use consistent archive structure without wrapper folders.
- Linux architecture naming: Standardized Linux binaries to use
x64folder naming (consistent with Windows). - Multi-location binary search: CMake (Linux/Windows) and Gradle (Android) now search multiple locations for pre-built binaries:
- Plugin-local directory (for CI builds or vendored plugins)
- Project root directory (for consumers extracting unified package)
- Linux CMakeLists.txt: Complete rewrite with prebuilt detection, IMPORTED targets, and clear FATAL_ERROR messages for missing binaries.
- Windows CMakeLists.txt: Enhanced detection logic matching the Linux implementation.
CI/CD Improvements #
- Explicit archive creation: CI now creates all platform archives with consistent structure (content at root, no wrapper folders).
- Removed archive creation from build scripts: Build scripts now only produce output directories; CI handles archive creation for consistency.
- Linux archive creation: Added explicit archive creation step in CI for Linux binaries with x64 folder naming.
Documentation #
- Updated
README.mdwith simplified 5-step Quick Start guide and upgrade instructions. - Updated
CHANGELOG.mdwith detailed migration notes. - Updated
doc/RELEASE.mdwith manual setup workflow and platform detection details. - Updated
doc/IMPLEMENTATION-IOS.mdwith manual binary setup instructions. - Updated
doc/IMPLEMENTATION-MACOS.mdwith manual binary setup instructions. - Updated
doc/IMPLEMENTATION-CI-CD.mdwith consumer workflow notes. - Updated iOS/macOS podspec comments to reflect manual setup requirement.
0.1.2 #
Release Packaging Improvements #
- Unified binary package: Introduced
agus-maps-binaries-vX.Y.Z.zipcontaining all platform binaries, assets, and headers in a single download. - Versioned artifact filenames: All release artifacts now include the version tag (e.g.,
agus-maps-android-vX.Y.Z.apk). - Streamlined release artifacts: Removed individual platform binary zips from releases - they are now consolidated in the unified package.
- Headers included: C++ headers are now bundled in the unified package for developers who need to build from source.
Documentation #
- Updated
doc/RELEASE.mdwith comprehensive installation guide for the unified binary package.
0.1.1 #
- CI/CD improvements for multi-platform builds.
- Azure Blob Storage caching for CoMaps source.
- Build workflow optimizations.
0.1.0 #
- Initial release of Agus Maps Flutter.
- Zero-copy rendering architecture.
- Offline maps support via CoMaps engine.
- Experimental support for linux, macos, windows, ios and android targets.
- This is an experimental release, do not use on production apps.