From Navit's Wiki
Revision as of 23:33, 28 March 2012 by Mizimbz (talk | contribs)
Jump to: navigation, search
First run of Navit

Navit is available on Android! Using the Internal GUI, Navit enables complete offline routing anywhere in the world using map data from OpenStreetMaps. Note that this is not an Android app in the traditional sense - it is a direct port of Navit (with a couple of extra features for Android), so isn't as integrated with Android as you may expect from other apps - bear this in mind when using it for the first time!


QR code: scan this to get Navit from Google Play

Most users use one of two routes to get Navit onto their Android devices: from Google Play, or manually install from apk's built nightly from the latest source code.

Installing from the Google Play is perhaps the most simple, and allows for automatic updating. Manually installing from an apk means that you have the very latest features built into Navit, but requires you to install and update it yourself.

The following table links through to the nightly apk's. Choose the one which best matches your device. The nightly builds are compatible with devices running Froyo (2.2.X) or later.

Compatible devices
ARM v5 ARMv5TE processors, covers most Android devices including: HTC Desire Z, Motorola Defy/Droid/Milestone, Samsung I7500 Galaxy, Samsung Galaxy S2, Samsung Galaxy Spica i5700, Samsung Galaxy S, SE Xperia X10, Xperia X8, LG Optimus Speed (P990)
ARM v4 ARMv4 processors. Devices which require this version include Neo Freerunner (running Android).

Compatible Android devices

The following tables list Android devices on which Navit has been tested. Please consider editing the table for your own device.

Device Status Tested on SVN revision
Archos 5 IT running fine 4383, 4395, 4411
Acer ICONIA TAB A500 running fine; after suspend GPS must be disabled and enabled again (market)
Geeksphone One with RCMod 4.0.0 (Gingerbread) Exits on startup (following crash of PicoTTS) unless speech output is disabled, runs fine otherwise 4319
Geeksphone Zero with RCMod 7.0.2 (Gingerbread) running fine (market)
Google/Samsung Galaxy Nexus I9250 running fine 4785 (market), 4909
Google/Samsung Nexus S running fine after brief test (market)
Huawei Ideos X3 (U8510) speech synthesis often incomplete 4696
Huawei M860 running fine 4281
HTC Desire running fine 42xx-48xx, 4904-4977
HTC Desire starts, icon in left upper corner, application stops 4879-4992
HTC Desire HD (Ace) running fine (market)
HTC Desire S running fine 4281 (market)
HTC Desire Z running fine 4281 (market), 4785 (market), 4808
HTC Incredible S running fine 4281 (market)
HTC Hero (Android 2.2, cronos) running fine (saving bookmaks made it unusable) 4118
HTC Sensation (Android 4.0.3) running fine 4785 (market)
HTC Wildfire (Android 2.2) running fine (theme changes are not saved) 4997
LG Optimus GT540 running fine 4118, 4281 (Google market)
LG Optimus P500 One running fine current market build, 4383, 4446
Motorola Defy running fine 4281 (market), 4352, 4383
Motorola Milestone 2 running fine (market)
Motorola Xoom (Android 3.2) running fine (market) → 0.5.0
Neo Freerunner (AoF Cupcake 0.2.0) cannot install, adb install returns [INSTALL_FAILED_OLDER_SDK]. Is Cupcake no longer supported? 4376
Neo Freerunner (AoF-SD Froyo) runs fine; GPS must be started manually 4548
Neo Freerunner (AoF-SD Froyo) starts, icon in left upper corner, application stops 4833
Samsung GT-I5500 (Android 2.1 update1) running fine 0.5.0-3828
Samsung Galaxy Gio GT-S5660 (Android 2.2.1 Froyo) running fine svn 4663
Samsung Galaxy Gio GT-S5660 (Android 2.2.3) running fine svn 4785
Samsung Galaxy Gio GT-S5660 (Android 2.2.6) running fine svn 4997
Samsung Galaxy S I9000 running fine svn 4183, 4229, 4510 - market 0.5.0-4281
Samsung Galaxy S2 I9100 running fine 4940
Samsung Galaxy Spica I5700 with Samdroid mod running fine 4083
Samsung Galaxy Tab P1000 running fine 4183
Xiaomi One Plus MIUI 2.3.5k running fine; GPS to start manually 0.5.0 4929
Xperia X8 running fine
Xperia X10 running fine  ??
ZTE Blade / Orange San Francisco running fine 4155

Useful information

In-app map downloading


There are two ways to get a map into Navit.

  1. Press your device's Menu button, and choose Download first map. Maps will be greater than 50MB, so it's best to turn on your wifi.
  2. Download a map from the Navit Map Extractor, and save it as navitmap.bin into /sdcard/navit/ on your device.

Advanced configuration

When Navit starts, a copy of /data/data/org.navitproject.navit/share/navit.xml matching your display resolution is extracted from the apk. If you have root permissions on your device, you can use this file as a starting point for a customized configuration. Otherwise unzip the apk file and use the xml file from the subdirectory res/raw/ which matches the display resolution (ldpi, mdpi or hdpi). You can save your configuration as /sdcard/navit/navit.xml which is then used instead of the one from the data directory.

  • If you'd like to configure the initial view of the map (it should automatically center on your position if the on-board GPS has a fix) change the <navit center=... attribute to your home coordinates.


