An offline-friendly outdoor GPS and hiking companion for Android.
Record tracks, explore multiple map layers, download areas for offline use, import and export routes, and keep your outdoor data on your own device.
Important
GitHub is the only official distribution source for GPS Adventure. The official APK is named gps_adventure_v1.0.0.apk and is available only from this repository's Releases page. Copies downloaded from other websites are unofficial and may have been modified.
GPS Adventure is a Flutter-based Android application designed for hiking, trekking, cycling, exploration, and other outdoor activities. It combines live GPS information, track recording, route management, offline maps, elevation data, points of interest, and useful activity statistics in one app.
No account is required. Recorded tracks, imported routes, downloaded map regions, waypoints, and settings are stored locally on the device. Internet access is used when downloading map tiles or requesting optional online map, routing, elevation, and points-of-interest data.
The files below are placeholders. Replace them with your real screenshots while keeping the same filenames.
Map & GPS![]() |
Track Recording![]() |
Offline Maps![]() |
Route Planning![]() |
Route Details![]() |
Settings![]() |
- Live GPS position with accuracy, altitude, heading, and satellite information.
- Multiple selectable map layers, including outdoor, road, cycling, and hybrid map views.
- Map rotation, compass, recenter, zoom controls, scale bar, and full-screen mode.
- Automatic restoration of the last map position and zoom level.
- Disk-based tile caching for faster loading and improved use with weak connectivity.
- Downloadable offline map regions with selectable layers and quality levels.
- Nature and tourism points of interest loaded from OpenStreetMap data.
- Save waypoints directly from the map.
- Draw routes manually, with trail-following routing when an internet connection is available.
- Record GPS tracks with live distance, duration, steps, and other statistics.
- Pause and resume recording without connecting separate track segments.
- Continue tracking in the background while the screen is off.
- Optional keep-screen-awake mode during recording.
- GPS accuracy filtering to reduce unreliable track points.
- Track summaries with distance, duration, speed, ascent, descent, and elevation range.
- Elevation profile charts.
- Optional terrain-based elevation correction after recording.
- Step counting and GPS-calibrated average step length.
- Estimated calorie expenditure using body weight and carried load settings.
- Optional accelerometer, gyroscope, magnetometer, and barometer logging with CSV export.
- Import
GPX,KML, andKMZroute files. - Export recorded tracks as
GPXfiles through the Android share sheet. - Show or hide individual tracks, routes, and route points on the map.
- Change track and route colors.
- Preserve imported filenames for easier route identification.
- Store all app-created files inside the application's private storage area.
- English and Bulgarian interface languages.
- Configurable default map layer, GPS behavior, recording behavior, map controls, colors, and appearance.
- Settings are applied immediately.
- Portrait-oriented interface designed for practical one-handed outdoor use.
- Open the repository's Releases page.
- Open release v1.0.0.
- Download
gps_adventure_v1.0.0.apk. - On your Android device, allow installation from your browser or file manager when prompted.
- Open the APK and complete the installation.
- Grant location permission so the app can display your position and record tracks.
- For reliable screen-off recording, allow background location access and exclude the app from aggressive battery optimization when necessary.
Android may show a warning because the APK is installed outside Google Play. Verify that the filename is exactly gps_adventure_v1.0.0.apk and that it was downloaded from this GitHub repository before installing it.
GPS Adventure may request the following Android permissions:
| Permission | Purpose |
|---|---|
| Precise and approximate location | Show the current position and record tracks. |
| Background location | Continue recording when the app is in the background or the screen is off. |
| Notifications | Display the foreground tracking notification required by Android. |
| Internet and network state | Download map tiles and use optional online services. |
| Foreground service | Keep active GPS recording running reliably. |
| Wake lock | Keep the device CPU active during background recording. |
GPS Adventure does not require an account. Tracks, routes, waypoints, settings, cached tiles, offline map regions, and exported files are stored locally in the app's private storage.
The app can contact third-party services to provide online functionality, including map tiles, walking-route calculation, elevation correction, and OpenStreetMap points of interest. Avoid using those online features when you require completely offline operation.
Uninstalling the app may remove its private local data. Export important tracks before uninstalling or clearing app storage.
- Flutter and Dart
flutter_mapfor tile-based mapsgeolocatorfor GPS location and background trackingflutter_compassfor device heading- SQLite through
sqflitefor local storage - GPX, KML, and KMZ import support
- OpenStreetMap-based routing and points of interest
- A recent stable Flutter SDK
- Android Studio or the Android SDK command-line tools
- JDK 17
- An Android device or emulator
A physical Android device is recommended for testing GPS, compass, sensors, background tracking, and offline maps.
git clone https://github.com/vislupus/gps-adventure.git
cd gps-adventure
flutter pub get
flutter runReplace vislupus/gps-adventure with the final GitHub repository path.
flutter pub get
flutter build apk --releaseThe generated APK will normally be located at:
build/app/outputs/flutter-apk/app-release.apk
Rename it before attaching it to the GitHub release:
mv build/app/outputs/flutter-apk/app-release.apk gps_adventure_v1.0.0.apkOn Windows PowerShell:
Rename-Item build/app/outputs/flutter-apk/app-release.apk gps_adventure_v1.0.0.apkUse the same private release keystore for every public version. This allows users to install future updates over the existing app.
- Copy
android/key.properties.exampletoandroid/key.properties. - Enter the real keystore path, alias, and passwords.
- Build the release APK.
- Never commit
android/key.properties, the keystore, or its passwords to GitHub. - Keep a secure backup of the keystore. Losing it prevents compatible updates signed with the same identity.
- Create a Git tag named
v1.0.0. - Create a GitHub Release using the same tag.
- Attach the APK with the exact filename
gps_adventure_v1.0.0.apk. - Publish the release.
- Test the download button at the top of this README.
lib/
├── config/ App configuration, strings, map layers, and assets
├── models/ Tracks, routes, points, waypoints, and offline regions
├── screens/ Map, tracks, saved routes, offline maps, and settings
├── services/ GPS, recording, database, GPX, routing, elevation, and maps
├── state/ Application state and persistent settings
└── widgets/ Map controls, status indicators, statistics, and charts
assets/ App icons and bundled images
android/ Android configuration and native integration
docs/screenshots/ README screenshot files
- Map availability depends on the selected map provider and its service status.
- Some online layers or services may have usage policies, rate limits, or regional restrictions.
- Background tracking can increase battery consumption.
- Battery-saving systems from some Android manufacturers may stop background tracking unless the app is excluded from optimization.
- GPS, elevation, step count, and calorie values are estimates and should not be treated as professional surveying, medical, or emergency-navigation data.
Use the repository's Issues page to report bugs or suggest improvements. When reporting a problem, include the Android version, device model, app version, and clear steps to reproduce it.





