diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bcd2352de..f26a036397 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,7 +98,7 @@ endif ()
 
 if (ANDROID)
   if (NOT ANDROID_QT_CMAKE_PREFIX_PATH)
-    set(QT_CMAKE_PREFIX_PATH ${ANDROID_LIB_DIR}/Qt/5.4/android_armv7/lib/cmake)
+    set(QT_CMAKE_PREFIX_PATH ${ANDROID_LIB_DIR}/Qt/5.5/android_armv7/lib/cmake)
   else ()
     set(QT_CMAKE_PREFIX_PATH ${ANDROID_QT_CMAKE_PREFIX_PATH})
   endif ()
@@ -236,6 +236,8 @@ if (NOT ANDROID)
 endif()
 
 if (ANDROID OR DESKTOP_GVR)
+  add_subdirectory(interface)
+  add_subdirectory(plugins)
   add_subdirectory(gvr-interface)
 endif ()
 
diff --git a/cmake/externals/hifiAudioCodec/CMakeLists.txt b/cmake/externals/hifiAudioCodec/CMakeLists.txt
index 87b5044b42..b64dbe6f9d 100644
--- a/cmake/externals/hifiAudioCodec/CMakeLists.txt
+++ b/cmake/externals/hifiAudioCodec/CMakeLists.txt
@@ -5,39 +5,43 @@ set(EXTERNAL_NAME hifiAudioCodec)
 
 string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER)
 
-if (WIN32 OR APPLE)
-  ExternalProject_Add(
-    ${EXTERNAL_NAME}
-    URL http://s3.amazonaws.com/hifi-public/dependencies/codecSDK-1.zip
-    URL_MD5 23ec3fe51eaa155ea159a4971856fc13
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    LOG_DOWNLOAD 1
-  )
-elseif(NOT ANDROID)
-  ExternalProject_Add(
-    ${EXTERNAL_NAME}
-    URL http://s3.amazonaws.com/hifi-public/dependencies/codecSDK-linux.zip
-    URL_MD5 7d37914a18aa4de971d2f45dd3043bde
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    LOG_DOWNLOAD 1
-  )
-endif()
-
-# Hide this external target (for ide users)
-set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals")
-
-ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)
-
-set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE TYPE INTERNAL)
-
-if (WIN32)
-  set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/audio.lib CACHE TYPE INTERNAL)
-elseif(APPLE)
-  set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/libaudio.a CACHE TYPE INTERNAL)
-elseif(NOT ANDROID)
-  set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/libaudio.a CACHE TYPE INTERNAL)
+if (NOT ANDROID)
+
+  if (WIN32 OR APPLE)
+    ExternalProject_Add(
+      ${EXTERNAL_NAME}
+      URL http://s3.amazonaws.com/hifi-public/dependencies/codecSDK-1.zip
+      URL_MD5 23ec3fe51eaa155ea159a4971856fc13
+      CONFIGURE_COMMAND ""
+      BUILD_COMMAND ""
+      INSTALL_COMMAND ""
+      LOG_DOWNLOAD 1
+    )
+  elseif ()
+    ExternalProject_Add(
+      ${EXTERNAL_NAME}
+      URL http://s3.amazonaws.com/hifi-public/dependencies/codecSDK-linux.zip
+      URL_MD5 7d37914a18aa4de971d2f45dd3043bde
+      CONFIGURE_COMMAND ""
+      BUILD_COMMAND ""
+      INSTALL_COMMAND ""
+      LOG_DOWNLOAD 1
+    )
+  endif()
+
+  # Hide this external target (for ide users)
+  set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals")
+
+  ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)
+
+  set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE TYPE INTERNAL)
+
+  if (WIN32)
+    set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/audio.lib CACHE TYPE INTERNAL)
+  elseif(APPLE)
+    set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/libaudio.a CACHE TYPE INTERNAL)
+  elseif(NOT ANDROID)
+    set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/libaudio.a CACHE TYPE INTERNAL)
+  endif()
+
 endif()
diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt
index 6ea03fd7a4..74f7e10859 100644
--- a/cmake/externals/tbb/CMakeLists.txt
+++ b/cmake/externals/tbb/CMakeLists.txt
@@ -3,9 +3,9 @@ set(EXTERNAL_NAME tbb)
 include(ExternalProject)
 
 if (ANDROID)
