blob: af28fd9eef583778a4dc194d81af939a85401e6a [file] [log] [blame] [view]
Alexander Afanasyev087c7c12015-02-02 00:21:21 -08001NFD on Android
2==============
3
Alexander Afanasyev808ce312016-01-23 18:11:59 -08004[![Build Status](https://travis-ci.org/named-data-mobile/NFD-android.svg?branch=master)](https://travis-ci.org/named-data-mobile/NFD-android)
Alexander Afanasyev087c7c12015-02-02 00:21:21 -08005
6## Prerequisites
7
8To compile code, the following is necessary
9
Alexander Afanasyevda066292017-11-12 23:02:31 -050010- Recent version of [Android SDK](http://developer.android.com/sdk/index.html)
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080011
Alexander Afanasyev652fb8e2017-07-07 10:46:09 -070012Example script for Ubuntu 16.04 to get all dependencies, download SDK and NDK:
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080013
Alexander Afanasyev652fb8e2017-07-07 10:46:09 -070014 sudo apt -q update
15 sudo apt -qy upgrade
Alexander Afanasyevda066292017-11-12 23:02:31 -050016 sudo apt-get install -y build-essential git openjdk-8-jdk unzip ruby ruby-rugged
Alexander Afanasyeva4091562016-02-23 11:51:31 -080017 sudo apt-get install -y lib32stdc++6 lib32z1 lib32z1-dev
Alexander Afanasyevf3812562016-01-21 16:28:33 -080018
Alexander Afanasyevda066292017-11-12 23:02:31 -050019 mkdir android-sdk-linux
20 cd android-sdk-linux
21 wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
22 unzip sdk-tools-linux-3859397.zip
23 rm sdk-tools-linux-3859397.zip
Alexander Afanasyevf3812562016-01-21 16:28:33 -080024
Alexander Afanasyevda066292017-11-12 23:02:31 -050025 export ANDROID_HOME=`pwd`
26 export PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080027
Alexander Afanasyevda066292017-11-12 23:02:31 -050028 echo "y" | sdkmanager "platform-tools"
29 sdkmanager "platforms;android-26" "build-tools;26.0.3" "ndk-bundle"
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080030
Alexander Afanasyevda066292017-11-12 23:02:31 -050031 cd ndk-bundle
32 git clone https://github.com/cawka/android-crew-staging.git crew.dir
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080033
Alexander Afanasyevda066292017-11-12 23:02:31 -050034 CREW_OWNER=cawka crew.dir/crew install target/sqlite:3.18.0 target/openssl:1.0.2m target/boost:1.65.1
Alexander Afanasyeva8d404b2016-11-05 10:07:08 -060035
Alexander Afanasyevda066292017-11-12 23:02:31 -050036 cd ..
Alexander Afanasyeva8d404b2016-11-05 10:07:08 -060037
Alexander Afanasyevda066292017-11-12 23:02:31 -050038The above `crew` scripts will install pre-compiled versions of sqlite, openssl, and boost libraries.
39To compile them instead, replace `install` with `build`.
Alexander Afanasyeva8d404b2016-11-05 10:07:08 -060040
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080041## Building
42
43
44 git clone --recursive http://gerrit.named-data.net/NFD-android
45 echo sdk.dir=`pwd`/android-sdk-linux > NFD-android/local.properties
Alexander Afanasyevda066292017-11-12 23:02:31 -050046 echo ndk.dir=`pwd`/android-sdk-linux/ndk-bundle >> NFD-android/local.properties
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080047 cd NFD-android
48
Alexander Afanasyev7395caf2016-01-31 10:33:28 -080049 ./gradlew assembleRelease
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080050
51
Alexander Afanasyevda066292017-11-12 23:02:31 -050052Note that you can limit architectures being built using `NDK_BUILD_ABI` variable. For example,
53
54 export NDK_BUILD_ABI=armeabi-v7a,x86_64
55
56will limit build to `armeabi-v7a` and `x86_64`.
57
58By default, the build script will try to parallelize build to the number of CPUs. This can be
59overridden using `NDK_BUILD_PARALLEL` variable.
60
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080061## Setting up environment using Vagrant
62
63The development setup can be set up with [Vagrant](https://www.vagrantup.com/) and scripts provided
64in `.vagrant/` folder. After vagrant command-line is installed, the following will create VM
65environment and fetch all necessary dependencies:
66
67 cd .vagrant
68 vagrant up
Alexander Afanasyev81e7d872015-04-19 19:38:26 -070069 vagrant ssh
Alexander Afanasyev087c7c12015-02-02 00:21:21 -080070
71Refer to vagrant documentation for more information.