To compile code, the following is necessary
- Recent version of Android command line tools
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.
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
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.