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!
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.
|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 (saving theme does not work)||4495|
|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,
|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 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||0.5.0.4281|
|Xperia X10||running fine||??|
|ZTE Blade / Orange San Francisco||running fine||4155|
There are two ways to get a map into Navit.
- 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.
- Download a map from the Navit Map Extractor, and save it as navitmap.bin into /sdcard/navit/ on your device.
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.
- See Configuring Navit for additional settings.
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).
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
- 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 https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit navit-svn
- Download the Android NDK and SDK.
- Unzip the SDK and NDK to a directory of your choice. The following instructions assume that the SDK and NDK have been unzipped to ~/src.
- Ensure that the following paths are on your PATH environment variable:
- 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
- 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.
- Step into the build directory:
- Run CMake (ensure that you're in the build directory when you do this!):
cmake -DCMAKE_TOOLCHAIN_FILE=$SOURCE_PATH/Toolchain/arm-eabi.cmake -DCACHE_SIZE="(20*1024*1024)" -DAVOID_FLOAT=1 -DANDROID_PERMISSIONS="CAMERA" -DANDROID_API_VERSION=8 $SOURCE_PATH
- Build the apk package:
make 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
- Run ./autogen.sh from the navit dir.
cd ~/src/navit-svn/ ./autogen.sh
- 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 \ --with-android-project="android-$ANDROID_API_LVL"
- 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/android_build.sh. 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 http://sourceforge.net/projects/saxon/files/Saxon-HE/9.3/SaxonHE9-3-0-4N-setup.exe/download,
- 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):
cmake -DCMAKE_TOOLCHAIN_FILE=$SOURCE_PATH/Toolchain/arm-eabi.cmake -DCACHE_SIZE="(20*1024*1024)" -DAVOID_FLOAT=1 -DANDROID_PERMISSIONS="CAMERA" $SOURCE_PATH -G "MinGW Makefiles"
- 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