Skip to content
Loren M. Lang edited this page Aug 30, 2020 · 9 revisions

Developing for APRSdroid

APRSdroid is written in Scala. To compile it, you will need the Scala compiler and runtime. This should be downloaded automatically as part of the build process. You are also required to install ProGuard to reduce the binary size.

Required tools

Android SDK: You will need the Android SDK which can be downloaded and installed from Android Studio or you can just download the Android SDK command-line tools. The licenses for the Android APIs and Emulator images need to be accepted before running the build if they have not been installed prior. Also, make sure ANDROID_SDK_ROOT is set to the correct location to the Android SDK in your environment.

ProGuard: get the current version from SourceForge and copy the proguard.jar from the archive to aprsdroid/tools/.

Maps Support

APRSdroid is using the Google Maps API for Android or alternatively the MapsForge library to display Maps (mapsforge branch). The following steps are only needed for the Google Maps version.

You need to install the Maps component in your SDK (From “Available Packages”, install “Google APIs by Google Inc., Android API 28”), have an Emulator built with Maps support (“Google Inc.:Google APIs:28” or later is the target).

You will also need a Maps API key which you can place in the build.gradle file:

resValue "string", "google_maps_key", "0N1kQgxBL5..."

Without a correct API key, the map will only display grey squares. You will also need a different API key for a production build.

Compilation

Compilation is performed using the Gradle tool. It should be possible to integrate the project into Android Studio or other frameworks – feel free to document.

You will probably need to create the Android specific files before compilation.

APRSdroid currently is using a quick&dirty hacked together integration of PacketDroid’s multimon engine.

Build environment preparation:

If using the command-line tools only, they can be installed on Linux as such:

export ANDROID_SDK_ROOT="$(pwd)/android"
mkdir -p "${ANDROID_SDK_ROOT}"
wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
unzip commandlinetools-linux-6609375_latest.zip -d android/cmdline-tools
export PATH="${ANDROID_SDK_ROOT}/cmdline-tools/tools/bin:${PATH}"

After installing them, the licenses can be accepted by running these commands:

mkdir "${ANDROID_SDK_ROOT}/licenses"
echo 24333f8a63b6825ea9c5514f83c2829b004d1fee > "${ANDROID_SDK_ROOT}/licenses/android-sdk-license"
echo 84831b9409646a918e30573bab4c9c91346d8abd > "${ANDROID_SDK_ROOT}/licenses/android-sdk-preview-license"

Compilation:

./gradlew build

The project is targeted at API version Google Inc.:Google APIs:28, please double-check your project.properties file.

Translation

Translation is handled via Launchpad. There is a shell script in aprsdroid called xml2po.sh which relies on the xml2po tool to convert the values.xml to a POT file and the PO files from LaunchPad to xml files.