diff --git a/.gitmodules b/.gitmodules
index 96a2d18..62d1207 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,8 +4,9 @@
     branch = android
 [submodule "app/src/main/jni/ndn-cxx"]
     path = app/src/main/jni/ndn-cxx
-    url = https://github.com/cawka/ndn-cxx
+    url = https://github.com/named-data-mobile/ndn-cxx
     branch = 0.5.0-android-hotfix
 [submodule "app/src/main/jni/NFD"]
     path = app/src/main/jni/NFD
-    url = https://github.com/named-data/NFD
+    url = https://github.com/named-data-mobile/NFD
+    branch = master
diff --git a/.jenkins b/.jenkins
new file mode 100755
index 0000000..674d751
--- /dev/null
+++ b/.jenkins
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+set -e
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+for file in "$DIR"/.jenkins.d/*; do
+    [[ -f $file && -x $file ]] || continue
+    echo "Run: $file"
+    "$file"
+done
diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh
index 056626b..1673813 100755
--- a/.jenkins.d/00-deps.sh
+++ b/.jenkins.d/00-deps.sh
@@ -2,9 +2,5 @@
 set -e
 set -x
 
-echo -en 'travis_fold:start:deps\r'
-
-sudo apt-get install -y build-essential git openjdk-7-jdk unzip
+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
-
-echo -en 'travis_fold:end:deps\r'
diff --git a/.jenkins.d/10-get-ndk.sh b/.jenkins.d/10-get-ndk.sh
deleted file mode 100755
index c1cfe24..0000000
--- a/.jenkins.d/10-get-ndk.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env bash
-set -e
-set -x
-
-CRYSTAX_NDK_VERSION=10.3.1
-
-URL=https://www.crystax.net/download/
-NDK=crystax-ndk-$CRYSTAX_NDK_VERSION
-
-NDK_FILE="$NDK-linux-x86_64.tar.xz"
-
-if [ ! -f downloads/$NDK_FILE ]; then
-    mkdir downloads || true
-    cd downloads
-    wget --no-check-certificate $URL$NDK_FILE
-    cd ..
-fi
-
-if [ ! -d $NDK ]; then
-    export XZ_DEFAULTS=--memlimit=300MiB
-    echo -en 'travis_fold:start:NDK\r'
-
-    # To save space
-    EXCLUDES="toolchains/*-clang3.6 toolchains/*-3.6 \
-            toolchains/*-clang3.7 \
-            toolchains/*-3.7 \
-            toolchains/*-4.9 \
-            sources/cxx-stl/gabi++ \
-            sources/cxx-stl/llvm-libc++ \
-            sources/cxx-stl/llvm-libc++abi \
-            sources/cxx-stl/stlport \
-            sources/cxx-stl/llvm-libc++ \
-            sources/cxx-stl/gnu-libstdc++/4.9 \
-            sources/icu \
-            sources/boost/*/libs/*/gnu-4.9 \
-            sources/boost/*/libs/*/llvm-3.6 \
-            sources/boost/*/libs/*/llvm-3.7 \
-            sources/objc \
-            sources/python"
-
-    pv -f downloads/$NDK_FILE | tar xJf - $(for i in $EXCLUDES; do echo "--exclude $i"; done | xargs)
-    echo -en 'travis_fold:end:NDK\r'
-fi
-
-echo ndk.dir=`pwd`/$NDK >> local.properties
-
-cd crystax-ndk-$CRYSTAX_NDK_VERSION/sources
-curl -L -o openssl.tar.gz https://github.com/named-data-mobile/crystax-prebuilt-openssl/archive/crystax-$CRYSTAX_NDK_VERSION.tar.gz
-tar zx --strip-components 1 -C openssl -f openssl.tar.gz
-rm openssl.tar.gz
-cd ../..
diff --git a/.jenkins.d/10-get-sdk.sh b/.jenkins.d/10-get-sdk.sh
index 87418ba..2780c32 100755
--- a/.jenkins.d/10-get-sdk.sh
+++ b/.jenkins.d/10-get-sdk.sh
@@ -2,22 +2,20 @@
 set -e
 set -x
 
-SDK_VERSION=24.4.1
-BUILD_TOOLS_VERSION=26.0.0
-COMPILE_SDK_VERSION=26
-
 SDK=android-sdk-linux
 
-export ANDROID_HOME=`pwd`/$SDK
-export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
+mkdir -p $SDK
+cd $SDK
+wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
+unzip sdk-tools-linux-3859397.zip
+rm sdk-tools-linux-3859397.zip
 
-if [ ! -d $SDK ]; then
-    wget -nv http://dl.google.com/android/android-sdk_r$SDK_VERSION-linux.tgz
-    tar zxf android-sdk_r$SDK_VERSION-linux.tgz
-    rm android-sdk_r$SDK_VERSION-linux.tgz
+export ANDROID_HOME=`pwd`
+export PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
 
-    echo "y" | android update sdk --filter platform-tools,build-tools-$BUILD_TOOLS_VERSION,android-$COMPILE_SDK_VERSION,extra-android-support,extra-android-m2repository,extra-google-m2repository --no-ui --all --force
-    echo "y" | android update sdk --filter "android-19" --no-ui --all --force
-fi
+echo "y" | sdkmanager "platform-tools"
+sdkmanager "platforms;android-26" "build-tools;26.0.3"
+
+cd ..
 
 echo sdk.dir=`pwd`/$SDK >> local.properties
diff --git a/.jenkins.d/20-get-ndk.sh b/.jenkins.d/20-get-ndk.sh
new file mode 100755
index 0000000..6548c94
--- /dev/null
+++ b/.jenkins.d/20-get-ndk.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+set -e
+set -x
+
+android-sdk-linux/tools/bin/sdkmanager "ndk-bundle"
+git clone https://github.com/cawka/android-crew-staging.git android-sdk-linux/ndk-bundle/crew.dir
+
+if [[ ! -z $GEM_PATH ]]; then
+    # Hack for unset GEM_PATH in crew tool
+    ORIG_RUBY=`which ruby`
+    echo '#!/usr/bin/env bash' > ruby
+    echo "export GEM_HOME=$GEM_HOME" >> ruby
+    echo "export GEM_PATH=$GEM_PATH" >> ruby
+    echo "exec $ORIG_RUBY \$@" >> ruby
+    chmod 755 ruby
+
+    export CREW_TOOLS_DIR=`pwd`
+    export PATH=`pwd`:$PATH
+fi
+
+export CREW_OWNER=cawka
+# export CREW_DOWNLOAD_BASE=http://irl.cs.ucla.edu/~cawka/android-crew-staging/staging/
+
+android-sdk-linux/ndk-bundle/crew.dir/crew install target/sqlite:3.18.0 target/openssl:1.0.2m target/boost:1.65.1
+
+echo ndk.dir=`pwd`/android-sdk-linux/ndk-bundle >> local.properties
diff --git a/.travis.yml b/.travis.yml
index 08520ae..bfc648b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 sudo: false
 language: generic
 jdk:
-  - openjdk7
+  - openjdk8
 notifications:
   email:
     on_success: always
@@ -10,12 +10,10 @@
   global:
     - TERM=dumb
     - GRADLE_OPTS="-Xmx768m -Xms256m -Xss1m"
-    - NDK_BUILD_PARALLEL=1
+    - NDK_BUILD_PARALLEL=2
   matrix:
     - NDK_BUILD_ABI=arm64-v8a
-    - NDK_BUILD_ABI=armeabi
     - NDK_BUILD_ABI=armeabi-v7a
-    - NDK_BUILD_ABI=mips
     - NDK_BUILD_ABI=x86
     - NDK_BUILD_ABI=x86_64
 addons:
@@ -28,16 +26,9 @@
      - wget
      - unzip
 before_install:
-  - wget https://www.ivarch.com/programs/sources/pv-1.6.0.tar.bz2
-  - tar xjf pv-1.6.0.tar.bz2
-  - cd pv-1.6.0
-  - ./configure --prefix=$HOME --disable-nls
-  - make install
-  - cd ..
-  - rm pv-1.6.0.tar.bz2
-  - export PATH=$HOME/bin:$PATH
   - travis_retry .jenkins.d/10-get-sdk.sh
-  - travis_retry .jenkins.d/10-get-ndk.sh
+  - gem install rugged
+  - travis_retry .jenkins.d/20-get-ndk.sh
 script:
   - git submodule update --init --recursive
   - ./gradlew assembleDebug
diff --git a/.vagrant/Vagrantfile b/.vagrant/Vagrantfile
index a5182c9..0423794 100644
--- a/.vagrant/Vagrantfile
+++ b/.vagrant/Vagrantfile
@@ -4,43 +4,40 @@
 VAGRANTFILE_API_VERSION = "2"
 
 $script = <<SCRIPT
+    export DEBIAN_FRONTEND=noninteractive
 
-CRYSTAX_NDK_VERSION=10.3.1
+    sudo apt-mark hold grub-pc
+    sudo apt -q -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" update
+    sudo apt -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
+    sudo apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" build-essential git openjdk-8-jdk unzip ruby ruby-rugged
+    sudo apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" lib32stdc++6 lib32z1 lib32z1-dev
 
-SDK_VERSION=24.4.1
-BUILD_TOOLS_VERSION=23.0.2
-COMPILE_SDK_VERSION=23
+    mkdir android-sdk-linux
+    cd android-sdk-linux
+    wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
+    unzip sdk-tools-linux-3859397.zip
+    rm sdk-tools-linux-3859397.zip
 
-sudo apt -q update
-sudo apt -qy upgrade
-sudo apt install -y build-essential git openjdk-8-jdk unzip
-sudo apt install -y lib32stdc++6 lib32z1 lib32z1-dev
+    export ANDROID_HOME=`pwd`
+    export PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
 
-wget -nv https://www.crystax.net/download/crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
-tar xf crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
-rm crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
+    echo "y" | sdkmanager "platform-tools"
+    sdkmanager "platforms;android-26" "build-tools;26.0.3" "ndk-bundle"
 
-wget -nv http://dl.google.com/android/android-sdk_r$SDK_VERSION-linux.tgz
-tar zxf android-sdk_r$SDK_VERSION-linux.tgz
-rm android-sdk_r$SDK_VERSION-linux.tgz
+    cd ndk-bundle
+    git clone https://github.com/cawka/android-crew-staging.git crew.dir
 
-export ANDROID_HOME=`pwd`/android-sdk-linux
-export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
+    CREW_OWNER=cawka crew.dir/crew install target/sqlite:3.18.0 target/openssl:1.0.2m target/boost:1.65.1
 
-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
-echo "y" | android update sdk --filter "android-19" --no-ui --all --force
+    cd ../..
 
-echo sdk.dir=`pwd`/android-sdk-linux > local.properties
-echo ndk.dir=`pwd`/crystax-ndk-$CRYSTAX_NDK_VERSION >> local.properties
+    echo sdk.dir=`pwd`/android-sdk-linux > local.properties
+    echo ndk.dir=`pwd`/android-sdk-linux/ndk-bundle >> local.properties
 
-cd crystax-ndk-$CRYSTAX_NDK_VERSION/sources
-curl -s -L -o openssl.tar.gz https://github.com/named-data-mobile/crystax-prebuilt-openssl/archive/crystax-$CRYSTAX_NDK_VERSION.tar.gz
-tar zx --strip-components 1 -C openssl -f openssl.tar.gz
-rm openssl.tar.gz
 SCRIPT
 
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
-  config.vm.box = "boxcutter/ubuntu1604"
+  config.vm.box = "puphpet/ubuntu1604-x64"
 
   config.vm.provision "shell", privileged: false, inline: $script
 
diff --git a/README.md b/README.md
index 5bf920e..af28fd9 100644
--- a/README.md
+++ b/README.md
@@ -7,65 +7,57 @@
 
 To compile code, the following is necessary
 
-- Recent version of [Android SDK](http://developer.android.com/sdk/index.html), android-23 SDK
-  and 23.0.2 build tools (for build), android-19 SDK (for compatibility), and several other SDK
-  components
-- [CrystalX Android NDK](https://www.crystax.net/en/download) version 10.3.1
-- Prebuilt version of OpenSSL library
+- Recent version of [Android SDK](http://developer.android.com/sdk/index.html)
 
 Example script for Ubuntu 16.04 to get all dependencies, download SDK and NDK:
 
-    CRYSTAX_NDK_VERSION=10.3.1
-    SDK_VERSION=24.4.1
-    OPENSSL_VERSION=1.0.2h
-
-    BUILD_TOOLS_VERSION=23.0.2
-    COMPILE_SDK_VERSION=23
-
     sudo apt -q update
     sudo apt -qy upgrade
-    sudo apt-get install -y build-essential git openjdk-8-jdk unzip
+    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
 
-    wget https://www.crystax.net/download/crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
-    tar xf crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
-    rm crystax-ndk-$CRYSTAX_NDK_VERSION-linux-x86_64.tar.xz
+    mkdir android-sdk-linux
+    cd android-sdk-linux
+    wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
+    unzip sdk-tools-linux-3859397.zip
+    rm sdk-tools-linux-3859397.zip
 
-    wget http://dl.google.com/android/android-sdk_r$SDK_VERSION-linux.tgz
-    tar zxf android-sdk_r$SDK_VERSION-linux.tgz
-    rm android-sdk_r$SDK_VERSION-linux.tgz
+    export ANDROID_HOME=`pwd`
+    export PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
 
-    export ANDROID_HOME=`pwd`/android-sdk-linux
-    export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
+    echo "y" | sdkmanager "platform-tools"
+    sdkmanager "platforms;android-26" "build-tools;26.0.3" "ndk-bundle"
 
-    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
-    echo "y" | android update sdk --filter "android-19" --no-ui --all --force
+    cd ndk-bundle
+    git clone https://github.com/cawka/android-crew-staging.git crew.dir
 
-To create prebuilt OpenSSL libraries:
+    CREW_OWNER=cawka crew.dir/crew install target/sqlite:3.18.0 target/openssl:1.0.2m target/boost:1.65.1
 
-    git clone https://github.com/crystax/android-vendor-openssl.git
-    cd crystax-ndk-$CRYSTAX_NDK_VERSION
-    ./build/tools/build-target-openssl.sh ../android-vendor-openssl/
-    cp sources/openssl/1.0.1p/Android.mk -o sources/openssl/$OPENSSL_VERSION/Android.mk
+    cd ..
 
-Alternatively, you can use precompiled versions (currently, available for CrystaX NDK 10.3.1 only):
-
-    cd crystax-ndk-10.3.1/sources
-    curl -L -o openssl.tar.gz https://github.com/named-data-mobile/crystax-prebuilt-openssl/archive/crystax-10.3.1.tar.gz
-    tar zx --strip-components 1 -C openssl -f openssl.tar.gz
-    rm openssl.tar.gz
+The above `crew` scripts will install pre-compiled versions of sqlite, openssl, and boost libraries.
+To compile them instead, replace `install` with `build`.
 
 ## 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`/crystax-ndk-10.3.1 >> NFD-android/local.properties
+    echo ndk.dir=`pwd`/android-sdk-linux/ndk-bundle >> NFD-android/local.properties
     cd NFD-android
 
     ./gradlew assembleRelease
 
 
+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.
+
 ## Setting up environment using Vagrant
 
 The development setup can be set up with [Vagrant](https://www.vagrantup.com/) and scripts provided
diff --git a/app/build.gradle b/app/build.gradle
index 909fae0..d5eb0bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,14 +4,15 @@
 
 android {
     compileSdkVersion 26
-    buildToolsVersion "26.0.0"
+    buildToolsVersion "26.0.3"
 
     defaultConfig {
         applicationId "net.named_data.nfd"
-        minSdkVersion 15
-        targetSdkVersion 19
-        versionCode 4004
-        versionName "0.2.4 (NFD 0.5.0, ndn-cxx 0.5.0-11-g1cf4146e)"
+        minSdkVersion 23
+        targetSdkVersion 23
+        versionCode 4005
+        versionName "0.2.5 (NFD 0.5.0, ndn-cxx 0.5.0-11-g1cf4146e)"
+        multiDexEnabled true
     }
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_7
@@ -19,7 +20,7 @@
     }
     buildTypes {
         release {
-            minifyEnabled false
+            minifyEnabled true
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
         debug {
@@ -41,6 +42,9 @@
         exclude 'META-INF/LICENSE.txt'
         exclude 'META-INF/NOTICE.txt'
     }
+    lintOptions {
+      abortOnError false
+    }
 
     splits {
         abi {
@@ -51,11 +55,11 @@
 
     // map for the version code
     // versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-*
-    project.ext.versionCodes = ['armeabi': 1,
+    project.ext.versionCodes = [//'armeabi': 1, // Deprecated in r16. Will be removed in r17. No hard float.
                                 'armeabi-v7a': 2,
                                 'arm64-v8a': 3,
-                                'mips': 5,
-                                'mips64': 6,
+                                // 'mips': 5,   // Deprecated in r16. Will be removed in r17. Uses hard-float, and assumes a CPU:FPU clock ratio of 2:1 for maximum compatibility. Provides neither micromips nor MIPS16.
+                                // 'mips64': 6, // Deprecated in r16. WIll be removed in r17
                                 'x86': 8,
                                 'x86_64': 9]
 
@@ -93,7 +97,7 @@
         }
 
         if (System.env.NDK_DEBUG != null) {
-           args.add("NDK_DEBUG=1")
+           args.add("V=1")
         }
         commandLine args
     }
@@ -142,18 +146,19 @@
 }
 
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    compile 'com.android.support:appcompat-v7:23.1.1'
-    compile 'com.android.support:support-v4:23.1.1'
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation 'com.android.support:appcompat-v7:26.1.0'
+    implementation 'com.android.support:support-v4:26.1.0'
 
-    compile('com.intel.jndn.management:jndn-management:1.1.0') {
+    implementation('com.intel.jndn.management:jndn-management:1.1.3') {
       exclude group: 'net.named-data', module: 'jndn'
     }
-    compile('net.named-data:jndn-android:0.14') {
+    implementation('net.named-data:jndn-android:0.15') {
       exclude group: 'org.xerial'
+      exclude group: 'com.google.android'
     }
-    compile 'net.named-data.jndn-xx:jndn-xx-util:0.0.1'
-    compile 'joda-time:joda-time:2.7'
+    implementation 'net.named-data.jndn-xx:jndn-xx-util:0.0.1'
+    implementation 'joda-time:joda-time:2.9.9'
 }
 
 Properties properties = new Properties()
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 314d8a4..7b070a9 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,8 +1,115 @@
-# The simpliest strategy is to not run proguard against your project's own code.
-# This doesn't provide the benefits of optimization & obfuscation against your
-# project, but will still strip the libraries. The advantage is that your app will
-# work without any subsequent effort. If you choose this strategy, the proguard
-# configuration for the project is simply the line below.
+#-dontshrink
+#-dontoptimize
+#-dontpreverify
+-verbose
+-dontwarn javax.annotation.**
+-dontwarn com.google.**
+-dontwarn org.joda.convert.**
 
-# -keep class net.named_data.nfd.** { * ; }
-# -keep class net.named_data.jndn.** { * ; }
+-dontnote org.sqlite.JDBC
+-dontnote javax.xml.bind.DatatypeConverter
+-dontnote com.google.appengine.api.ThreadManager
+-dontnote com.google.apphosting.api.ApiProxy
+
+#
+
+-renamesourcefileattribute SourceFile
+
+-keepattributes SourceFile,LineNumberTable
+
+# RemoteViews might need annotations.
+
+-keepattributes *Annotation*
+
+# Preserve all fundamental application classes.
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+
+# Preserve all View implementations, their special context constructors, and
+# their setters.
+
+-keep public class * extends android.view.View {
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+    public void set*(...);
+}
+
+# Preserve all classes that have special context constructors, and the
+# constructors themselves.
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+# Preserve all classes that have special context constructors, and the
+# constructors themselves.
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# Preserve the special fields of all Parcelable implementations.
+
+-keepclassmembers class * implements android.os.Parcelable {
+    static android.os.Parcelable$Creator CREATOR;
+}
+
+# Preserve static fields of inner classes of R classes that might be accessed
+# through introspection.
+
+-keepclassmembers class **.R$* {
+  public static <fields>;
+}
+
+# Preserve the required interface from the License Verification Library
+# (but don't nag the developer if the library is not used at all).
+
+-keep public interface com.android.vending.licensing.ILicensingService
+
+-dontnote com.android.vending.licensing.ILicensingService
+
+# The Android Compatibility library references some classes that may not be
+# present in all versions of the API, but we know that's ok.
+
+-dontwarn android.support.**
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers class * extends java.lang.Enum {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your application doesn't use serialization.
+# If your code contains serializable classes that have to be backward
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved;
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class mypackage.MyClass
+# -keep public interface mypackage.MyInterface
+# -keep public class * implements mypackage.MyInterface
diff --git a/app/src/main/java/net/named_data/nfd/DrawerFragment.java b/app/src/main/java/net/named_data/nfd/DrawerFragment.java
index bf8e29d..60144a0 100644
--- a/app/src/main/java/net/named_data/nfd/DrawerFragment.java
+++ b/app/src/main/java/net/named_data/nfd/DrawerFragment.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015 Regents of the University of California
+ * Copyright (c) 2015-2017 Regents of the University of California
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -33,8 +33,8 @@
 import android.support.v4.widget.DrawerLayout;
 import android.support.v4.widget.ViewDragHelper;
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarActivity;
 import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.app.AppCompatActivity;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -334,7 +334,7 @@
    * @return Host activity's ActionBar.
    */
   private ActionBar getActionBar() {
-    return ((ActionBarActivity)getActivity()).getSupportActionBar();
+    return ((AppCompatActivity)getActivity()).getSupportActionBar();
   }
 
   //////////////////////////////////////////////////////////////////////////////
