Difference between revisions of "Android development"

From Navit's Wiki
Jump to: navigation, search
(With autotools)
(Compiling: With gradle)
Line 88: Line 88:
 
** if debug bridge (adb) is enabled run adb install navit/android/bin/Navit-debug.apk
 
** if debug bridge (adb) is enabled run adb install navit/android/bin/Navit-debug.apk
  
 +
==== With gradle ====
 +
 +
'''Note: this section is still under construction and may not yet be accurate!'''
 +
 +
These setup instructions are for a machine that does not have Android Studio installed. If you have Android Studio, some of them may not be necessary (or can be accomplished in a different way).
 +
 +
* Make sure you have the following Android SDK components installed (if not, install them using Android SDK Manager):
 +
** Android SDK Platform-tools, version 25.0.3 or later
 +
** Android SDK Build-tools, version 27.0.3
 +
* Make sure you have the <code>ANDROID_HOME</code> environment variable set and pointing to your Android SDK dir. On Linux, this can be accomplished by adding a line like the following at the bottom of your ''.bashrc'' file in your home dir:
 +
 +
: <code>export ANDROID_HOME="$HOME/bin/android-sdk-linux_86"</code>
 +
 +
: You need to enter the command in your current shell as well in order for it to take effect there as well.
 +
 +
* Make sure you have the <code>ANDROID_NDK_HOME</code> environment variable set and pointing to your Android NDK dir. (If not, add it as described above.)
 +
* On Ubuntu 18.04 or later (or if your default JRE is Java 9 or later), edit ''$ANDROID_HOME/tools/bin/sdkmanager''. Change line #31 to read:
 +
 +
: <code>DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'</code>
 +
 +
* Now run <code>$ANDROID_HOME/tools/bin/sdkmanager "cmake;3.6.4111459"</code> and accept the license agreement. (If the package is not found, run <code>$ANDROID_HOME/tools/bin/sdkmanager --list | grep cmake</code> and install the cmake version reported there.)
 +
* Make sure you have NDK version 12 or later (if you don’t, install it with <code>$ANDROID_HOME/tools/bin/sdkmanager "ndk-bundle"</code>.)
 +
* Change to the Navit source dir and run <code>./gradlew build</code>.
  
 
== Testing an alternative build ==
 
== Testing an alternative build ==

Revision as of 19:08, 20 July 2018

Developing for Android

Pre-requisites

For Navit

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

cd ~/src
svn co  svn://svn.code.sf.net/p/navit/code/trunk/navit navit-svn

For Android

path-to-sdk/tools
path-to-sdk/platform-tools
path-to-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin
  • 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-r8
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:$ANDROID_SDK/platform-tools

Double-check the version numbers in the paths and adapt if required. If you are running a 64-bit version of the NDK, replace linux-x86 with linux-x86_64.

  • Prepare Android SDK:
    • run android in command line - this will show a GUI for preparing Android SDK
    • select Android 2.2 (API 8) and click 'Install N packages...' button - this will download SDK packages that support API 8

Compiling

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

When multiple version of java are installed

update-java-alternatives -s java-1.6.0-openjdk-i386
  • On Ubuntu, ensure that ant1.8 is installed:
sudo apt-get install ant1.8
  • Make sure that you have saxonb-xslt installed:
sudo apt-get install libsaxonb-java

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!):

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 -DXSLT_PROCESSOR=/usr/bin/saxonb-xslt $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:
~/src/android-build/navit/android/bin
  • 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
  • Later, to reinstall already installed Navit app run:
adb install -r navit/android/bin/Navit-debug.apk

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

With gradle

Note: this section is still under construction and may not yet be accurate!

These setup instructions are for a machine that does not have Android Studio installed. If you have Android Studio, some of them may not be necessary (or can be accomplished in a different way).

  • Make sure you have the following Android SDK components installed (if not, install them using Android SDK Manager):
    • Android SDK Platform-tools, version 25.0.3 or later
    • Android SDK Build-tools, version 27.0.3
  • Make sure you have the ANDROID_HOME environment variable set and pointing to your Android SDK dir. On Linux, this can be accomplished by adding a line like the following at the bottom of your .bashrc file in your home dir:
export ANDROID_HOME="$HOME/bin/android-sdk-linux_86"
You need to enter the command in your current shell as well in order for it to take effect there as well.
  • Make sure you have the ANDROID_NDK_HOME environment variable set and pointing to your Android NDK dir. (If not, add it as described above.)
  • On Ubuntu 18.04 or later (or if your default JRE is Java 9 or later), edit $ANDROID_HOME/tools/bin/sdkmanager. Change line #31 to read:
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
  • Now run $ANDROID_HOME/tools/bin/sdkmanager "cmake;3.6.4111459" and accept the license agreement. (If the package is not found, run $ANDROID_HOME/tools/bin/sdkmanager --list | grep cmake and install the cmake version reported there.)
  • Make sure you have NDK version 12 or later (if you don’t, install it with $ANDROID_HOME/tools/bin/sdkmanager "ndk-bundle".)
  • Change to the Navit source dir and run ./gradlew build.

Testing an alternative build

If you want to try an alternative build (e.g. Jan's builds with alternative routing) you can do it by :

  • enable unsigned apk installation ( example guide )
  • installing an alternative apk ( e.g. an APK from CircleCI )
  • you will probably need an alternative map to match the application requirements ( such as this one )