diff --git a/wearable/wear/AgendaData/Wearable/src/main/AndroidManifest.xml b/wearable/wear/AgendaData/Wearable/src/main/AndroidManifest.xml
index f8bbdd8..0d48310 100644
--- a/wearable/wear/AgendaData/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/AgendaData/Wearable/src/main/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.example.android.wearable.agendadata" >
 
-    <uses-sdk android:minSdkVersion="20"
+    <uses-sdk android:minSdkVersion="23"
         android:targetSdkVersion="25" />
 
     <uses-feature android:name="android.hardware.type.watch" />
diff --git a/wearable/wear/AgendaData/template-params.xml b/wearable/wear/AgendaData/template-params.xml
index 55e7e58..10fa0ea 100644
--- a/wearable/wear/AgendaData/template-params.xml
+++ b/wearable/wear/AgendaData/template-params.xml
@@ -24,6 +24,7 @@
 
     <minSdk>18</minSdk>
     <targetSdkVersion>25</targetSdkVersion>
+    <minSdkVersionWear>23</minSdkVersionWear>
     <targetSdkVersionWear>25</targetSdkVersionWear>
 
     <dependency>com.android.support:design:24.0.0</dependency>
diff --git a/wearable/wear/AlwaysOn/Wearable/build.gradle b/wearable/wear/AlwaysOn/Wearable/build.gradle
index 244cc19..332123f 100644
--- a/wearable/wear/AlwaysOn/Wearable/build.gradle
+++ b/wearable/wear/AlwaysOn/Wearable/build.gradle
@@ -5,16 +5,24 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
 apply plugin: 'com.android.application'
 
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
+
 
 
 dependencies {
 
+    compile 'com.android.support:wear:26.0.0'
 
 
     compile 'com.google.android.gms:play-services-wearable:10.2.4'
@@ -35,7 +43,8 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 25
+
+        compileSdkVersion 26
 
     buildToolsVersion "25.0.3"
 
@@ -43,9 +52,12 @@
         versionCode 1
         versionName "1.0"
 
-        minSdkVersion 24
+        minSdkVersion 23
 
-        targetSdkVersion 25
+        targetSdkVersion 26
+
+        multiDexEnabled true
+
     }
 
     compileOptions {
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java b/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
index 3673545..6afd814 100644
--- a/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
+++ b/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
@@ -24,7 +24,6 @@
 import android.os.Handler;
 import android.os.Message;
 import android.support.wearable.activity.WearableActivity;
-import android.support.wearable.view.WatchViewStub;
 import android.util.Log;
 import android.widget.TextView;
 
@@ -124,22 +123,14 @@
                 ambientStateIntent,
                 PendingIntent.FLAG_UPDATE_CURRENT);
 
+        mTimeTextView = (TextView) findViewById(R.id.time);
+        mTimeStampTextView = (TextView) findViewById(R.id.time_stamp);
+        mStateTextView = (TextView) findViewById(R.id.state);
+        mUpdateRateTextView = (TextView) findViewById(R.id.update_rate);
+        mDrawCountTextView = (TextView) findViewById(R.id.draw_count);
 