diff --git a/app/src/main/java/net/named_data/nfd/MainActivity.java b/app/src/main/java/net/named_data/nfd/MainActivity.java
index ee19928..c3a13ba 100644
--- a/app/src/main/java/net/named_data/nfd/MainActivity.java
+++ b/app/src/main/java/net/named_data/nfd/MainActivity.java
@@ -24,7 +24,7 @@
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
 import android.view.Menu;
 import android.view.MenuItem;
 
@@ -39,7 +39,7 @@
 /**
  * Main activity that is loaded for the NFD app.
  */
-public class MainActivity extends ActionBarActivity
+public class MainActivity extends AppCompatActivity
     implements DrawerFragment.DrawerCallbacks,
                LogcatFragment.Callbacks,
                FaceListFragment.Callbacks,
diff --git a/app/src/main/java/net/named_data/nfd/service/NfdService.java b/app/src/main/java/net/named_data/nfd/service/NfdService.java
index 3ab102d..1b2d4e4 100644
--- a/app/src/main/java/net/named_data/nfd/service/NfdService.java
+++ b/app/src/main/java/net/named_data/nfd/service/NfdService.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015 Regents of the University of California
+ * Copyright (c) 2015-2017 Regents of the University of California
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -54,30 +54,29 @@
   static {
     // At least on Galaxy S3 (4.1.1), all shared library dependencies that are located
     // in app's lib folder (not in /system/lib) need to be explicitly loaded.
-    // The script https://gist.github.com/cawka/11fe9c23b7a13960330b can be used to
-    // calculate proper dependency load list.
+    // Use `ndk-depends` to automatically generate this list.
     // For example:
     //     cd app/src/main/libs/armeabi-v7a/
     //     bash android-shared-lib-dependencies.sh nfd-wrapper
-    System.loadLibrary("crystax");
-    System.loadLibrary("gnustl_shared");
-    System.loadLibrary("cryptopp_shared");
-    System.loadLibrary("boost_system");
-    System.loadLibrary("boost_filesystem");
-    System.loadLibrary("boost_date_time");
-    System.loadLibrary("boost_iostreams");
-    System.loadLibrary("boost_program_options");
-    System.loadLibrary("boost_chrono");
-    System.loadLibrary("boost_random");
-    System.loadLibrary("ndn-cxx");
-    System.loadLibrary("boost_thread");
-    System.loadLibrary("nfd-daemon");
+    // System.loadLibrary("crystax");
+    // System.loadLibrary("gnustl_shared");
+    // System.loadLibrary("cryptopp_shared");
+    // System.loadLibrary("boost_system");
+    // System.loadLibrary("boost_filesystem");
+    // System.loadLibrary("boost_date_time");
+    // System.loadLibrary("boost_iostreams");
+    // System.loadLibrary("boost_program_options");
+    // System.loadLibrary("boost_chrono");
+    // System.loadLibrary("boost_random");
+    // System.loadLibrary("ndn-cxx");
+    // System.loadLibrary("boost_thread");
+    // System.loadLibrary("nfd-daemon");
     System.loadLibrary("nfd-wrapper");
   }
 
   /**
    * Native API for starting the NFD.
-   *
+   * <p/>
    * @param params NFD parameters.  Must include 'homePath' with absolute path of the home directory
    *               for the service (ContextWrapper.getFilesDir().getAbsolutePath())
    */
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 4ab6a50..20989c2 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -10,5 +10,3 @@
 
 include $(LOCAL_PATH_SAVED)/ndn-cxx.mk
 include $(LOCAL_PATH_SAVED)/nfd.mk