-  
+
   find_program(NDK_BUILD_COMMAND NAMES ndk-build DOC "Path to the ndk-build command")
-      
+
   ExternalProject_Add(
     ${EXTERNAL_NAME}
     URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_src.tgz
@@ -20,7 +20,7 @@ if (ANDROID)
   )
 elseif (APPLE)
   find_program(MAKE_COMMAND NAMES make DOC "Path to the make command")
-  
+
   ExternalProject_Add(
     ${EXTERNAL_NAME}
     URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_src.tgz
@@ -37,11 +37,11 @@ else ()
   if (WIN32)
     set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_win.zip)
     set(DOWNLOAD_MD5 d250d40bb93b255f75bcbb19e976a440)
-  else () 
+  else ()
     set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_lin.tgz)
     set(DOWNLOAD_MD5 7830ba2bc62438325fba2ec0c95367a5)
   endif ()
-  
+
   ExternalProject_Add(
     ${EXTERNAL_NAME}
     URL ${DOWNLOAD_URL}
@@ -60,11 +60,11 @@ ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)
 
 string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER)
 
-if (APPLE) 
+if (APPLE)
   set(_TBB_LIB_DIR "${SOURCE_DIR}/lib")
   set(_LIB_PREFIX "lib")
   set(_LIB_EXT "dylib")
-  
+
   ExternalProject_Add_Step(
     ${EXTERNAL_NAME}
     change-install-name
@@ -74,7 +74,7 @@ if (APPLE)
     WORKING_DIRECTORY <SOURCE_DIR>
     LOG 1
   )
-  
+
 elseif (WIN32)
   if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
     set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/intel64/vc12")
@@ -91,18 +91,18 @@ elseif (ANDROID)
 elseif (UNIX)
   set(_LIB_PREFIX "lib")
   set(_LIB_EXT "so")
-  
+
   if(CMAKE_SIZEOF_VOID_P EQUAL 8)
     set(_TBB_ARCH_DIR "intel64")
   else()
     set(_TBB_ARCH_DIR "ia32")
   endif()
-  
+
   execute_process(
     COMMAND ${CMAKE_C_COMPILER} -dumpversion
     OUTPUT_VARIABLE GCC_VERSION
   )
-  
+
   if (GCC_VERSION VERSION_GREATER 4.4 OR GCC_VERSION VERSION_EQUAL 4.4)
     set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/${_TBB_ARCH_DIR}/gcc4.4")
   elseif (GCC_VERSION VERSION_GREATER 4.1 OR GCC_VERSION VERSION_EQUAL 4.1)
@@ -110,9 +110,9 @@ elseif (UNIX)
   else ()
     message(STATUS "Could not find a compatible version of Threading Building Blocks library for your compiler.")
   endif ()
-  
-  
-endif () 
+
+
+endif ()
 
 if (DEFINED _TBB_LIB_DIR)
   set(${EXTERNAL_NAME_UPPER}_LIBRARY_DEBUG ${_TBB_LIB_DIR}/${_LIB_PREFIX}tbb_debug.${_LIB_EXT} CACHE FILEPATH "TBB debug library location")
diff --git a/gvr-interface/CMakeLists.txt b/gvr-interface/CMakeLists.txt
index 175706a3ff..7d6655e875 100644
--- a/gvr-interface/CMakeLists.txt
+++ b/gvr-interface/CMakeLists.txt
@@ -3,7 +3,7 @@ set(TARGET_NAME gvr-interface)
 if (ANDROID)
   set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build")
   set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk")
-  
+
   set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME})
   set(ANDROID_APP_DISPLAY_NAME Interface)
   set(ANDROID_API_LEVEL 19)
@@ -13,10 +13,10 @@ if (ANDROID)
   set(ANDROID_APK_VERSION_CODE 1)
   set(ANDROID_APK_FULLSCREEN TRUE)
   set(ANDROID_DEPLOY_QT_INSTALL "--install")
-  
+
   set(BUILD_SHARED_LIBS ON)
   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
-  
+
   setup_hifi_library(Gui Widgets AndroidExtras)
 else ()
   setup_hifi_project(Gui Widgets)
@@ -28,12 +28,12 @@ link_hifi_libraries(shared networking audio-client avatars)
 
 if (ANDROID)
   find_package(LibOVR)