-        /** Determines whether watch is round or square and applies proper view. **/
-        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
-        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
-            @Override
-            public void onLayoutInflated(WatchViewStub stub) {
+        refreshDisplayAndSetNextUpdate();
 
-                mTimeTextView = (TextView) stub.findViewById(R.id.time);
-                mTimeStampTextView = (TextView) stub.findViewById(R.id.time_stamp);
-                mStateTextView = (TextView) stub.findViewById(R.id.state);
-                mUpdateRateTextView = (TextView) stub.findViewById(R.id.update_rate);
-                mDrawCountTextView = (TextView) stub.findViewById(R.id.draw_count);
-
-                refreshDisplayAndSetNextUpdate();
-            }
-        });
     }
 
     /**
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
index d808e6b..82274a2 100644
--- a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!-- Copyright (C) 2015 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,15 +13,54 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<android.support.wearable.view.WatchViewStub
+<android.support.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/watch_view_stub"
+    android:background="@color/dark_grey"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:rectLayout="@layout/rect_activity_main"
-    app:roundLayout="@layout/round_activity_main"
-    tools:context=".MainActivity"
-    tools:deviceIds="wear">
-</android.support.wearable.view.WatchViewStub>
+    tools:context=".MainActivity">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        app:layout_box="all">
+
+        <TextView
+            android:id="@+id/time"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textSize="24sp"
+            android:text="Hello, time!"/>
+
+        <TextView
+            android:id="@+id/time_stamp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Hello, timestamp!"/>
+
+        <TextView
+            android:id="@+id/state"
+            android:textColor="@color/green"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Hello, state!"/>
+
+        <TextView
+            android:id="@+id/update_rate"
+            android:textColor="@color/green"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Hello, update rate!"/>
+
+        <TextView
+            android:id="@+id/draw_count"
+            android:textColor="@color/green"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Hello, draw count!"/>
+
+    </LinearLayout>
+</android.support.wear.widget.BoxInsetLayout>
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/rect_activity_main.xml b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/rect_activity_main.xml
deleted file mode 100644
index bfb8147..0000000
--- a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/rect_activity_main.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:paddingTop="@dimen/square_top_margin"
-    android:paddingLeft="@dimen/square_left_margin"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    tools:context=".MainActivity"
-    tools:deviceIds="wear_square">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textSize="24sp"
-        android:text="Hello, time!"/>
-
-    <TextView
-        android:id="@+id/time_stamp"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, timestamp!"/>
-
-    <TextView
-        android:id="@+id/state"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, state!"/>
-
-    <TextView
-        android:id="@+id/update_rate"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, update rate!"/>
-
-    <TextView
-        android:id="@+id/draw_count"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, draw count!"/>
-</LinearLayout>
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/round_activity_main.xml b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/round_activity_main.xml
deleted file mode 100644
index 8fa7a2d..0000000
--- a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/round_activity_main.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:paddingTop="@dimen/round_top_margin"
-    android:paddingLeft="@dimen/round_left_margin"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:layout_height="match_parent"
-    tools:context=".MainActivity"
-    tools:deviceIds="wear_round">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textSize="24sp"
-        android:text="Hello, time!"/>
-
-    <TextView
-        android:id="@+id/time_stamp"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, timestamp!"/>
-
-    <TextView
-        android:id="@+id/state"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, state!"/>
-
-    <TextView
-        android:id="@+id/update_rate"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, update rate!"/>
-
-    <TextView
-        android:id="@+id/draw_count"
-        android:textColor="@color/green"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="Hello, draw count!"/>
-</LinearLayout>
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/res/values/dimens.xml b/wearable/wear/AlwaysOn/Wearable/src/main/res/values/dimens.xml
deleted file mode 100644
index d44096a..0000000
--- a/wearable/wear/AlwaysOn/Wearable/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!-- Default screen margins, per the Android Design guidelines. -->
-    <dimen name="square_top_margin">24dp</dimen>
-    <dimen name="square_left_margin">16dp</dimen>
-
-    <dimen name="round_top_margin">34dp</dimen>
-    <dimen name="round_left_margin">34dp</dimen>
-</resources>
diff --git a/wearable/wear/AlwaysOn/template-params.xml b/wearable/wear/AlwaysOn/template-params.xml
index ce70a8d..2624ec4 100644
--- a/wearable/wear/AlwaysOn/template-params.xml
+++ b/wearable/wear/AlwaysOn/template-params.xml
@@ -19,7 +19,12 @@
     <group>Wearable</group>
     <package>com.example.android.wearable.wear.alwayson</package>
 
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <multiDexEnabled>true</multiDexEnabled>
+
+    <dependency_wearable>com.android.support:wear:26.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/RuntimePermissionsWear/Application/.build.gradle.ftl.swp b/wearable/wear/RuntimePermissionsWear/Application/.build.gradle.ftl.swp
new file mode 100644
index 0000000..30e2d05
--- /dev/null
+++ b/wearable/wear/RuntimePermissionsWear/Application/.build.gradle.ftl.swp
Binary files differ
diff --git a/wearable/wear/RuntimePermissionsWear/Shared/build.gradle b/wearable/wear/RuntimePermissionsWear/Shared/build.gradle
new file mode 100644
index 0000000..52e76e2
--- /dev/null
+++ b/wearable/wear/RuntimePermissionsWear/Shared/build.gradle
@@ -0,0 +1,55 @@
+
+buildscript {
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:2.3.3'
+    }
+}
+
+apply plugin: 'android-library'
+
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
+
+
+
+// The sample build uses multiple directories to
+// keep boilerplate and common code separate from
+// the main sample code.
+List<String> dirs = [
+    'main',     // main sample code; look here for the interesting stuff.
+    'common',   // components that are reused by multiple samples
+    'template'] // boilerplate code that is generated by the sample template process
+
+android {
+        compileSdkVersion 25
+
+    buildToolsVersion "25.0.3"
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 25
+    }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_7
+        targetCompatibility JavaVersion.VERSION_1_7
+    }
+
+    sourceSets {
+        main {
+            dirs.each { dir ->
+                java.srcDirs "src/${dir}/java"
+                res.srcDirs "src/${dir}/res"
+            }
+        }
+
+    }
+}
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
index b2a2595..774715f 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
@@ -26,7 +26,6 @@
 import android.support.annotation.NonNull;
 import android.support.v4.app.ActivityCompat;
 import android.support.wearable.activity.WearableActivity;
-import android.support.wearable.view.WatchViewStub;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
@@ -108,30 +107,22 @@
         mPhoneRequestingWearSensorPermission =
                 getIntent().getBooleanExtra(EXTRA_PROMPT_PERMISSION_FROM_PHONE, false);
 
-        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
-        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
-            @Override
-            public void onLayoutInflated(WatchViewStub stub) {
+        mWearBodySensorsPermissionButton =
+                (Button) findViewById(R.id.wear_body_sensors_permission_button);
 
-                mWearBodySensorsPermissionButton =
-                        (Button) stub.findViewById(R.id.wearBodySensorsPermissionButton);
+        if (mWearBodySensorsPermissionApproved) {
+            mWearBodySensorsPermissionButton.setCompoundDrawablesWithIntrinsicBounds(
+                    R.drawable.ic_permission_approved, 0, 0, 0);
+        }
 
-                if (mWearBodySensorsPermissionApproved) {
-                    mWearBodySensorsPermissionButton.setCompoundDrawablesWithIntrinsicBounds(
-                            R.drawable.ic_permission_approved, 0, 0, 0);
-                }
+        mPhoneStoragePermissionButton = (Button) findViewById(R.id.phone_storage_permission_button);
 
-                mPhoneStoragePermissionButton =
-                        (Button) stub.findViewById(R.id.phoneStoragePermissionButton);
+        mOutputTextView = (TextView) findViewById(R.id.output);
 
-                mOutputTextView = (TextView) stub.findViewById(R.id.output);
+        if (mPhoneRequestingWearSensorPermission) {
+            launchPermissionDialogForPhone();
+        }
 
-                if (mPhoneRequestingWearSensorPermission) {
-                    launchPermissionDialogForPhone();
-                }
-
-            }
-        });
 
         mGoogleApiClient = new GoogleApiClient.Builder(this)
                 .addApi(Wearable.API)
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
index 588ff9a..ede3a0c 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
@@ -12,15 +12,54 @@
   limitations under the License.
   -->
 
-<android.support.wearable.view.WatchViewStub
+<android.support.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/watch_view_stub"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:rectLayout="@layout/rect_activity_main"
-    app:roundLayout="@layout/round_activity_main"
-    tools:context=".MainActivity"
+    tools:context=".MainWearActivity"
     tools:deviceIds="wear">
-</android.support.wearable.view.WatchViewStub>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        app:layout_box="all">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <Button
+                android:id="@+id/wear_body_sensors_permission_button"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:drawableLeft="@drawable/ic_permission_denied"
+                android:textSize="8sp"
+                android:text="@string/button_wear_label_activity_main"
+                android:onClick="onClickWearBodySensors" />
+
+            <Button
+                android:id="@+id/phone_storage_permission_button"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:drawableLeft="@drawable/ic_permission_denied"
+                android:textSize="8sp"
+                android:text="@string/button_phone_label_activity_main"
+                android:onClick="onClickPhoneStorage" />
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/output"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="2"
+            android:paddingLeft="8dp"
+            android:paddingRight="8dp"
+            android:text="@string/hello_wear_activity_main" />
+    </LinearLayout>
+
+</android.support.wear.widget.BoxInsetLayout>
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/rect_activity_main.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/rect_activity_main.xml
index 5a44894..89627a7 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/rect_activity_main.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/rect_activity_main.xml
@@ -26,7 +26,7 @@
         android:layout_height="wrap_content">
 
         <Button
-            android:id="@+id/wearBodySensorsPermissionButton"
+            android:id="@+id/wear_body_sensors_permission_button"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
@@ -36,7 +36,7 @@
             android:onClick="onClickWearBodySensors" />
 
         <Button
-            android:id="@+id/phoneStoragePermissionButton"
+            android:id="@+id/phone_storage_permission_button"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/round_activity_main.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/round_activity_main.xml
index d35012d..90d8ccb 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/round_activity_main.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/round_activity_main.xml
@@ -29,7 +29,7 @@
         android:layout_height="wrap_content">
 
         <Button
-            android:id="@+id/wearBodySensorsPermissionButton"
+            android:id="@+id/wear_body_sensors_permission_button"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
@@ -39,7 +39,7 @@
             android:onClick="onClickWearBodySensors" />
 
         <Button
-            android:id="@+id/phoneStoragePermissionButton"
+            android:id="@+id/phone_storage_permission_button"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
diff --git a/wearable/wear/RuntimePermissionsWear/template-params.xml b/wearable/wear/RuntimePermissionsWear/template-params.xml
index 5b3f92e..73e075a 100644
--- a/wearable/wear/RuntimePermissionsWear/template-params.xml
+++ b/wearable/wear/RuntimePermissionsWear/template-params.xml
@@ -22,7 +22,11 @@
 
     <minSdk>18</minSdk>
     <targetSdkVersion>25</targetSdkVersion>
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <multiDexEnabled>true</multiDexEnabled>
 
     <wearable>
         <has_handheld_app>true</has_handheld_app>
@@ -31,6 +35,8 @@
     <dependency>com.android.support:appcompat-v7:25.3.1</dependency>
     <dependency>com.android.support:design:25.3.1</dependency>
 
+    <dependency_wearable>com.android.support:wear:26.0.0</dependency_wearable>
+
     <strings>
         <intro>
 <![CDATA[
diff --git a/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml b/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
index 663988f..de6e4ef 100644
--- a/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
+++ b/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
@@ -14,13 +14,12 @@
      limitations under the License.
 -->
 
-<android.support.wearable.view.BoxInsetLayout
+<android.support.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="@android:color/black"
     android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    >
+    android:layout_width="match_parent" >
 
     <RelativeLayout
         android:id="@+id/frame_layout"
@@ -45,4 +44,4 @@
             android:layout_alignParentTop="true"
             android:text="@string/speed_limit_header"/>
     </RelativeLayout>
-</android.support.wearable.view.BoxInsetLayout>
\ No newline at end of file
+</android.support.wear.widget.BoxInsetLayout>
\ No newline at end of file
diff --git a/wearable/wear/SpeedTracker/template-params.xml b/wearable/wear/SpeedTracker/template-params.xml
index f7ba20e..881d94e 100644
--- a/wearable/wear/SpeedTracker/template-params.xml
+++ b/wearable/wear/SpeedTracker/template-params.xml
@@ -15,8 +15,6 @@
  limitations under the License.
 -->
 
-
-
 <sample>
     <name>SpeedTracker</name>
     <group>Wearable</group>
@@ -24,13 +22,18 @@
 
     <minSdk>18</minSdk>
     <targetSdkVersion>25</targetSdkVersion>
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <multiDexEnabled>true</multiDexEnabled>
 
     <wearable>
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
     <dependency>com.android.support:design:25.3.1</dependency>
+    <dependency_wearable>com.android.support:wear:26.0.0</dependency_wearable>
 
     <dependency>com.google.android.gms:play-services-maps</dependency>
     <dependency>com.google.android.gms:play-services-location</dependency>
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
index c318135..748a936 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
+++ b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
@@ -5,17 +5,24 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
 apply plugin: 'com.android.application'
 
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
+
 
 
 dependencies {
 
-    compile 'com.android.support:appcompat-v7:25.1.1'
+    compile 'com.android.support:appcompat-v7:26.0.0'
 
 
     compile 'com.google.android.gms:play-services-wearable:10.2.4'
@@ -36,7 +43,8 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 25
+
+        compileSdkVersion 26
 
     buildToolsVersion "25.0.3"
 
@@ -44,9 +52,11 @@
         versionCode 1
         versionName "1.0"
 
-        minSdkVersion 25
+        minSdkVersion 23
 
-        targetSdkVersion 25
+        targetSdkVersion 26
+
+
     }
 
     compileOptions {
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/src/main/res/values/styles.xml b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/src/main/res/values/styles.xml
index 18b7f83..a8a19de 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/src/main/res/values/styles.xml
+++ b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/src/main/res/values/styles.xml
@@ -15,6 +15,6 @@
  limitations under the License.
 -->
 <resources>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
+    <style name="Theme.Base" parent="android:style/Theme.Material" />
     <style name="AppTheme" parent="Theme.Base" />
 </resources>
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
index 95403b7..91b86c1 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
+++ b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
@@ -19,16 +19,18 @@
     <group>Wearable</group>
     <package>com.example.android.wearable.wear.wearcomplicationproviderstestsuite</package>
 
-    <minSdk>25</minSdk>
-
+    <minSdk>18</minSdk>
     <targetSdkVersion>25</targetSdkVersion>
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
 
     <wearable>
         <has_handheld_app>false</has_handheld_app>
     </wearable>
 
-    <dependency_wearable>com.android.support:appcompat-v7:25.1.1</dependency_wearable>
+    <dependency_wearable>com.android.support:appcompat-v7:26.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearDrawers/Wearable/build.gradle b/wearable/wear/WearDrawers/Wearable/build.gradle
index 244cc19..332123f 100644
--- a/wearable/wear/WearDrawers/Wearable/build.gradle
+++ b/wearable/wear/WearDrawers/Wearable/build.gradle
@@ -5,16 +5,24 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
 apply plugin: 'com.android.application'
 
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
+
 
 
 dependencies {
 
+    compile 'com.android.support:wear:26.0.0'
 
 
     compile 'com.google.android.gms:play-services-wearable:10.2.4'
@@ -35,7 +43,8 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 25
+
+        compileSdkVersion 26
 
     buildToolsVersion "25.0.3"
 
@@ -43,9 +52,12 @@
         versionCode 1
         versionName "1.0"
 
-        minSdkVersion 24
+        minSdkVersion 23
 
-        targetSdkVersion 25
+        targetSdkVersion 26
+
+        multiDexEnabled true
+
     }
 
     compileOptions {
diff --git a/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java b/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
index 4fc2f2f..da46dc3 100644
--- a/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
+++ b/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
@@ -20,17 +20,14 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.support.wear.widget.drawer.WearableActionDrawerView;
+import android.support.wear.widget.drawer.WearableNavigationDrawerView;
 import android.support.wearable.activity.WearableActivity;
-import android.support.wearable.view.drawer.WearableActionDrawer;
-import android.support.wearable.view.drawer.WearableDrawerLayout;
-import android.support.wearable.view.drawer.WearableNavigationDrawer;
 import android.util.Log;
-import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
 import android.widget.ImageView;
 import android.widget.Toast;
 
@@ -40,13 +37,12 @@
  * Demonstrates use of Navigation and Action Drawers on Android Wear.
  */
 public class MainActivity extends WearableActivity implements