-
-$(call import-module,boost/1.59.0)
diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk
index 976b943..793e7c4 100644
--- a/app/src/main/jni/Application.mk
+++ b/app/src/main/jni/Application.mk
@@ -1,7 +1,8 @@
-APP_ABI := all
+APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
 
 APP_STL := gnustl_shared
-APP_CPPFLAGS += -fexceptions -frtti -std=c++11 -Wno-deprecated-declarations
+APP_CPPFLAGS += -fexceptions -frtti -std=c++11
+# -Wno-deprecated-declarations
 
-NDK_TOOLCHAIN_VERSION := 5
-APP_PLATFORM := android-19
+NDK_TOOLCHAIN_VERSION := 4.9
+APP_PLATFORM := android-23
diff --git a/app/src/main/jni/ndn-cxx b/app/src/main/jni/ndn-cxx
index 1cf4146..17c83c2 160000
--- a/app/src/main/jni/ndn-cxx
+++ b/app/src/main/jni/ndn-cxx
@@ -1 +1 @@
-Subproject commit 1cf4146eb9d5ea5604072e096bf11e2dffa136eb
+Subproject commit 17c83c2467dd468dfa8684cc9f5412dc1b7c59dd
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
index f669a93..d7d1858 100644
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
+++ b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
@@ -1,7 +1,7 @@
 #ifndef W_SRC_NDN_CXX_CONFIG_HPP_WAF
 #define W_SRC_NDN_CXX_CONFIG_HPP_WAF
 
