diff --git a/.jenkins.d/10-get-sdk.sh b/.jenkins.d/10-get-sdk.sh
index 8d02423..2d4ccaf 100755
--- a/.jenkins.d/10-get-sdk.sh
+++ b/.jenkins.d/10-get-sdk.sh
@@ -6,15 +6,18 @@
 
 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
+
+wget https://dl.google.com/android/repository/commandlinetools-linux-6514223_latest.zip
+unzip commandlinetools-linux-6514223_latest.zip
+rm commandlinetools-linux-6514223_latest.zip
+mkdir -p cmdline-tools
+mv tools cmdline-tools/latest
 
 export ANDROID_HOME=`pwd`
-export PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
+export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools
 
 echo "y" | sdkmanager "platform-tools"
-sdkmanager "platforms;android-28"
+sdkmanager "platforms;android-29"
 
 cd ..
 
diff --git a/.jenkins.d/20-get-ndk.sh b/.jenkins.d/20-get-ndk.sh
index df8bd88..3c6ed18 100755
--- a/.jenkins.d/20-get-ndk.sh
+++ b/.jenkins.d/20-get-ndk.sh
@@ -2,7 +2,7 @@
 set -e
 set -x
 
-android-sdk-linux/tools/bin/sdkmanager "ndk-bundle"
+android-sdk-linux/cmdline-tools/latest/bin/sdkmanager "ndk-bundle"
 git clone https://github.com/named-data-mobile/android-crew-staging.git android-sdk-linux/ndk-bundle/crew.dir
 
 if [[ ! -z $GEM_PATH ]]; then
diff --git a/.vagrant/Vagrantfile b/.vagrant/Vagrantfile
index 46b4c75..27df1f4 100644
--- a/.vagrant/Vagrantfile
+++ b/.vagrant/Vagrantfile
@@ -14,15 +14,17 @@
 
     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
+    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}/tools/bin:${ANDROID_HOME}/platform-tools
+    export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools
 
     echo "y" | sdkmanager "platform-tools"
-    sdkmanager "platforms;android-28" "ndk-bundle"
+    sdkmanager "platforms;android-29" "ndk-bundle"
 
     cd ndk-bundle
     git clone https://github.com/named-data-mobile/android-crew-staging.git crew.dir
@@ -38,7 +40,7 @@
 SCRIPT
 
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
-  config.vm.box = "puphpet/ubuntu1604-x64"
+  config.vm.box = "bento/ubuntu-18.04"
 
   config.vm.provision "shell", privileged: false, inline: $script
 
diff --git a/README.md b/README.md
index 2ccb0a7..7f69ca9 100644
--- a/README.md
+++ b/README.md
@@ -7,26 +7,28 @@
 
 To compile code, the following is necessary
 
