This is a tool for using Android with open-source mesh radios.
 
 
 
Go to file
James Rich b884c83980 refactor(release)!: simplify and streamline release workflow
This commit refactors the entire release process to be simpler, more robust, and less error-prone. The previous complex system of manual version calculation, artifact passing, and dry-run flags has been replaced with a more streamlined, two-stage process driven by distinct GitHub Actions workflows.

The new process separates tag creation from the release engine. A new `create-internal-release.yml` workflow is introduced to handle the creation and iteration of internal build tags (e.g., `v1.2.3-internal.1`, `v1.2.3-internal.2`). The main `release.yml` workflow is now triggered solely by the presence of a new version tag.

Key changes include:
-   The `release.yml` workflow no longer takes `dry_run` or `pr_number` inputs, as tag creation is now handled separately.
-   Version code is now consistently calculated once per build based on Git history and an offset, removing the complex logic for handling hotfixes and reusing version codes via artifacts.
-   Builds only occur if a release for the given `BASE_TAG` doesn't already exist on the same commit. This makes the process idempotent for promotions.
-   A new `prepare-release-environment` job intelligently handles superseded releases by deleting old releases and tags if a new tag for the same base version points to a different commit.
-   The build process is split into separate jobs for Google Play (`release-google`) and F-Droid (`release-fdroid`), allowing them to run in parallel.
-   Build attestations are now generated for all artifacts to improve supply chain security.
-   The `create-internal-release.yml` workflow is simplified to only require a `base_version`, automatically calculating the next internal iteration number. It no longer handles complex version bumping logic (`major`, `minor`, `patch`, `hotfix`).
-   Fastlane scripts have been cleaned up to remove now-unused lanes (`get_internal_track_version_code`).
-   The `RELEASE_PROCESS.md` documentation has been completely rewritten to reflect the new, simpler workflow.