-  
+
   if (LIBOVR_FOUND)
     add_definitions(-DHAVE_LIBOVR)
     target_link_libraries(${TARGET_NAME} ${LIBOVR_LIBRARIES} ${LIBOVR_ANDROID_LIBRARIES} ${TURBOJPEG_LIBRARY})
     include_directories(SYSTEM ${LIBOVR_INCLUDE_DIRS})
-  
+
     # we need VRLib, so add a project.properties to our apk build folder that says that
     file(RELATIVE_PATH RELATIVE_VRLIB_PATH ${ANDROID_APK_OUTPUT_DIR} "${LIBOVR_VRLIB_DIR}")
     file(WRITE "${ANDROID_APK_BUILD_DIR}/project.properties" "android.library.reference.1=${RELATIVE_VRLIB_PATH}")
@@ -50,7 +50,7 @@ if (ANDROID AND HOCKEY_APP_ID)
   set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceBetaActivity)
   set(ANDROID_DEPLOY_QT_INSTALL "")
   set(ANDROID_APK_CUSTOM_NAME "Interface-beta.apk")
-  
+
   # set the ANDROID_APK_VERSION_CODE to the number of git commits
   execute_process(
     COMMAND  git rev-list --first-parent --count HEAD
@@ -58,16 +58,16 @@ if (ANDROID AND HOCKEY_APP_ID)
     OUTPUT_VARIABLE GIT_COMMIT_COUNT
     OUTPUT_STRIP_TRAILING_WHITESPACE
   )
-  
+
   set(ANDROID_APK_VERSION_CODE ${GIT_COMMIT_COUNT})
-  
+
   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/InterfaceBetaActivity.java.in" "${ANDROID_APK_BUILD_DIR}/src/io/highfidelity/gvrinterface/InterfaceBetaActivity.java")
 elseif (ANDROID)
   set(HOCKEY_APP_ENABLED false)
 endif ()
 
 if (ANDROID)
-  
+
   set(HIFI_URL_INTENT "<intent-filter>\
     \n        <action android:name='android.intent.action.VIEW' />\
     \n        <category android:name='android.intent.category.DEFAULT' />\
@@ -75,13 +75,11 @@ if (ANDROID)
     \n        <data android:scheme='hifi' />\
     \n      </intent-filter>"
   )
-  
+
   set(ANDROID_EXTRA_APPLICATION_XML "${HOCKEY_APP_ACTIVITY}")
   set(ANDROID_EXTRA_ACTIVITY_XML "${HIFI_URL_INTENT}")
 
   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/hockeyapp.xml.in" "${ANDROID_APK_BUILD_DIR}/res/values/hockeyapp.xml")
   qt_create_apk()
-  
-endif (ANDROID)
 
-copy_dlls_beside_windows_executable()
+endif (ANDROID)
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index 414fafe705..37e084b4b4 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -39,9 +39,18 @@ else ()
   list(REMOVE_ITEM INTERFACE_SRCS ${SPEECHRECOGNIZER_CPP})
 endif ()
 