-- Recent version of [Android SDK](http://developer.android.com/sdk/index.html)
+- Recent version of [Android command line tools](http://developer.android.com/sdk/index.html)
 
-Example script for Ubuntu 16.04 to get all dependencies, download SDK and NDK:
+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-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
+    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}/tools/bin:${ANDROID_HOME}/platform-tools
+    export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools
 
     echo "y" | sdkmanager "platform-tools"
-    sdkmanager "platforms;android-28" "ndk-bundle"
+    sdkmanager "platforms;android-29" "ndk-bundle"
 
     cd ndk-bundle
     git clone https://github.com/named-data-mobile/android-crew-staging crew.dir
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index c173dc7..6c76122 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -1,40 +1,72 @@
-NFD-Android version 0.2.3
--------------------------
+Version 0.7.0-1
+---------------
+
+NFD and ndn-cxx updated to version 0.7.0
+
+Version 0.6.6-1
+---------------
+
+- Add option to enable unsolicited data caching
+- Upgrade NFD/ndn-cxx to version 0.6.6
+- Switch to Boost 1.70.0
+
+Version 0.6.5-3
+---------------
+
+- A new bottom navigation menu
+- A new nicer style for the drawer navigation menu
+- Fix bug with ping unexpectedly starting after reopening app
+- Fix crash if pressing HOME key while ping client is running
+- Codebase transitioned to AndroidX framework
+
+Version 0.6.5-2
+---------------
+
+Enable localhop registrations, so self-learning strategy can work
+
+Version 0.6.5-1
+---------------
+
+- Upgrade NFD/ndn-cxx to version 0.6.5
+- Persistent notification and run NfdService in foreground to improve stability
+- Multicast face support
+- Creation of a route using FaceId
+
+Version 0.6.2-1
+---------------
+
+Update NFD to version 0.6.2-11-gd657d53
+
+Version 0.3.0
+-------------
+
+- Upgrade NFD/ndn-cxx to version 0.6.0
+- Add support for NDN-FCH hub discovery
+
+Version 0.2.3
+-------------
 
 - WiFi Direct connectivity helper
 - NDN ping client
 - Permanent face and route management mechanisms
 
-NFD-Android version 0.2.2
--------------------------
+Version 0.2.2
+-------------
 
 - NFD updated to version 0.5.0
 - Add route deletion GUI
 
-NFD-Android version 0.2.1
--------------------------
-
-Release date: February 29, 2016
-
-Updates
-~~~~~~~
+Version 0.2.1
+-------------
 
 - NFD updated to version 0.4.0-3-g4100646
 - ndn-cxx updated to version 0.4.0-4-g6617e49
 - jndn updated to version 0.10
 - jndn-management updated to version 1.1.0
-
-Bug fixes
-~~~~~~~~~
-
 - Fix creation of routes for ndn:/ (Issue #3399)
 
-NFD-Android version 0.1
------------------------
-
-Release date: January 6, 2016
-
-Based on:
+Version 0.1
+-----------
 
 - NFD version 0.3.4-16-g441ba21
 - ndn-cxx version 0.3.4-9-g80b68e1
diff --git a/app/build.gradle b/app/build.gradle
index 7de47dd..ed87e86 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@
         applicationId "net.named_data.nfd"
         minSdkVersion 23
         targetSdkVersion 29
-        versionCode 4013
-        versionName "0.6.6-1 (NFD 0.6.6)"
+        versionCode 4018
+        versionName "0.7.0-1 (NFD 0.7.0)"
         multiDexEnabled true
     }
     compileOptions {
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 a6824c2..b36cad4 100644
--- a/app/src/main/java/net/named_data/nfd/MainActivity.java
+++ b/app/src/main/java/net/named_data/nfd/MainActivity.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2015-2019 Regents of the University of California
+ * Copyright (c) 2015-2020 Regents of the University of California
  * <p/>
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -28,6 +28,8 @@
 import com.intel.jndn.management.types.FaceStatus;
 import com.intel.jndn.management.types.RibEntry;
 
+import net.named_data.jndn.encoding.Tlv0_3WireFormat;
+import net.named_data.jndn.encoding.WireFormat;
 import net.named_data.nfd.utils.G;
 import net.named_data.nfd.wifidirect.utils.NDNController;
 
@@ -48,6 +50,8 @@
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
+    WireFormat.setDefaultWireFormat(Tlv0_3WireFormat.get());
+
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
diff --git a/app/src/main/java/net/named_data/nfd/RouteInfoFragment.java b/app/src/main/java/net/named_data/nfd/RouteInfoFragment.java
index f20ee18..43bef32 100644
--- a/app/src/main/java/net/named_data/nfd/RouteInfoFragment.java
+++ b/app/src/main/java/net/named_data/nfd/RouteInfoFragment.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2015-2019 Regents of the University of California
+ * Copyright (c) 2015-2020 Regents of the University of California
  * <p/>
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -19,6 +19,7 @@
 
 package net.named_data.nfd;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.os.AsyncTask;
@@ -325,6 +326,7 @@
       return m_ribEntry.getRoutes().get(position).getFaceId();
     }
 
+    @SuppressLint("SetTextI18n")
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
       ListItemHolder holder;
@@ -345,7 +347,12 @@
 
       if (m_faces != null) {
         FaceStatus status = m_faces.get(r.getFaceId());
-        faceInfo += " (" + status.getRemoteUri() + ")";
+        if (status != null) {
+          faceInfo += " (" + status.getRemoteUri() + ")";
+        }
+        else {
+          faceInfo += " (ERROR: face not found)";
+        }
       }
 
       holder.m_title.setText(faceInfo);
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 1f576eb..c1c96d0 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -10,8 +10,8 @@
 include $(BUILD_SHARED_LIBRARY)
 
 # Explicitly define versions of precompiled modules
-$(call import-module,../packages/nfd/0.6.6)
-$(call import-module,../packages/ndn_cxx/0.6.6-1)
-$(call import-module,../packages/boost/1.70.0)
-$(call import-module,../packages/sqlite/3.18.0)
-$(call import-module,../packages/openssl/1.1.1-pre8)
+$(call import-module,../packages/nfd/0.7.0)
+$(call import-module,../packages/ndn_cxx/0.7.0)
+$(call import-module,../packages/boost/1.73.0)
+$(call import-module,../packages/sqlite/3.32.1)
+$(call import-module,../packages/openssl/1.1.1g)
diff --git a/app/src/main/jni/nfd-wrapper.cpp b/app/src/main/jni/nfd-wrapper.cpp
index 7b72430..f79d31d 100644
--- a/app/src/main/jni/nfd-wrapper.cpp
+++ b/app/src/main/jni/nfd-wrapper.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015-2019 Regents of the University of California
+ * Copyright (c) 2015-2020 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.
@@ -92,7 +92,7 @@
             type any
           }
         }