BREAKING CHANGE: The release workflow has been fundamentally changed.
-   The `release.yml` workflow is no longer triggered with `workflow_dispatch` inputs like `dry_run`. Releases are now initiated by pushing a correctly formatted tag.
-   The `create-internal-release.yml` workflow has been changed. It no longer supports `release_type` (`auto`, `patch`, etc.) and instead requires a specific `base_version` to create an internal build tag for.
-   Hotfix handling via special tags like `-hotfix` is removed. Superseding a release is now handled by creating a new internal iteration for the same base version from a newer commit.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-03 10:44:02 -05:00
.github refactor(release)!: simplify and streamline release workflow 2025-10-03 10:44:02 -05:00
.idea fix(#1787): handle unknown hardware details crash (#1789) 2025-04-26 19:37:49 -05:00
app Fix shared contact deeplink (#3302) 2025-10-03 10:42:52 +00:00
build-logic refactor(analytics)!: modularize analytics - remove Logging (#3256) 2025-09-30 23:22:22 +00:00
config refactor(settings)!: standardize radio config screens (#3167) 2025-09-23 02:59:33 +00:00
core Update strings.xml - PKI required for DMs (#3301) 2025-10-03 15:01:19 +00:00
fastlane refactor(release)!: simplify and streamline release workflow 2025-10-03 10:44:02 -05:00
feature Fix shared contact deeplink (#3302) 2025-10-03 10:42:52 +00:00
gradle chore(deps): update datadog to v1.21.0 (#3292) 2025-10-02 17:08:43 +00:00
mesh_service_example Add `:feature:node` (#3275) 2025-10-01 23:26:41 +00:00
.gitignore New core modules for `:model`, `:navigation`, `:network`, `:prefs` (#3147) 2025-09-19 12:16:36 +00:00
.gitmodules Remove `design/` git submodule (#3177) 2025-09-23 21:29:33 +00:00
.ruby-version chore(deps): update ruby to v3.4.6 (#3120) 2025-09-16 13:06:21 +00:00
AGENT.md feat(build): Convention Plugins (#3081) 2025-09-15 10:47:03 +00:00
CONTRIBUTING.md docs: add information about spotless for code formatting (#2622) 2025-08-02 16:10:04 +00:00
Gemfile feat(ci): migrate to fastlane for release management (#3038) 2025-09-09 21:08:11 +00:00
Gemfile.lock fix: release fixes (#3179) 2025-09-23 17:26:08 -05:00
LICENSE Add license and copyright 2020-03-01 16:39:53 -08:00
README.md feat(ci): add kover for test coverage reporting (#3041) 2025-09-10 15:30:47 +00:00
RELEASE_PROCESS.md refactor(release)!: simplify and streamline release workflow 2025-10-03 10:44:02 -05:00
build.gradle.kts Add `:feature:node` (#3275) 2025-10-01 23:26:41 +00:00
codecov.yml ci: add coverage status configuration to codecov.yml (#3104) 2025-09-15 06:59:55 -05:00
compose_compiler_config.conf feat(build-logic): modularize build-logic & update dependencies (#3110) 2025-09-15 21:48:27 +00:00
config.properties chore(repo): Update VERSION_NAME_BASE to 2.7.2 (#3294) 2025-10-02 12:06:55 -05:00
crowdin.yml refactor(R): Move R file imports to core UI module (#3159) 2025-09-23 01:59:39 +00:00
debugging-android.md add instructions on how to capture logcat logs 2020-03-07 17:19:36 -08:00
gradle.properties chore(fdroid): Configure F-Droid build variant (#3265) 2025-09-30 21:56:16 -05:00
gradlew chore(deps): update gradle to v9.1.0 (#3143) 2025-09-19 03:22:49 +00:00
gradlew.bat chore(deps): update gradle to v9.1.0 (#3143) 2025-09-19 03:22:49 +00:00
secrets.defaults.properties refactor: maps (#2097) 2025-08-13 17:51:19 +00:00
settings.gradle.kts chore(deps): update plugin com.gradle.develocity to v4.2.1 (#3288) 2025-10-02 10:29:31 +00:00

README.md

Meshtastic Logo

Meshtastic-Android

GitHub all releases Android CI codecov Crowdin CLA assistant Fiscal Contributors Vercel

This is a tool for using Android with open-source mesh radios. For more information see our webpage: meshtastic.org. If you are looking for the the device side code, see here.

This project is currently beta testing across various providers. If you have questions or feedback please Join our discussion forum or the Discord Group . We would love to hear from you!

Get Meshtastic

The easiest, and fastest way to get the latest beta releases is to use our github releases. It is recommend to use these with Obtainum to get the latest updates.

Alternatively, these other providers are also available, but may be slower to update.

Get it on F-Droid Get it on IzzyOnDroid Get it on GitHub Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh]

The play store is the last to update of these options, but if you want to join the Play Store testing program go to this URL and opt-in to become a tester. If you encounter any problems or have questions, ask us on the discord, create an issue, or post in the forum and we'll help as we can.

Documentation

The project's documentation is generated with Dokka and hosted on GitHub Pages. It is automatically updated on every push to the main branch.

View Documentation

Generating Locally

You can generate the documentation locally to preview your changes.

  1. Run the Dokka task:
    ./gradlew :app:dokkaHtml
    
  2. View the output: The generated HTML files will be located in the app/build/dokka/html directory. You can open the index.html file in your browser to view the documentation.

Translations

You can help translate the app into your native language using Crowdin.

Building the Android App

https://meshtastic.org/docs/development/android/

Note: when building the google flavor locally you will need to supply your own Google Maps Android SDK api key MAPS_API_KEY in local.properties in order to use Google Maps. e.g.

MAPS_API_KEY=your_google_maps_api_key_here

Contributing guidelines

For detailed instructions on how to contribute, please see our CONTRIBUTING.md file. For details on our release process, see the RELEASE_PROCESS.md file.

Repository Statistics

Alt

Copyright 2025, Meshtastic LLC. GPL-3.0 license