-#define NDN_CXX_HAVE_STD_TO_STRING 1
+// #define NDN_CXX_HAVE_STD_TO_STRING 1
 #define NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR 1
 #define NDN_CXX_HAVE_IS_DEFAULT_CONSTRUCTIBLE 1
 #define NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE 1
diff --git a/app/src/main/jni/ndn-cxx.mk b/app/src/main/jni/ndn-cxx.mk
index d467bac..b47ea5c 100644
--- a/app/src/main/jni/ndn-cxx.mk
+++ b/app/src/main/jni/ndn-cxx.mk
@@ -4,7 +4,7 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := ndn-cxx
 NDN_CXX_BOOST_LIBS = system filesystem date_time iostreams program_options chrono random
-LOCAL_SHARED_LIBRARIES := cryptopp_shared opencrypto_shared openssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
 LOCAL_STATIC_LIBRARIES := sqlite3_static boost_regex_static
 NDN_CXX_SRC_FILES := \
     data.cpp \
@@ -145,6 +145,6 @@
 
 include $(LOCAL_PATH_SAVED)/cryptopp/extras/jni/Android.mk
 
-$(call import-module,boost/1.59.0)
-$(call import-module,sqlite/3)
-$(call import-module,openssl/1.0.2h)
+$(call import-module,../packages/boost/1.65.1)
+$(call import-module,../packages/sqlite/3.18.0)
+$(call import-module,../packages/openssl/1.0.2m)
diff --git a/app/src/main/jni/nfd.mk b/app/src/main/jni/nfd.mk
index c8e6818..77c27b8 100644
--- a/app/src/main/jni/nfd.mk
+++ b/app/src/main/jni/nfd.mk
@@ -6,7 +6,7 @@
 # nfd itself
 include $(CLEAR_VARS)
 LOCAL_MODULE := nfd-daemon
-LOCAL_SHARED_LIBRARIES := cryptopp_shared openssl_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
 NFD_DAEMON_SRC_FILES := \
     core/city-hash.cpp \
     core/config-file.cpp \
diff --git a/build.gradle b/build.gradle
index 73d0250..cf440d0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,13 +2,14 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
         maven {
             url "https://oss.sonatype.org/content/repositories/snapshots/"
         }
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
         classpath 'net.named-data.playground:play-publisher:1.2.0-2-SNAPSHOT'
 
         // NOTE: Do not place your application dependencies here; they belong
@@ -18,6 +19,11 @@
 
 allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 29be96d..6b55714 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jul 07 17:24:15 PDT 2017
+#Sun Nov 12 15:16:12 EST 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.0.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