-find_package(Qt5 COMPONENTS
-    Gui Multimedia Network OpenGL Qml Quick Script ScriptTools Svg
-    WebChannel WebEngine WebEngineWidgets WebKitWidgets WebSockets)
+if (ANDROID)
+  set(PLATFORM_QT_COMPONENTS AndroidExtras)
+else ()
+  set(PLATFORM_QT_COMPONENTS WebEngine WebEngineWidgets WebKitWidgets)
+endif ()
+
+find_package(
+  Qt5 COMPONENTS
+  Gui Multimedia Network OpenGL Qml Quick Script ScriptTools Svg
+  ${QT_WEBENGINE_COMPONENTS}
+  WebChannel WebSockets
+)
 
 # grab the ui files in resources/ui
 file (GLOB_RECURSE QT_UI_FILES ui/*.ui)
@@ -57,6 +66,25 @@ set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}" "${QT_RESOURCES}")
 # set(TS ${TARGET_NAME}_en.ts)
 # qt5_create_translation_custom(${QM} ${INTERFACE_SRCS} ${QT_UI_FILES} ${TS})
 
+# setup the android parameters that will help us produce an APK
+if (ANDROID)
+  set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build")
+  set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk")
+
+  set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME})
+  set(ANDROID_APP_DISPLAY_NAME Interface)
+  set(ANDROID_API_LEVEL 19)
+  set(ANDROID_APK_PACKAGE io.highfidelity.interface)
+  set(ANDROID_ACTIVITY_NAME io.highfidelity.interface.InterfaceActivity)
+  set(ANDROID_APK_VERSION_NAME "0.1")
+  set(ANDROID_APK_VERSION_CODE 1)
+  set(ANDROID_APK_FULLSCREEN TRUE)
+  set(ANDROID_DEPLOY_QT_INSTALL "--install")
+
+  set(BUILD_SHARED_LIBS ON)
+  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}")
+endif ()
+
 if (APPLE)
 
   # configure CMake to use a custom Info.plist
@@ -95,7 +123,7 @@ if (APPLE)
 
   # make sure the output name for the .app bundle is correct
   set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${INTERFACE_BUNDLE_NAME})
-elseif(WIN32)
+elseif (WIN32)
   # configure an rc file for the chosen icon
   set(CONFIGURE_ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/icon/${INTERFACE_ICON_FILENAME}")
   set(CONFIGURE_ICON_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc")
@@ -104,7 +132,7 @@ elseif(WIN32)
   # add an executable that also has the icon itself and the configured rc file as resources
   add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT})
 
-  if ( NOT DEV_BUILD )
+  if (NOT DEV_BUILD)
     add_custom_command(
       TARGET ${TARGET_NAME}
       POST_BUILD
@@ -113,9 +141,12 @@ elseif(WIN32)
     )
   endif()
 
-else()
+elseif (ANDROID)
+  # on android the Interface target is a library that gets linked/used by the APK shell that qtcreateapk produces
+  add_library(${TARGET_NAME} ${INTERFACE_SRCS} ${QM})
+else ()
   add_executable(${TARGET_NAME} ${INTERFACE_SRCS} ${QM})
-endif()
+endif ()
 
 target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/includes")
 
@@ -135,12 +166,19 @@ if (WIN32)
   set_property(TARGET ${TARGET_NAME} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG "/OPT:NOREF /OPT:NOICF")
 endif()
 
+if (NOT ANDROID)
+  set(${STEAM_WRAPPER} steamworks-wrapper)
+endif ()
+
 # link required hifi libraries
-link_hifi_libraries(shared octree gpu gl gpu-gl procedural model render
-                    recording fbx networking model-networking entities avatars
-                    audio audio-client animation script-engine physics
-                    render-utils entities-renderer ui auto-updater
-                    controllers plugins ui-plugins display-plugins input-plugins steamworks-wrapper)
+link_hifi_libraries(
+  shared octree gpu gl gpu-gl procedural model render
+  recording fbx networking model-networking entities avatars
+  audio audio-client animation script-engine physics
+  render-utils entities-renderer ui auto-updater
+  controllers plugins ui-plugins display-plugins input-plugins
+  ${STEAM_WRAPPER}
+)
 
 # include the binary directory of render-utils for shader includes
 target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/libraries/render-utils")
@@ -291,3 +329,17 @@ if (WIN32)
 
     package_libraries_for_deployment()
 endif()
+
+if (ANDROID)
+  set(HIFI_URL_INTENT "<intent-filter>\
+    \n        <action android:name='android.intent.action.VIEW' />\
+    \n        <category android:name='android.intent.category.DEFAULT' />\
+    \n        <category android:name='android.intent.category.BROWSABLE' />\
+    \n        <data android:scheme='hifi' />\
+    \n      </intent-filter>"
+  )
+
+  set(ANDROID_EXTRA_ACTIVITY_XML "${HIFI_URL_INTENT}")
+
+  qt_create_apk()
+endif ()
diff --git a/plugins/hifiSixense/CMakeLists.txt b/plugins/hifiSixense/CMakeLists.txt
index f907d7865f..14676217db 100644
--- a/plugins/hifiSixense/CMakeLists.txt
+++ b/plugins/hifiSixense/CMakeLists.txt
@@ -6,7 +6,9 @@
 #  See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
 #
 
-set(TARGET_NAME hifiSixense)
-setup_hifi_plugin(Script Qml Widgets)
-link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins)
-target_sixense()
+if (NOT ANDROID)
+  set(TARGET_NAME hifiSixense)
+  setup_hifi_plugin(Script Qml Widgets)
+  link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins)
+  target_sixense()
+endif ()