Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 1 | NFD on Android |
| 2 | ============== |
| 3 | |
Alexander Afanasyev | 808ce31 | 2016-01-23 18:11:59 -0800 | [diff] [blame] | 4 | [](https://travis-ci.org/named-data-mobile/NFD-android) |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 5 | |
| 6 | ## Prerequisites |
| 7 | |
| 8 | To compile code, the following is necessary |
| 9 | |
Alexander Afanasyev | a409156 | 2016-02-23 11:51:31 -0800 | [diff] [blame] | 10 | - Recent version of [Android SDK](http://developer.android.com/sdk/index.html), android-23 SDK |
| 11 | and 23.0.2 build tools (for build), android-19 SDK (for compatibility), and several other SDK |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 12 | components |
| 13 | - [CrystalX Android NDK](https://www.crystax.net/en/download) version 10.3.1 |
Alexander Afanasyev | a8d404b | 2016-11-05 10:07:08 -0600 | [diff] [blame] | 14 | - Prebuilt version of OpenSSL library |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 15 | |
Alexander Afanasyev | 652fb8e | 2017-07-07 10:46:09 -0700 | [diff] [blame] | 16 | Example script for Ubuntu 16.04 to get all dependencies, download SDK and NDK: |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 17 | |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 18 | CRYSTAX_NDK_VERSION=10.3.1 |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 19 | SDK_VERSION=24.4.1 |
Lei Pi | 381cb28 | 2017-02-10 22:13:47 -0600 | [diff] [blame] | 20 | OPENSSL_VERSION=1.0.2h |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 21 | |
Alexander Afanasyev | a409156 | 2016-02-23 11:51:31 -0800 | [diff] [blame] | 22 | BUILD_TOOLS_VERSION=23.0.2 |
| 23 | COMPILE_SDK_VERSION=23 |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 24 | |
Alexander Afanasyev | 652fb8e | 2017-07-07 10:46:09 -0700 | [diff] [blame] | 25 | sudo apt -q update |
| 26 | sudo apt -qy upgrade |
| 27 | sudo apt-get install -y build-essential git openjdk-8-jdk unzip |
Alexander Afanasyev | a409156 | 2016-02-23 11:51:31 -0800 | [diff] [blame] | 28 | sudo apt-get install -y lib32stdc++6 lib32z1 lib32z1-dev |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 29 | |
| 30 | wget https://www.crystax.net/download/crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz |
| 31 | tar xf crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz |
| 32 | rm crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz |
| 33 | |
| 34 | wget http://dl.google.com/android/android-sdk_r$SDK_VERSION-linux.tgz |
| 35 | tar zxf android-sdk_r$SDK_VERSION-linux.tgz |
| 36 | rm android-sdk_r$SDK_VERSION-linux.tgz |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 37 | |
| 38 | export ANDROID_HOME=`pwd`/android-sdk-linux |
| 39 | export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools |
| 40 | |
Haitao Zhang | a2a340f | 2017-03-19 16:45:55 -0700 | [diff] [blame] | 41 | echo "y" | android update sdk --filter platform-tools,build-tools-$BUILD_TOOLS_VERSION,android-$COMPILE_SDK_VERSION,extra-android-m2repository,extra-google-m2repository --no-ui --all --force |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 42 | echo "y" | android update sdk --filter "android-19" --no-ui --all --force |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 43 | |
Alexander Afanasyev | a8d404b | 2016-11-05 10:07:08 -0600 | [diff] [blame] | 44 | To create prebuilt OpenSSL libraries: |
| 45 | |
| 46 | git clone https://github.com/crystax/android-vendor-openssl.git |
| 47 | cd crystax-ndk-$CRYSTAX_NDK_VERSION |
| 48 | ./build/tools/build-target-openssl.sh ../android-vendor-openssl/ |
Lei Pi | 381cb28 | 2017-02-10 22:13:47 -0600 | [diff] [blame] | 49 | cp sources/openssl/1.0.1p/Android.mk -o sources/openssl/$OPENSSL_VERSION/Android.mk |
Alexander Afanasyev | a8d404b | 2016-11-05 10:07:08 -0600 | [diff] [blame] | 50 | |
| 51 | Alternatively, you can use precompiled versions (currently, available for CrystaX NDK 10.3.1 only): |
| 52 | |
| 53 | cd crystax-ndk-10.3.1/sources |
| 54 | curl -L -o openssl.tar.gz https://github.com/named-data-mobile/crystax-prebuilt-openssl/archive/crystax-10.3.1.tar.gz |
| 55 | tar zx --strip-components 1 -C openssl -f openssl.tar.gz |
| 56 | rm openssl.tar.gz |
| 57 | |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 58 | ## Building |
| 59 | |
| 60 | |
| 61 | git clone --recursive http://gerrit.named-data.net/NFD-android |
| 62 | echo sdk.dir=`pwd`/android-sdk-linux > NFD-android/local.properties |
Alexander Afanasyev | f381256 | 2016-01-21 16:28:33 -0800 | [diff] [blame] | 63 | echo ndk.dir=`pwd`/crystax-ndk-10.3.1 >> NFD-android/local.properties |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 64 | cd NFD-android |
| 65 | |
Alexander Afanasyev | 7395caf | 2016-01-31 10:33:28 -0800 | [diff] [blame] | 66 | ./gradlew assembleRelease |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 67 | |
| 68 | |
| 69 | ## Setting up environment using Vagrant |
| 70 | |
| 71 | The development setup can be set up with [Vagrant](https://www.vagrantup.com/) and scripts provided |
| 72 | in `.vagrant/` folder. After vagrant command-line is installed, the following will create VM |
| 73 | environment and fetch all necessary dependencies: |
| 74 | |
| 75 | cd .vagrant |
| 76 | vagrant up |
Alexander Afanasyev | 81e7d87 | 2015-04-19 19:38:26 -0700 | [diff] [blame] | 77 | vagrant ssh |
Alexander Afanasyev | 087c7c1 | 2015-02-02 00:21:21 -0800 | [diff] [blame] | 78 | |
| 79 | Refer to vagrant documentation for more information. |