-        WearableActionDrawer.OnMenuItemClickListener {
+        MenuItem.OnMenuItemClickListener, WearableNavigationDrawerView.OnItemSelectedListener {
 
     private static final String TAG = "MainActivity";
 
-    private WearableDrawerLayout mWearableDrawerLayout;
-    private WearableNavigationDrawer mWearableNavigationDrawer;
-    private WearableActionDrawer mWearableActionDrawer;
+    private WearableNavigationDrawerView mWearableNavigationDrawer;
+    private WearableActionDrawerView mWearableActionDrawer;
 
     private ArrayList<Planet> mSolarSystem;
     private int mSelectedPlanet;
@@ -77,31 +73,22 @@
         FragmentManager fragmentManager = getFragmentManager();
         fragmentManager.beginTransaction().replace(R.id.content_frame, mPlanetFragment).commit();
 
-        // Main Wearable Drawer Layout that wraps all content
-        mWearableDrawerLayout = (WearableDrawerLayout) findViewById(R.id.drawer_layout);
 
         // Top Navigation Drawer
         mWearableNavigationDrawer =
-                (WearableNavigationDrawer) findViewById(R.id.top_navigation_drawer);
+                (WearableNavigationDrawerView) findViewById(R.id.top_navigation_drawer);
         mWearableNavigationDrawer.setAdapter(new NavigationAdapter(this));
+        // Peeks navigation drawer on the top.
+        mWearableNavigationDrawer.getController().peekDrawer();
+        mWearableNavigationDrawer.addOnItemSelectedListener(this);
 
         // Bottom Action Drawer
         mWearableActionDrawer =
-                (WearableActionDrawer) findViewById(R.id.bottom_action_drawer);
-
+                (WearableActionDrawerView) findViewById(R.id.bottom_action_drawer);
+        // Peeks action drawer on the bottom.
+        mWearableActionDrawer.getController().peekDrawer();
         mWearableActionDrawer.setOnMenuItemClickListener(this);
 
-        // Temporarily peeks the navigation and action drawers to ensure the user is aware of them.
-        ViewTreeObserver observer = mWearableDrawerLayout.getViewTreeObserver();
-        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
-            @Override
-            public void onGlobalLayout() {
-                mWearableDrawerLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-                mWearableDrawerLayout.peekDrawer(Gravity.TOP);
-                mWearableDrawerLayout.peekDrawer(Gravity.BOTTOM);
-            }
-        });
-
         /* Action Drawer Tip: If you only have a single action for your Action Drawer, you can use a
          * (custom) View to peek on top of the content by calling
          * mWearableActionDrawer.setPeekContent(View). Make sure you set a click listener to handle
@@ -154,7 +141,7 @@
                 break;
         }
 
-        mWearableDrawerLayout.closeDrawer(mWearableActionDrawer);
+        mWearableActionDrawer.getController().closeDrawer();
 
         if (toastMessage.length() > 0) {
             Toast toast = Toast.makeText(
@@ -168,8 +155,20 @@
         }
     }
 
+    // Updates content when user changes between items in the navigation drawer.
+    @Override
+    public void onItemSelected(int position) {
+        Log.d(TAG, "WearableNavigationDrawerView triggered onItemSelected(): " + position);
+        mSelectedPlanet = position;
+
+        String selectedPlanetImage = mSolarSystem.get(mSelectedPlanet).getImage();
+        int drawableId =
+                getResources().getIdentifier(selectedPlanetImage, "drawable", getPackageName());
+        mPlanetFragment.updatePlanet(drawableId);
+    }
+
     private final class NavigationAdapter
-            extends WearableNavigationDrawer.WearableNavigationDrawerAdapter {
+            extends WearableNavigationDrawerView.WearableNavigationDrawerAdapter {
 
         private final Context mContext;
 
@@ -183,17 +182,6 @@
         }
 
         @Override
-        public void onItemSelected(int position) {
-            Log.d(TAG, "WearableNavigationDrawerAdapter.onItemSelected(): " + position);
-            mSelectedPlanet = position;
-
-            String selectedPlanetImage = mSolarSystem.get(mSelectedPlanet).getImage();
-            int drawableId =
-                    getResources().getIdentifier(selectedPlanetImage, "drawable", getPackageName());
-            mPlanetFragment.updatePlanet(drawableId);
-        }
-
-        @Override
         public String getItemText(int pos) {
             return mSolarSystem.get(pos).getName();
         }
@@ -222,8 +210,8 @@
         }
 
         @Override
-        public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                                 Bundle savedInstanceState) {
+        public View onCreateView(
+                LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
             View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
 
             mImageView = ((ImageView) rootView.findViewById(R.id.image));
diff --git a/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
index cd23b74..02b1397 100644
--- a/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<android.support.wearable.view.drawer.WearableDrawerLayout
+<android.support.wear.widget.drawer.WearableDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
@@ -22,8 +22,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/black"
-    tools:context="com.example.android.wearable.wear.weardrawers.MainActivity"
-    tools:deviceIds="wear">
+    tools:context="com.example.android.wearable.wear.weardrawers.MainActivity">
 
     <android.support.v4.widget.NestedScrollView
         android:id="@+id/content"
@@ -38,17 +37,18 @@
 
     </android.support.v4.widget.NestedScrollView>
 
-    <android.support.wearable.view.drawer.WearableNavigationDrawer
+    <android.support.wear.widget.drawer.WearableNavigationDrawerView
         android:id="@+id/top_navigation_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/grey" />
+        android:background="@color/grey"
+        app:navigationStyle="multiPage" />
 
-    <android.support.wearable.view.drawer.WearableActionDrawer
+    <android.support.wear.widget.drawer.WearableActionDrawerView
         android:id="@+id/bottom_action_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
-        app:action_menu="@menu/action_drawer_menu" />
+        app:actionMenu="@menu/action_drawer_menu" />
 
-</android.support.wearable.view.drawer.WearableDrawerLayout>
\ No newline at end of file
+</android.support.wear.widget.drawer.WearableDrawerLayout>
\ No newline at end of file
diff --git a/wearable/wear/WearDrawers/Wearable/src/main/res/values/strings.xml b/wearable/wear/WearDrawers/Wearable/src/main/res/values/strings.xml
index 0a0cd87..b423003 100644
--- a/wearable/wear/WearDrawers/Wearable/src/main/res/values/strings.xml
+++ b/wearable/wear/WearDrawers/Wearable/src/main/res/values/strings.xml
@@ -14,7 +14,7 @@
   limitations under the License.
 -->
 <resources>
-    <string name="app_name">Wearable Drawer Layout</string>
+    <string name="app_name">Wear Drawers</string>
 
     <!--
     Reference name for each planet's information array.
diff --git a/wearable/wear/WearDrawers/template-params.xml b/wearable/wear/WearDrawers/template-params.xml
index 01c7fb0..ee02d21 100644
--- a/wearable/wear/WearDrawers/template-params.xml
+++ b/wearable/wear/WearDrawers/template-params.xml
@@ -20,8 +20,13 @@
     <group>Wearable</group>
     <package>com.example.android.wearable.wear.weardrawers</package>
 
-    <targetSdkVersion>25</targetSdkVersion>
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
+
+    <multiDexEnabled>true</multiDexEnabled>
+
+    <dependency_wearable>com.android.support:wear:26.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle b/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
index 244cc19..fa46e54 100644
--- a/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
+++ b/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
@@ -5,20 +5,26 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
 apply plugin: 'com.android.application'
 
-
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
 
 dependencies {
 
+    compile 'com.android.support:wear:26.0.0'
 
 
     compile 'com.google.android.gms:play-services-wearable:10.2.4'
-    compile 'com.android.support:support-v13:25.3.1'
+    compile 'com.android.support:support-v13:26.0.0'
 
     provided 'com.google.android.wearable:wearable:2.0.3'
 
@@ -35,7 +41,7 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 25
+    compileSdkVersion 26
 
     buildToolsVersion "25.0.3"
 
@@ -45,7 +51,7 @@
 
         minSdkVersion 24
 
-        targetSdkVersion 25
+        targetSdkVersion 26
     }
 
     compileOptions {
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
index 9b716d9..b7c8efd 100644
--- a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
@@ -46,7 +46,7 @@
 
     </RelativeLayout>
 
-    <android.support.wearable.view.BoxInsetLayout
+    <android.support.wear.widget.BoxInsetLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -97,5 +97,5 @@
                 android:visibility="gone" />
 
         </RelativeLayout>
-    </android.support.wearable.view.BoxInsetLayout>
+    </android.support.wear.widget.BoxInsetLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/wearable/wear/WearHighBandwidthNetworking/template-params.xml b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
index 4e80b4f..060ea4c 100644
--- a/wearable/wear/WearHighBandwidthNetworking/template-params.xml
+++ b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
@@ -25,10 +25,16 @@
     <minSdk>24</minSdk>
     <minSdkVersionWear>24</minSdkVersionWear>
     <targetSdkVersion>25</targetSdkVersion>
-    <targetSdkVersionWear>25</targetSdkVersionWear>
+
+    <minSdkVersionWear>23</minSdkVersionWear>
+    <compileSdkVersionWear>26</compileSdkVersionWear>
+    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <multiDexEnabled>true</multiDexEnabled>
 
     <!-- Include additional dependencies here.-->
     <!-- dependency>com.google.android.gms:play-services:5.0.+</dependency -->
+    <dependency_wearable>com.android.support:wear:26.0.0</dependency_wearable>
+
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearSpeakerSample/build.gradle b/wearable/wear/WearSpeakerSample/build.gradle
index 49d7d21..18a3904 100644
--- a/wearable/wear/WearSpeakerSample/build.gradle
+++ b/wearable/wear/WearSpeakerSample/build.gradle
@@ -21,7 +21,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle b/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
index 3d9071d..3c1289e 100644
--- a/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
+++ b/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
@@ -5,12 +5,19 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.2'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
 apply plugin: 'com.android.application'
 
+repositories {
+    jcenter()
+    maven {
+        url 'https://maven.google.com'
+    }
+}
+
 
 
 dependencies {
@@ -46,6 +53,8 @@
         minSdkVersion 23
 
         targetSdkVersion 25
+
+
     }
 
     compileOptions {