By default Navit uses the Internal keyboard for menu items which require text input from the user, such as POI search. To use your default Android keyboard instead, just press and hold your device's Menu button until the keyboard pops up. This is actually default Android behaviour (nothing to do with Navit), and can be deployed anywhere, within any app!

Launch via Google

When you click on a place in Google Maps, you can choose to navigate to it with Navit (assuming that there isn't already a default navigation app set).

Bookmarks file

The bookmarks.txt file can be found in the following location:


You will need root access on your device to be able to access this file.

Developing for Android


For Navit

  • Ensure that your system has the correct dependencies installed to build Navit.
  • Checkout the latest copy of Android from svn. The instructions on this page assume you have checked-out a copy to ~/src/navit-svn/

cd ~/src
svn co navit-svn

For Android

  • On Ubuntu you can accomplish this using the following command (assuming the SDK and NDK have been unzipped to ~/src):

export ANDROID_NDK=~/src/android-ndk-r6b \
export ANDROID_SDK=~/src/android-sdk-linux \
export PATH=$PATH:$ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin:$ANDROID_SDK/tools


Assuming you've followed the previous steps, you're probably setup to start compiling. Using CMake is the recommended way of compiling Navit for Android. Ensure that:

  • You have a java-jdk installed on your system. On Ubuntu:
sudo apt-get install openjdk-6-jdk
  • On Ubuntu, ensure that ant1.8 is installed:
sudo apt-get install ant1.8

With cmake

  • Ensure that you have CMake 2.8 installed.
  • Create a build directory - this will be the directory into which the Android version of Navit will be built. Assume we've made one in ~/src as follows:
cd ~/src
mkdir android-build
  • Optional: Add a SOURCE_PATH environment variable to your system, pointing to the directory in which you checked out a copy of Navit. You can leave out this step, but make sure you change $SOURCE_PATH in the next steps to the actual path of the directory.
export SOURCE_PATH=~/src/navit-svn
  • Step into the build directory:
cd ~/src/android-build
  • Run CMake (ensure that you're in the build directory when you do this!):


  • Build the apk package:
make apkg
  • The previous commands have now created a package called Navit-debug.apk in the following directory:
  • Copy the package to your device (i.e. sd-card) and run it from there (through a file-manager, for example), or
  • If debug bridge (adb) is enabled run:
adb install navit/android/bin/Navit-debug.apk

With autotools

  • Run ./ from the navit dir.
cd ~/src/navit-svn/
  • Make sure you have
    • $ANDROID_NDK pointing to your ndk installation
    • $ANDROID_API_LVL set to 4
    • $ANDROID_NDK/toolchains/arm-eabi-*/prebuilt/linux-x86/bin in your $PATH
    • $ANDROID_PLATFORM set to $ANDROID_NDK/platforms/android-$ANDROID_API_LVL/arch-arm
  • Run something like
./configure \
PKG_CONFIG=arm-eabi-pkgconfig \
RANLIB=arm-eabi-ranlib \
AR=arm-eabi-ar \
CC="arm-eabi-gcc -L$ANDROID_PLATFORM/usr/lib -L. -I$ANDROID_PLATFORM/usr/include" \
CXX=arm-eabi-g++ \
--host=arm-eabi-linux_android \
--enable-avoid-float \
--enable-avoid-unaligned \
--enable-cache-size=20971520 \
--enable-svg2png-scaling=8,16,32,48,64,96 \
--enable-svg2png-scaling-nav=59 \
--enable-svg2png-scaling-flag=32 \
--with-xslts=android,plugin_menu,pedestrian_button,pedestrian \
--with-saxon=saxonb-xslt \
--enable-transformation-roll \
--enable-plugin-pedestrian \
--with-android-permissions=CAMERA \
  • Run make
  • cd navit
  • Run make apkg

The result is in android/bin as Navit-debug.apk

Even easier is it to use this hopefully foolproof build script. Since r4507, it is part of navit. From the navit-main-directory, call it with ./contrib/ Good luck!

With cmake on Windows

  • install CMake 2.8 if you haven't already, add folder with exe to PATH
  • install MinGW or use MinGW included in the git windows folder (e.g. C:\msysgit\mingw\), add folder with exe to PATH
  • install saxon .NET version from,
  • rename transform.exe to saxon.exe, add folder with exe to PATH
  • create a build dir (i.e. "mkdir android-build")
  • run from build dir ( replace $SOURCE_PATH):


  • run MinGW32-make
  • run MinGW32-make apkg
  • install Navit-debug.apk (in <build path>/navit/android/bin) to your device
    • copy navit/android/bin/Navit-debug.apk to your device (i.e. sd-card) and run it from there or
    • if debug bridge (adb) is enabled run adb install navit/android/bin/Navit-debug.apk