/NFD-android

Android port of Named Data Networking Forwarding Daemon

Primary LanguageJavaOtherNOASSERTION

NFD on Android

Build Status

Prerequisites

To compile code, the following is necessary

Example script for Ubuntu 18.04 to get all dependencies, download SDK and NDK:

sudo apt -q update
sudo apt -qy upgrade
sudo apt-get install -y build-essential git openjdk-8-jdk unzip ruby ruby-rugged
sudo apt-get install -y lib32stdc++6 lib32z1 lib32z1-dev

mkdir android
cd android
mkdir -p cmdline-tools
mv tools cmdline-tools/latest
wget https://dl.google.com/android/repository/commandlinetools-linux-6514223_latest.zip
unzip commandlinetools-linux-6514223_latest.zip
rm commandlinetools-linux-6514223_latest.zip

export ANDROID_HOME=`pwd`
export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools

echo "y" | sdkmanager "platform-tools"
sdkmanager "platforms;android-29" "ndk-bundle"

cd ndk-bundle
git clone https://github.com/named-data-mobile/android-crew-staging crew.dir

CREW_OWNER=named-data-mobile crew.dir/crew install target/sqlite target/openssl target/boost
CREW_OWNER=named-data-mobile crew.dir/crew install target/ndn_cxx target/nfd

cd ..

The above crew scripts will install pre-compiled versions of sqlite, openssl, and boost libraries. For more details about the crew tool, refer to README-dev.md.

Building

git clone --recursive http://gerrit.named-data.net/NFD-android
echo sdk.dir=`pwd`/android-sdk-linux > NFD-android/local.properties
echo ndk.dir=`pwd`/android-sdk-linux/ndk-bundle >> NFD-android/local.properties
cd NFD-android

# Build in release mode (you will need to have proper signing keys configured, see README-dev.md)
./gradlew assembleRelease

# Build in debug mode
./gradlew assembleDebug

You can also automatically install debug/release NDN-android to the connected phone

# build and install release version (will require signing key configuration)
./gradlew installRelease

# build and install debug version
./gradlew installDebug

Note that you can limit architectures being built using NDK_BUILD_ABI variable. For example,

export NDK_BUILD_ABI=armeabi-v7a,x86_64

will limit build to armeabi-v7a and x86_64.

By default, the build script will try to parallelize build to the number of CPUs. This can be overridden using NDK_BUILD_PARALLEL variable.

To upload .apk files to Google Play (need configuration of keys and Google Play credentials, see README-dev.md):

./gradlew publishRelease

Setting up environment using Vagrant

The development setup can be set up with Vagrant and scripts provided in .vagrant/ folder. After vagrant command-line is installed, the following will create VM environment and fetch all necessary dependencies:

cd .vagrant
vagrant up
vagrant ssh

Refer to vagrant documentation for more information.