-        localhop_security
+        prefix_announcement_validation
         {
           trust-anchor
           {
@@ -168,7 +168,6 @@
 };
 
 static unique_ptr<Runner> g_runner;
-static std::thread g_thread;
 static std::map<std::string, std::string> g_params;
 
 } // namespace nfd
@@ -225,7 +224,7 @@
     ::setenv("HOME", nfd::g_params["homePath"].c_str(), true);
     NFD_LOG_INFO("Use [" << nfd::g_params["homePath"] << "] as a security storage");
 
-    nfd::g_thread = std::thread([] {
+    auto thread = std::thread([] {
         nfd::resetGlobalIoService();
 
         NFD_LOG_INFO("Starting NFD...");
@@ -256,6 +255,7 @@
         nfd::resetGlobalIoService();
         NFD_LOG_INFO("NFD stopped");
       });
+    thread.detach();
   }
 }
 
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/1174680317794011972.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/12007668794044348844.png
similarity index 100%
rename from app/src/main/play/listings/en-US/graphics/phone-screenshots/1174680317794011972.png
rename to app/src/main/play/listings/en-US/graphics/phone-screenshots/12007668794044348844.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/8610548870873111104.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/14995211209772951950.png
similarity index 100%
rename from app/src/main/play/listings/en-US/graphics/phone-screenshots/8610548870873111104.png
rename to app/src/main/play/listings/en-US/graphics/phone-screenshots/14995211209772951950.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/9314260737139509802.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/1606951598295458325.png
similarity index 100%
rename from app/src/main/play/listings/en-US/graphics/phone-screenshots/9314260737139509802.png
rename to app/src/main/play/listings/en-US/graphics/phone-screenshots/1606951598295458325.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/9314260737139509802.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/2797505759625413406.png
similarity index 100%
copy from app/src/main/play/listings/en-US/graphics/phone-screenshots/9314260737139509802.png
copy to app/src/main/play/listings/en-US/graphics/phone-screenshots/2797505759625413406.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/13088611630469511818.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/351647500174297761.png
similarity index 100%
rename from app/src/main/play/listings/en-US/graphics/phone-screenshots/13088611630469511818.png
rename to app/src/main/play/listings/en-US/graphics/phone-screenshots/351647500174297761.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/13088611630469511818.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/4728587754154587625.png
similarity index 100%
copy from app/src/main/play/listings/en-US/graphics/phone-screenshots/13088611630469511818.png
copy to app/src/main/play/listings/en-US/graphics/phone-screenshots/4728587754154587625.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/1174680317794011972.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/5330727830694217599.png
similarity index 100%
copy from app/src/main/play/listings/en-US/graphics/phone-screenshots/1174680317794011972.png
copy to app/src/main/play/listings/en-US/graphics/phone-screenshots/5330727830694217599.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/phone-screenshots/8610548870873111104.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/5462748549381729952.png
similarity index 100%
copy from app/src/main/play/listings/en-US/graphics/phone-screenshots/8610548870873111104.png
copy to app/src/main/play/listings/en-US/graphics/phone-screenshots/5462748549381729952.png
Binary files differ
diff --git a/app/src/main/play/release-notes/en-US/internal.txt b/app/src/main/play/release-notes/en-US/internal.txt
new file mode 100644
index 0000000..c0ab6ac
--- /dev/null
+++ b/app/src/main/play/release-notes/en-US/internal.txt
@@ -0,0 +1,3 @@
+- Add option to enable unsolicited data caching
+- Upgrade NFD/ndn-cxx to version 0.6.6
+- Switch to Boost 1.70.0
\ No newline at end of file
diff --git a/app/src/main/play/release-notes/en-US/production.txt b/app/src/main/play/release-notes/en-US/production.txt
index 21119db..7f1aead 100644
--- a/app/src/main/play/release-notes/en-US/production.txt
+++ b/app/src/main/play/release-notes/en-US/production.txt
@@ -1,5 +1 @@
-- A new bottom navigation menu
-- A new nicer style for the drawer navigation menu
-- Fix bug with ping unexpectedly starting after reopening app
-- Fix crash if pressing HOME key while ping client is running
-- Codebase transitioned to AndroidX framework
\ No newline at end of file
+NFD and ndn-cxx updated to version 0.7.0
\ No newline at end of file
