Fix ManifestMerger issues am: 4a5ff8044c
am: 0588a4e121

Change-Id: I191f10abea34d05b036f3a2a57572fc58fef4f26
diff --git a/library/Android.mk b/library/Android.mk
index 6cbfae8..4b828b6 100644
--- a/library/Android.mk
+++ b/library/Android.mk
@@ -7,7 +7,7 @@
 
 LOCAL_USE_AAPT2 := true
 LOCAL_JAVA_LIBRARIES := \
-    android-support-annotations
+    androidx.annotation_annotation
 LOCAL_MANIFEST_FILE := main/AndroidManifest.xml
 LOCAL_MODULE := setup-wizard-lib
 LOCAL_RESOURCE_DIR := \
@@ -41,13 +41,13 @@
 LOCAL_SRC_FILES := $(call all-java-files-under, main/src gingerbread/src recyclerview/src)
 
 LOCAL_JAVA_LIBRARIES := \
-    android-support-annotations
+    androidx.annotation_annotation
 
 LOCAL_SHARED_ANDROID_LIBRARIES := \
-    android-support-compat \
-    android-support-core-ui \
-    android-support-v7-appcompat \
-    android-support-v7-recyclerview
+    androidx.core_core \
+    androidx.legacy_legacy-support-core-ui \
+    androidx.appcompat_appcompat \
+    androidx.recyclerview_recyclerview
 
 LOCAL_MIN_SDK_VERSION := 14
 
diff --git a/library/common-gingerbread.mk b/library/common-gingerbread.mk
index 70231df..2ab06b6 100644
--- a/library/common-gingerbread.mk
+++ b/library/common-gingerbread.mk
@@ -19,10 +19,10 @@
   LOCAL_STATIC_ANDROID_LIBRARIES += setup-wizard-lib-gingerbread-compat
 endif
 
-ifeq (,$(findstring android-support-v7-appcompat,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
-  LOCAL_STATIC_ANDROID_LIBRARIES += android-support-v7-appcompat
+ifeq (,$(findstring androidx.appcompat_appcompat,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
+  LOCAL_STATIC_ANDROID_LIBRARIES += androidx.appcompat_appcompat
 endif
 
-ifeq (,$(findstring android-support-v7-recyclerview,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
-  LOCAL_STATIC_ANDROID_LIBRARIES += android-support-v7-recyclerview
+ifeq (,$(findstring androidx.recyclerview_recyclerview,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
+  LOCAL_STATIC_ANDROID_LIBRARIES += androidx.recyclerview_recyclerview
 endif
diff --git a/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
index 94016f4..a7084c5 100644
--- a/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
index 17811ae..ed3c3b0 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
index 97fed92..be42712 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
index f874955..d7bc4e3 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
index cb6a422..dcc1f3c 100644
--- a/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/layout/suw_items_expandable_switch.xml b/library/gingerbread/res/layout/suw_items_expandable_switch.xml
index 21c2c22..f134b3f 100644
--- a/library/gingerbread/res/layout/suw_items_expandable_switch.xml
+++ b/library/gingerbread/res/layout/suw_items_expandable_switch.xml
@@ -97,7 +97,7 @@
         android:layout_marginTop="@dimen/suw_switch_divider_padding_top"
         android:background="?android:attr/listDivider" />
 
-    <android.support.v7.widget.SwitchCompat
+    <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/suw_items_switch"
         style="@style/SuwSwitchStyle.Divided"
         android:layout_width="wrap_content"
diff --git a/library/gingerbread/res/layout/suw_items_switch.xml b/library/gingerbread/res/layout/suw_items_switch.xml
index 319d7f7..5614044 100644
--- a/library/gingerbread/res/layout/suw_items_switch.xml
+++ b/library/gingerbread/res/layout/suw_items_switch.xml
@@ -17,17 +17,17 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    style="@style/SuwItemContainer.Verbose"
+    style="@style/SuwItemContainer"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:clipToPadding="false"
+    android:baselineAligned="false"
     android:orientation="horizontal">
 
     <FrameLayout
         android:id="@+id/suw_items_icon_container"
         android:layout_width="@dimen/suw_items_icon_container_width"
         android:layout_height="wrap_content"
-        android:layout_gravity="top"
+        android:layout_gravity="center_vertical"
         android:gravity="start">
 
         <ImageView
@@ -41,13 +41,13 @@
     <LinearLayout
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginBottom="@dimen/suw_items_verbose_padding_bottom_extra"
+        android:layout_marginBottom="@dimen/suw_items_padding_bottom_extra"
         android:layout_weight="1"
         android:orientation="vertical">
 
         <com.android.setupwizardlib.view.RichTextView
             android:id="@+id/suw_items_title"
-            style="@style/SuwItemTitle.Verbose"
+            style="@style/SuwItemTitle"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="start"
@@ -67,7 +67,7 @@
 
     </LinearLayout>
 
-    <android.support.v7.widget.SwitchCompat
+    <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/suw_items_switch"
         style="@style/SuwSwitchStyle"
         android:layout_width="wrap_content"
diff --git a/library/gingerbread/res/layout/suw_items_switch_verbose.xml b/library/gingerbread/res/layout/suw_items_switch_verbose.xml
new file mode 100644
index 0000000..8911acc
--- /dev/null
+++ b/library/gingerbread/res/layout/suw_items_switch_verbose.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2016 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"
+    style="@style/SuwItemContainer.Verbose"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:baselineAligned="false"
+    android:clipToPadding="false"
+    android:orientation="horizontal"
+    tools:ignore="UnusedResources">
+    <!-- Ignore UnusedResources: can be used by clients -->
+
+    <FrameLayout
+        android:id="@+id/suw_items_icon_container"
+        android:layout_width="@dimen/suw_items_icon_container_width"
+        android:layout_height="wrap_content"
+        android:layout_gravity="top"
+        android:gravity="start">
+
+        <ImageView
+            android:id="@+id/suw_items_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            tools:ignore="ContentDescription" />
+
+    </FrameLayout>
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/suw_items_verbose_padding_bottom_extra"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+        <com.android.setupwizardlib.view.RichTextView
+            android:id="@+id/suw_items_title"
+            style="@style/SuwItemTitle.Verbose"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:labelFor="@+id/suw_items_switch"
+            android:textAlignment="viewStart"
+            tools:ignore="UnusedAttribute" />
+
+        <com.android.setupwizardlib.view.RichTextView
+            android:id="@+id/suw_items_summary"
+            style="@style/SuwItemSummary"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:textAlignment="viewStart"
+            android:visibility="gone"
+            tools:ignore="UnusedAttribute" />
+
+    </LinearLayout>
+
+    <androidx.appcompat.widget.SwitchCompat
+        android:id="@+id/suw_items_switch"
+        style="@style/SuwSwitchStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="center_vertical" />
+
+</LinearLayout>
diff --git a/library/gingerbread/res/values-v21/styles.xml b/library/gingerbread/res/values-v21/styles.xml
new file mode 100644
index 0000000..3c0c254
--- /dev/null
+++ b/library/gingerbread/res/values-v21/styles.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2018 Google Inc.
+
+    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 xmlns:tools="http://schemas.android.com/tools">
+
+    <!-- Button styles -->
+
+    <style name="SuwGlifButton.Tertiary" parent="SuwGlifButton.BaseTertiary">
+        <item name="android:fontFamily">sans-serif-medium</item>
+        <item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
+    </style>
+
+</resources>
diff --git a/library/gingerbread/res/values/styles.xml b/library/gingerbread/res/values/styles.xml
index 241f037..b008e1e 100644
--- a/library/gingerbread/res/values/styles.xml
+++ b/library/gingerbread/res/values/styles.xml
@@ -41,6 +41,7 @@
         <item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwCardBackground">@drawable/suw_card_bg_dark</item>
         <item name="suwDividerInsetEnd">0dp</item>
         <item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
@@ -75,6 +76,7 @@
         <item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwCardBackground">@drawable/suw_card_bg_light</item>
         <item name="suwDividerInsetEnd">0dp</item>
         <item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
@@ -109,7 +111,8 @@
         <item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
-        <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonFontFamily">sans-serif-medium</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwColorPrimary">?attr/colorPrimary</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -148,7 +151,8 @@
         <item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
-        <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonFontFamily">sans-serif-medium</item>
+        <item name="suwButtonHighlightAlpha">0.12</item>
         <item name="suwColorPrimary">?attr/colorPrimary</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -262,6 +266,13 @@
         <item name="colorControlHighlight">@color/suw_flat_button_highlight</item>
     </style>
 
+    <!-- Ignore UnusedResources: used by clients -->
+    <style name="SuwGlifButton.Tertiary"
+        parent="SuwGlifButton.BaseTertiary"
+        tools:ignore="UnusedResources">
+        <item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
+    </style>
+
     <!-- Card layout (for tablets) -->
 
     <style name="TextAppearance.SuwCardTitle" parent="@style/TextAppearance.AppCompat.Display1">
@@ -279,6 +290,10 @@
     <style name="SuwFourColorIndeterminateProgressBar" parent="SuwBase.ProgressBarLarge">
         <item name="android:layout_gravity">center</item>
         <item name="android:indeterminate">true</item>
+        <item name="android:paddingEnd" tools:targetApi="17" >@dimen/suw_glif_progress_bar_padding</item>
+        <item name="android:paddingLeft">@dimen/suw_glif_progress_bar_padding</item>
+        <item name="android:paddingRight">@dimen/suw_glif_progress_bar_padding</item>
+        <item name="android:paddingStart" tools:targetApi="17" >@dimen/suw_glif_progress_bar_padding</item>
     </style>
 
     <!-- Navigation bar styles -->
diff --git a/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java b/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
index 7459d77..8d828ac 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
@@ -18,11 +18,12 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.support.v7.widget.SwitchCompat;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.CompoundButton;
 
+import androidx.appcompat.widget.SwitchCompat;
+
 import com.android.setupwizardlib.R;
 
 /**
diff --git a/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java b/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
index 9965aa0..a0ea379 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
@@ -19,12 +19,6 @@
 import android.graphics.Rect;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
-import android.support.v4.widget.ExploreByTouchHelper;
 import android.text.Layout;
 import android.text.Spanned;
 import android.text.style.ClickableSpan;
@@ -35,6 +29,13 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
+import androidx.customview.widget.ExploreByTouchHelper;
+
 import java.util.List;
 
 /**
@@ -63,7 +64,7 @@
  * </pre>
  *
  * @see com.android.setupwizardlib.view.RichTextView
- * @see android.support.v4.widget.ExploreByTouchHelper
+ * @see androidx.customview.widget.ExploreByTouchHelper
  */
 public class LinkAccessibilityHelper extends AccessibilityDelegateCompat {
 
@@ -136,7 +137,7 @@
      *
      * @see ExploreByTouchHelper#dispatchHoverEvent(MotionEvent)
      */
-    public final boolean dispatchHoverEvent(MotionEvent event) {
+    public boolean dispatchHoverEvent(MotionEvent event) {
         return mDelegate instanceof ExploreByTouchHelper
                 && ((ExploreByTouchHelper) mDelegate).dispatchHoverEvent(event);
     }
diff --git a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
index d7a3c2e..872cc9f 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
@@ -23,10 +23,11 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
 import android.os.Build;
-import android.support.annotation.NonNull;
 import android.util.AttributeSet;
 import android.widget.Button;
 
+import androidx.annotation.NonNull;
+
 /**
  * Button for navigation bar, which includes tinting of its compound drawables to be used for dark
  * and light themes.
diff --git a/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java b/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
index 1b1f82e..1ee3219 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
@@ -20,8 +20,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.AppCompatTextView;
 import android.text.Annotation;
 import android.text.SpannableString;
 import android.text.Spanned;
@@ -32,6 +30,9 @@
 import android.util.Log;
 import android.view.MotionEvent;
 
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.core.view.ViewCompat;
+
 import com.android.setupwizardlib.span.LinkSpan;
 import com.android.setupwizardlib.span.LinkSpan.OnLinkClickListener;
 import com.android.setupwizardlib.span.SpanHelper;
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
index b97905c..f5b8253 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
@@ -18,7 +18,6 @@
 
 import static org.junit.Assert.assertTrue;
 
-import android.support.annotation.StyleRes;
 import android.support.test.annotation.UiThreadTest;
 import android.support.test.filters.SmallTest;
 import android.support.test.rule.UiThreadTestRule;
@@ -27,6 +26,8 @@
 import android.widget.Button;
 import android.widget.LinearLayout;
 
+import androidx.annotation.StyleRes;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.test.util.DrawingTestHelper;
 
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
index 154339a..d3518f4 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
@@ -16,7 +16,7 @@
 
 package com.android.setupwizardlib.test.util;
 
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
 
 /**
  * Activity to test view and drawable drawing behaviors. This is used to make sure that the drawing
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
index 6228e6f..da07b40 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
@@ -28,19 +28,20 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v4.text.BidiFormatter;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
-import android.support.v4.widget.ExploreByTouchHelper;
 import android.text.SpannableStringBuilder;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
-import android.view.MotionEvent;
 import android.view.View;
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
+import androidx.core.text.BidiFormatter;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
+import androidx.customview.widget.ExploreByTouchHelper;
+
 import com.android.setupwizardlib.span.LinkSpan;
 import com.android.setupwizardlib.util.LinkAccessibilityHelper.PreOLinkAccessibilityHelper;
 
@@ -241,7 +242,7 @@
     @Test
     public void testMethodDelegation() {
         initTextView();
-        ExploreByTouchHelper delegate = mock(TestPreOLinkAccessibilityHelper.class);
+        AccessibilityDelegateCompat delegate = mock(AccessibilityDelegateCompat.class);
         LinkAccessibilityHelper helper = new LinkAccessibilityHelper(delegate);
 
         AccessibilityEvent accessibilityEvent =
@@ -271,10 +272,6 @@
                 same(mTextView),
                 same(accessibilityEvent));
 
-        MotionEvent motionEvent = MotionEvent.obtain(0, 0, 0, 0, 0, 0);
-        helper.dispatchHoverEvent(motionEvent);
-        verify(delegate).dispatchHoverEvent(eq(motionEvent));
-
         helper.getAccessibilityNodeProvider(mTextView);
         verify(delegate).getAccessibilityNodeProvider(same(mTextView));
 
diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
index dd26af9..4716c4d 100644
--- a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
+++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
@@ -26,20 +26,23 @@
 import android.annotation.TargetApi;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
-import android.support.v7.widget.SwitchCompat;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.appcompat.widget.SwitchCompat;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
 import org.robolectric.annotation.Config;
 
 @RunWith(SuwLibRobolectricTestRunner.class)
@@ -49,11 +52,24 @@
     private SwitchCompat mSwitch;
 
     @Test
-    public void testLayout() {
+    public void defaultLayout_baselineAligned_shouldBeFalse() {
         Assume.assumeTrue(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP);
-        SwitchItem item = new SwitchItem();
         LayoutInflater inflater = LayoutInflater.from(application);
-        ViewGroup layout = (ViewGroup) inflater.inflate(item.getDefaultLayoutResource(), null);
+        SwitchItem item = new SwitchItem();
+        LinearLayout layout = (LinearLayout) inflater.inflate(item.getDefaultLayoutResource(),
+                null);
+        assertThat(layout.isBaselineAligned()).isFalse();
+    }
+
+    @Test
+    public void verboseLayout_clipPadding_shouldBeFalse() {
+        Assume.assumeTrue(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP);
+        LayoutInflater inflater = LayoutInflater.from(application);
+        SwitchItem item = new SwitchItem(application,
+                Robolectric.buildAttributeSet()
+                        .addAttribute(android.R.attr.layout, "@layout/suw_items_switch_verbose")
+                        .build());
+        ViewGroup layout = (ViewGroup) inflater.inflate(item.getLayoutResource(), null);
         assertThat(layout.getClipToPadding()).isFalse();
     }
 
diff --git a/library/main/res/color-v23/suw_flat_button_highlight.xml b/library/main/res/color-v23/suw_flat_button_highlight.xml
index c5be14f..cdb1305 100644
--- a/library/main/res/color-v23/suw_flat_button_highlight.xml
+++ b/library/main/res/color-v23/suw_flat_button_highlight.xml
@@ -17,5 +17,5 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:color="?android:attr/colorAccent"
-        android:alpha="0.24" />
+        android:alpha="?attr/suwButtonHighlightAlpha" />
 </selector>
diff --git a/library/main/res/values-as/strings.xml b/library/main/res/values-as/strings.xml
new file mode 100644
index 0000000..be6e06b
--- /dev/null
+++ b/library/main/res/values-as/strings.xml
@@ -0,0 +1,23 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="suw_next_button_label" msgid="7269625133873553978">"পৰৱৰ্তী"</string>
+    <string name="suw_back_button_label" msgid="1460929053642711025">"উভতি যাওক"</string>
+    <string name="suw_more_button_label" msgid="7769076059705546563">"অধিক"</string>
+</resources>
diff --git a/library/main/res/values-or/strings.xml b/library/main/res/values-or/strings.xml
new file mode 100644
index 0000000..c4d12ff
--- /dev/null
+++ b/library/main/res/values-or/strings.xml
@@ -0,0 +1,23 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="suw_next_button_label" msgid="7269625133873553978">"ପରବର୍ତ୍ତୀ"</string>
+    <string name="suw_back_button_label" msgid="1460929053642711025">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+    <string name="suw_more_button_label" msgid="7769076059705546563">"ଅଧିକ"</string>
+</resources>
diff --git a/library/main/res/values-v21/styles.xml b/library/main/res/values-v21/styles.xml
index d2c27f6..fe71289 100644
--- a/library/main/res/values-v21/styles.xml
+++ b/library/main/res/values-v21/styles.xml
@@ -38,10 +38,6 @@
 
     <!-- Button styles -->
 
-    <style name="SuwGlifButton.Tertiary" parent="SuwGlifButton.BaseTertiary">
-        <item name="android:fontFamily">sans-serif-medium</item>
-    </style>
-
     <style name="SuwBase.ProgressBarLarge" parent="@android:style/Widget.Material.ProgressBar.Large" />
 
     <style name="SuwFourColorIndeterminateProgressBar" parent="SuwBase.ProgressBarLarge">
@@ -50,6 +46,8 @@
         <item name="android:indeterminateDrawable">@drawable/suw_fourcolor_progress_bar</item>
         <item name="android:indeterminateTint">@null</item>
         <item name="android:indeterminateTintMode">@null</item>
+        <item name="android:paddingStart">@dimen/suw_glif_progress_bar_padding</item>
+        <item name="android:paddingEnd">@dimen/suw_glif_progress_bar_padding</item>
     </style>
 
     <!-- Items styles -->
diff --git a/library/main/res/values/attrs.xml b/library/main/res/values/attrs.xml
index b3fcfe9..86b27fa 100644
--- a/library/main/res/values/attrs.xml
+++ b/library/main/res/values/attrs.xml
@@ -21,6 +21,7 @@
     <attr name="suwLayoutTheme" format="reference" />
     <attr name="suwMarginSides" format="dimension|reference" />
     <attr name="suwEditTextBackgroundColor" format="color" />
+    <attr name="suwButtonHighlightAlpha" format="float" />
 
     <!-- Subset of values in "gravity" in frameworks/base/core/res/res/values/attrs.xml. Only
          horizontal values are listed here as the header does not support vertical gravity. -->
diff --git a/library/main/res/values/dimens.xml b/library/main/res/values/dimens.xml
index 1a8b516..63980ab 100644
--- a/library/main/res/values/dimens.xml
+++ b/library/main/res/values/dimens.xml
@@ -31,7 +31,7 @@
     <dimen name="suw_glif_footer_padding_vertical">8dp</dimen>
     <dimen name="suw_glif_footer_min_height">72dp</dimen>
     <dimen name="suw_glif_margin_sides">24dp</dimen>
-    <dimen name="suw_glif_margin_top">48dp</dimen>
+    <dimen name="suw_glif_margin_top">56dp</dimen>
 
     <dimen name="suw_glif_v3_button_corner_radius">4dp</dimen>
 
@@ -98,7 +98,7 @@
     <!-- This is the extra spacing required to make the leading exactly 32sp -->
     <dimen name="suw_header_title_line_spacing_extra">3.67sp</dimen>
 
-    <dimen name="suw_glif_header_title_margin_top">15dp</dimen>
+    <dimen name="suw_glif_header_title_margin_top">16dp</dimen>
     <dimen name="suw_glif_header_title_margin_bottom">2dp</dimen>
 
     <dimen name="suw_glif_icon_max_height">32dp</dimen>
@@ -139,6 +139,7 @@
     <!-- The margin to compensate for the padding built-in to the widget itself -->
     <dimen name="suw_progress_bar_margin_vertical">-7dp</dimen>
     <dimen name="suw_glif_progress_bar_margin_vertical">7dp</dimen>
+    <dimen name="suw_glif_progress_bar_padding">40dp</dimen>
 
     <!-- Edit Text dimensions -->
     <dimen name="suw_edit_text_min_height">56dp</dimen>
diff --git a/library/main/res/values/styles.xml b/library/main/res/values/styles.xml
index fa2a080..6c813b8 100644
--- a/library/main/res/values/styles.xml
+++ b/library/main/res/values/styles.xml
@@ -166,7 +166,7 @@
         <!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins -->
         <item name="android:layout_gravity">top</item>
         <item name="android:ellipsize">end</item>
-        <item name="android:maxLines">2</item>
+        <item name="android:maxLines">3</item>
         <item name="android:textSize">@dimen/suw_header_title_size</item>
     </style>
 
@@ -204,11 +204,6 @@
         <item name="android:textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
     </style>
 
-    <!-- Ignore UnusedResources: used by clients -->
-    <style name="SuwGlifButton.Tertiary"
-        parent="SuwGlifButton.BaseTertiary"
-        tools:ignore="UnusedResources" />
-
     <!-- The start and end paddings are asymmetric because start buttons are borderless buttons
          which aligns the text label. -->
     <style name="SuwGlifButtonBar">
diff --git a/library/main/src/com/android/setupwizardlib/GlifLayout.java b/library/main/src/com/android/setupwizardlib/GlifLayout.java
index e1d9d70..9b30c2f 100644
--- a/library/main/src/com/android/setupwizardlib/GlifLayout.java
+++ b/library/main/src/com/android/setupwizardlib/GlifLayout.java
@@ -24,9 +24,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -36,6 +33,10 @@
 import android.widget.ScrollView;
 import android.widget.TextView;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.template.ButtonFooterMixin;
 import com.android.setupwizardlib.template.ColoredHeaderMixin;
 import com.android.setupwizardlib.template.HeaderMixin;
diff --git a/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java b/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
index c1d968a..caf92ac 100644
--- a/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
+++ b/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
@@ -31,8 +31,9 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 
 import java.lang.ref.SoftReference;
 
diff --git a/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java b/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
index 5a39d70..d520873 100644
--- a/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
+++ b/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
@@ -17,10 +17,11 @@
 package com.android.setupwizardlib;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.widget.ListAdapter;
 
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.items.ItemAdapter;
 
 /**
diff --git a/library/main/src/com/android/setupwizardlib/TemplateLayout.java b/library/main/src/com/android/setupwizardlib/TemplateLayout.java
index d270091..0108880 100644
--- a/library/main/src/com/android/setupwizardlib/TemplateLayout.java
+++ b/library/main/src/com/android/setupwizardlib/TemplateLayout.java
@@ -20,9 +20,6 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.Keep;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StyleRes;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -30,6 +27,10 @@
 import android.view.ViewTreeObserver;
 import android.widget.FrameLayout;
 
+import androidx.annotation.Keep;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StyleRes;
+
 import com.android.setupwizardlib.template.Mixin;
 import com.android.setupwizardlib.util.FallbackThemeWrapper;
 
@@ -229,7 +230,7 @@
      * stripped out by proguard when using this with {@link android.animation.ObjectAnimator}. You
      * may need to add
      * <code>
-     *     -keep @android.support.annotation.Keep class *
+     *     -keep @androidx.annotation.Keep class *
      * </code>
      * to your proguard configuration if you are seeing mysterious {@link NoSuchMethodError} at
      * runtime.
diff --git a/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java b/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
index c7af410..8ffa943 100644
--- a/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
+++ b/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
@@ -17,11 +17,12 @@
 package com.android.setupwizardlib.items;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.InflateException;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.lang.reflect.Constructor;
 import java.util.HashMap;
 
diff --git a/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java b/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
index 141438b..0b12aca 100644
--- a/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
+++ b/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
@@ -18,12 +18,13 @@
 
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
-import android.support.annotation.NonNull;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.Xml;
 import android.view.InflateException;
 
+import androidx.annotation.NonNull;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
diff --git a/library/main/src/com/android/setupwizardlib/span/LinkSpan.java b/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
index 26a3d16..3dd783b 100644
--- a/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
+++ b/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
@@ -20,7 +20,6 @@
 import android.content.ContextWrapper;
 import android.graphics.Typeface;
 import android.os.Build;
-import android.support.annotation.Nullable;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.TextPaint;
@@ -29,6 +28,8 @@
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.annotation.Nullable;
+
 /**
  * A clickable span that will listen for click events and send it back to the context. To use this
  * class, implement {@link OnLinkClickListener} in your TextView, or use
diff --git a/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java b/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
index 01dbc29..a8580a3 100644
--- a/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
@@ -18,10 +18,6 @@
 
 import android.annotation.SuppressLint;
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.annotation.StyleRes;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -30,6 +26,11 @@
 import android.widget.LinearLayout;
 import android.widget.LinearLayout.LayoutParams;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.annotation.StyleRes;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
 
diff --git a/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java b/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
index bd3f210..604de9a 100644
--- a/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
@@ -17,12 +17,13 @@
 package com.android.setupwizardlib.template;
 
 import android.content.res.TypedArray;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.widget.TextView;
 
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
 
diff --git a/library/main/src/com/android/setupwizardlib/template/IconMixin.java b/library/main/src/com/android/setupwizardlib/template/IconMixin.java
index 5386c92..5f5c915 100644
--- a/library/main/src/com/android/setupwizardlib/template/IconMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/IconMixin.java
@@ -19,11 +19,12 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.DrawableRes;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.annotation.DrawableRes;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
 
diff --git a/library/main/src/com/android/setupwizardlib/template/ListMixin.java b/library/main/src/com/android/setupwizardlib/template/ListMixin.java
index 10e85a9..cbc29b5 100644
--- a/library/main/src/com/android/setupwizardlib/template/ListMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ListMixin.java
@@ -21,15 +21,16 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.HeaderViewListAdapter;
 import android.widget.ListAdapter;
 import android.widget.ListView;
 
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
 import com.android.setupwizardlib.items.ItemAdapter;
diff --git a/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java b/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
index f55d06d..faea305 100644
--- a/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
+++ b/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
@@ -16,13 +16,14 @@
 
 package com.android.setupwizardlib.template;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.Log;
 import android.widget.AbsListView;
 import android.widget.ListAdapter;
 import android.widget.ListView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
 
 /**
diff --git a/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java b/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
index eecf99c..504b2f0 100644
--- a/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
@@ -19,11 +19,12 @@
 import android.content.res.ColorStateList;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
 import android.view.View;
 import android.view.ViewStub;
 import android.widget.ProgressBar;
 
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
 
diff --git a/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java b/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
index 231c064..fd3303b 100644
--- a/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
@@ -18,13 +18,14 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
 import com.android.setupwizardlib.TemplateLayout;
 import com.android.setupwizardlib.view.NavigationBar;
 
diff --git a/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java b/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
index d159465..9e4d1cf 100644
--- a/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
+++ b/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
@@ -16,11 +16,12 @@
 
 package com.android.setupwizardlib.template;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.Log;
 import android.widget.ScrollView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
 import com.android.setupwizardlib.view.BottomScrollView;
 import com.android.setupwizardlib.view.BottomScrollView.BottomScrollListener;
diff --git a/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java b/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
index 975927b..2ec4f84 100644
--- a/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
+++ b/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
@@ -18,9 +18,10 @@
 
 import android.content.Context;
 import android.content.res.Resources.Theme;
-import android.support.annotation.StyleRes;
 import android.view.ContextThemeWrapper;
 
+import androidx.annotation.StyleRes;
+
 /**
  * Same as {@link ContextThemeWrapper}, but the base context's theme attributes take precedence
  * over the wrapper context's. This is used to provide default values for theme attributes
diff --git a/library/main/src/com/android/setupwizardlib/util/Partner.java b/library/main/src/com/android/setupwizardlib/util/Partner.java
index baf66d1..9eaedc3 100644
--- a/library/main/src/com/android/setupwizardlib/util/Partner.java
+++ b/library/main/src/com/android/setupwizardlib/util/Partner.java
@@ -26,13 +26,14 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.AnyRes;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
+import androidx.annotation.AnyRes;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+
 import java.util.List;
 
 /**
diff --git a/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java b/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
index b31e82e..7e3e885 100644
--- a/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
+++ b/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
@@ -24,7 +24,6 @@
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Handler;
-import android.support.annotation.RequiresPermission;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
@@ -32,6 +31,8 @@
 import android.view.WindowInsets;
 import android.view.WindowManager;
 
+import androidx.annotation.RequiresPermission;
+
 /**
  * A helper class to manage the system navigation bar and status bar. This will add various
  * systemUiVisibility flags to the given Window or View to make them follow the Setup Wizard style.
diff --git a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
index cf9ddac..9230b67 100644
--- a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
+++ b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
@@ -22,8 +22,10 @@
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.provider.Settings;
-import android.support.annotation.StyleRes;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.setupwizardlib.R;
 
@@ -278,7 +280,25 @@
      */
     public static @StyleRes int getThemeRes(Intent intent, @StyleRes int defaultTheme) {
         final String theme = intent.getStringExtra(EXTRA_THEME);
-        return getThemeRes(theme, defaultTheme);
+        return getThemeRes(theme, defaultTheme, null);
+    }
+
+    /**
+     * Gets the theme style resource defined by this library for the theme specified in the given
+     * intent. For example, for THEME_GLIF_LIGHT, the theme @style/SuwThemeGlif.Light is returned.
+     *
+     * @param intent The intent passed by setup wizard, or one with the theme propagated along using
+     *               {@link #copyWizardManagerExtras(Intent, Intent)}.
+     * @return The style corresponding to the theme in the given intent, or {@code defaultTheme} if
+     *         the given theme is not recognized. Return the {@code defaultTheme} if the specified
+     *         theme is older than the oldest supported one.
+     *
+     * @see #getThemeRes(String, int)
+     */
+    public static @StyleRes int getThemeRes(Intent intent, @StyleRes int defaultTheme,
+            @Nullable String oldestSupportedTheme) {
+        final String theme = intent.getStringExtra(EXTRA_THEME);
+        return getThemeRes(theme, defaultTheme, oldestSupportedTheme);
     }
 
     /**
@@ -301,28 +321,91 @@
      *         given theme is not recognized.
      */
     public static @StyleRes int getThemeRes(String theme, @StyleRes int defaultTheme) {
+        return getThemeRes(theme, defaultTheme, null);
+    }
+
+    /**
+     * Gets the theme style resource defined by this library for the given theme name. For example,
+     * for THEME_GLIF_LIGHT, the theme @style/SuwThemeGlif.Light is returned.
+     *
+     * <p>If you require extra theme attributes but want to ensure forward compatibility with new
+     * themes added here, consider overriding {@link android.app.Activity#onApplyThemeResource} in
+     * your activity and call {@link Theme#applyStyle(int, boolean)} using your theme overlay.
+     *
+     * <pre>{@code
+     * protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
+     *     super.onApplyThemeResource(theme, resid, first);
+     *     theme.applyStyle(R.style.MyThemeOverlay, true);
+     * }
+     * }</pre>
+     *
+     * @param theme The string representation of the theme.
+     * @return The style corresponding to the given {@code theme}, or {@code defaultTheme} if the
+     *         given theme is not recognized.
+     */
+    public static @StyleRes int getThemeRes(String theme, @StyleRes int defaultTheme,
+            @Nullable String oldestSupportedTheme) {
+        int returnedTheme = defaultTheme;
         if (theme != null) {
             switch (theme) {
                 case THEME_GLIF_V3_LIGHT:
-                    return R.style.SuwThemeGlifV3_Light;
+                    returnedTheme = R.style.SuwThemeGlifV3_Light;
+                    break;
                 case THEME_GLIF_V3:
-                    return R.style.SuwThemeGlifV3;
+                    returnedTheme = R.style.SuwThemeGlifV3;
+                    break;
                 case THEME_GLIF_V2_LIGHT:
-                    return R.style.SuwThemeGlifV2_Light;
+                    returnedTheme = R.style.SuwThemeGlifV2_Light;
+                    break;
                 case THEME_GLIF_V2:
-                    return R.style.SuwThemeGlifV2;
+                    returnedTheme = R.style.SuwThemeGlifV2;
+                    break;
                 case THEME_GLIF_LIGHT:
-                    return R.style.SuwThemeGlif_Light;
+                    returnedTheme = R.style.SuwThemeGlif_Light;
+                    break;
                 case THEME_GLIF:
-                    return R.style.SuwThemeGlif;
+                    returnedTheme = R.style.SuwThemeGlif;
+                    break;
                 case THEME_MATERIAL_LIGHT:
-                    return R.style.SuwThemeMaterial_Light;
+                    returnedTheme = R.style.SuwThemeMaterial_Light;
+                    break;
                 case THEME_MATERIAL:
-                    return R.style.SuwThemeMaterial;
+                    returnedTheme = R.style.SuwThemeMaterial;
+                    break;
+                default:
+                    // fall through
+            }
+
+            // b/79540471 Return the default theme if the specified theme
+            // is older than the oldest supported one.
+            if (oldestSupportedTheme != null
+                    && (getThemeVersion(theme) < getThemeVersion(oldestSupportedTheme))) {
+                returnedTheme = defaultTheme;
+            }
+        }
+
+        return returnedTheme;
+    }
+
+    private static int getThemeVersion(String theme) {
+        if (theme != null) {
+            switch (theme) {
+                case THEME_GLIF_V3_LIGHT:
+                case THEME_GLIF_V3:
+                    return 4;
+                case THEME_GLIF_V2_LIGHT:
+                case THEME_GLIF_V2:
+                    return 3;
+                case THEME_GLIF_LIGHT:
+                case THEME_GLIF:
+                    return 2;
+                case THEME_MATERIAL_LIGHT:
+                case THEME_MATERIAL:
+                    return 1;
                 default:
                     // fall through
             }
         }
-        return defaultTheme;
+        return -1;
     }
 }
diff --git a/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java b/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
index aac6668..eeb40a9 100644
--- a/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
+++ b/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
@@ -17,11 +17,12 @@
 package com.android.setupwizardlib.view;
 
 import android.content.Context;
-import android.support.annotation.VisibleForTesting;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.ScrollView;
 
+import androidx.annotation.VisibleForTesting;
+
 /**
  * An extension of ScrollView that will invoke a listener callback when the ScrollView needs
  * scrolling, and when the ScrollView is being scrolled to the bottom. This is often used in Setup
diff --git a/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java b/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
index bd0aead..9605f99 100644
--- a/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
+++ b/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
@@ -19,11 +19,12 @@
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.widget.Checkable;
 import android.widget.LinearLayout;
 
+import androidx.annotation.Nullable;
+
 /**
  * A LinearLayout which is checkable. This will set the checked state when
  * {@link #onCreateDrawableState(int)} is called, and can be used with
diff --git a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
index e5c2fb1..e5688b3 100644
--- a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
+++ b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
@@ -22,18 +22,27 @@
 import android.graphics.SurfaceTexture;
 import android.graphics.drawable.Animatable;
 import android.media.MediaPlayer;
+import android.media.MediaPlayer.OnErrorListener;
+import android.media.MediaPlayer.OnInfoListener;
+import android.media.MediaPlayer.OnPreparedListener;
+import android.media.MediaPlayer.OnSeekCompleteListener;
+import android.net.Uri;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.support.annotation.RawRes;
-import android.support.annotation.VisibleForTesting;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.Surface;
 import android.view.TextureView;
+import android.view.TextureView.SurfaceTextureListener;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.VisibleForTesting;
+
 import com.android.setupwizardlib.R;
 
+import java.io.IOException;
+
 /**
  * A view for displaying videos in a continuous loop (without audio). This is typically used for
  * animated illustrations.
@@ -48,10 +57,11 @@
  */
 @TargetApi(VERSION_CODES.ICE_CREAM_SANDWICH)
 public class IllustrationVideoView extends TextureView implements Animatable,
-        TextureView.SurfaceTextureListener,
-        MediaPlayer.OnPreparedListener,
-        MediaPlayer.OnSeekCompleteListener,
-        MediaPlayer.OnInfoListener {
+        SurfaceTextureListener,
+        OnPreparedListener,
+        OnSeekCompleteListener,
+        OnInfoListener,
+        OnErrorListener {
 
     private static final String TAG = "IllustrationVideoView";
 
@@ -64,6 +74,8 @@
 
     @VisibleForTesting Surface mSurface;
 
+    private boolean mPrepared;
+
     public IllustrationVideoView(Context context, AttributeSet attrs) {
         super(context, attrs);
         final TypedArray a = context.obtainStyledAttributes(attrs,
@@ -124,7 +136,7 @@
      * Creates a media player for the current URI. The media player will be started immediately if
      * the view's window is visible. If there is an existing media player, it will be released.
      */
-    private void createMediaPlayer() {
+    protected void createMediaPlayer() {
         if (mMediaPlayer != null) {
             mMediaPlayer.release();
         }
@@ -132,25 +144,48 @@
             return;
         }
 
-        mMediaPlayer = MediaPlayer.create(getContext(), mVideoResId);
+        mMediaPlayer = new MediaPlayer();
 
-        if (mMediaPlayer != null) {
-            mMediaPlayer.setSurface(mSurface);
-            mMediaPlayer.setOnPreparedListener(this);
-            mMediaPlayer.setOnSeekCompleteListener(this);
-            mMediaPlayer.setOnInfoListener(this);
+        mMediaPlayer.setSurface(mSurface);
+        mMediaPlayer.setOnPreparedListener(this);
+        mMediaPlayer.setOnSeekCompleteListener(this);
+        mMediaPlayer.setOnInfoListener(this);
+        mMediaPlayer.setOnErrorListener(this);
 
-            float aspectRatio =
-                    (float) mMediaPlayer.getVideoHeight() / mMediaPlayer.getVideoWidth();
-            if (mAspectRatio != aspectRatio) {
-                mAspectRatio = aspectRatio;
-                requestLayout();
-            }
-        } else {
-            Log.wtf(TAG, "Unable to initialize media player for video view");
+        setVideoResourceInternal(mVideoResId);
+    }
+
+    private void setVideoResourceInternal(@RawRes int videoRes) {
+        Uri uri =
+                Uri.parse("android.resource://" + getContext().getPackageName() + "/" + videoRes);
+        try {
+            mMediaPlayer.setDataSource(getContext(), uri);
+            mMediaPlayer.prepareAsync();
+        } catch (IOException e) {
+            Log.wtf(TAG, "Unable to set data source", e);
         }
-        if (getWindowVisibility() == View.VISIBLE) {
-            start();
+    }
+
+    protected void createSurface() {
+        if (mSurface != null) {
+            mSurface.release();
+            mSurface = null;
+        }
+        // Reattach only if it has been previously released
+        SurfaceTexture surfaceTexture = getSurfaceTexture();
+        if (surfaceTexture != null) {
+            setVisibility(View.INVISIBLE);
+            mSurface = new Surface(surfaceTexture);
+        }
+    }
+
+    @Override
+    protected void onWindowVisibilityChanged(int visibility) {
+        super.onWindowVisibilityChanged(visibility);
+        if (visibility == View.VISIBLE) {
+            reattach();
+        } else {
+            release();
         }
     }
 
@@ -168,9 +203,9 @@
      */
     public void release() {
         if (mMediaPlayer != null) {
-            mMediaPlayer.stop();
             mMediaPlayer.release();
             mMediaPlayer = null;
+            mPrepared = false;
         }
         if (mSurface != null) {
             mSurface.release();
@@ -178,14 +213,34 @@
         }
     }
 
+    private void reattach() {
+        if (mSurface == null) {
+            initVideo();
+        }
+    }
+
+    private void initVideo() {
+        if (getWindowVisibility() != View.VISIBLE) {
+            return;
+        }
+        createSurface();
+        if (mSurface != null) {
+            createMediaPlayer();
+        } else {
+            Log.w(TAG, "Surface creation failed");
+        }
+    }
+
+    protected void onRenderingStart() {
+    }
+
     /* SurfaceTextureListener methods */
 
     @Override
     public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
         // Keep the view hidden until video starts
         setVisibility(View.INVISIBLE);
-        mSurface = new Surface(surfaceTexture);
-        createMediaPlayer();
+        initVideo();
     }
 
     @Override
@@ -206,14 +261,14 @@
 
     @Override
     public void start() {
-        if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
+        if (mPrepared && mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
             mMediaPlayer.start();
         }
     }
 
     @Override
     public void stop() {
-        if (mMediaPlayer != null) {
+        if (mPrepared && mMediaPlayer != null) {
             mMediaPlayer.pause();
         }
     }
@@ -230,21 +285,46 @@
         if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
             // Video available, show view now
             setVisibility(View.VISIBLE);
+            onRenderingStart();
         }
         return false;
     }
 
     @Override
     public void onPrepared(MediaPlayer mp) {
+        mPrepared = true;
         mp.setLooping(shouldLoop());
+        float aspectRatio =
+                (float) mp.getVideoHeight() / mp.getVideoWidth();
+        if (Float.compare(mAspectRatio, aspectRatio) == 0) {
+            mAspectRatio = aspectRatio;
+            requestLayout();
+        }
+        if (getWindowVisibility() == View.VISIBLE) {
+            start();
+        }
     }
 
     @Override
     public void onSeekComplete(MediaPlayer mp) {
-        mp.start();
+        if (isPrepared()) {
+            mp.start();
+        } else {
+            Log.wtf(TAG, "Seek complete but media player not prepared");
+        }
     }
 
     public int getCurrentPosition() {
         return mMediaPlayer == null ? 0 : mMediaPlayer.getCurrentPosition();
     }
+
+    protected boolean isPrepared() {
+        return mPrepared;
+    }
+
+    @Override
+    public boolean onError(MediaPlayer mediaPlayer, int what, int extra) {
+        Log.w(TAG, "MediaPlayer error. what=" + what + " extra=" + extra);
+        return false;
+    }
 }
diff --git a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
index 2a1dd28..9971bac 100644
--- a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
+++ b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
@@ -21,13 +21,14 @@
 import android.content.res.TypedArray;
 import android.graphics.Color;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.StyleableRes;
 import android.util.AttributeSet;
 import android.view.ContextThemeWrapper;
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
 
+import androidx.annotation.StyleableRes;
+
 import com.android.setupwizardlib.R;
 
 /**
diff --git a/library/platform/res/values-v27/styles.xml b/library/platform/res/values-v27/styles.xml
index 6e36919..70101c9 100644
--- a/library/platform/res/values-v27/styles.xml
+++ b/library/platform/res/values-v27/styles.xml
@@ -44,6 +44,7 @@
 
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwCardBackground">@drawable/suw_card_bg</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -75,6 +76,7 @@
 
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwCardBackground">@drawable/suw_card_bg</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -109,7 +111,8 @@
 
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
-        <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonFontFamily">sans-serif-medium</item>
+        <item name="suwButtonHighlightAlpha">0.24</item>
         <item name="suwColorPrimary">?android:attr/colorPrimary</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -145,7 +148,8 @@
 
         <item name="suwButtonAllCaps">true</item>
         <item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
-        <item name="suwButtonFontFamily">sans-serif</item>
+        <item name="suwButtonFontFamily">sans-serif-medium</item>
+        <item name="suwButtonHighlightAlpha">0.12</item>
         <item name="suwColorPrimary">?android:attr/colorPrimary</item>
         <item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
         <item name="suwDividerInsetEnd">0dp</item>
@@ -218,4 +222,11 @@
         <item name="android:colorControlHighlight">@color/suw_flat_button_highlight</item>
     </style>
 
+    <!-- Ignore UnusedResources: used by clients -->
+    <style name="SuwGlifButton.Tertiary"
+        parent="SuwGlifButton.BaseTertiary"
+        tools:ignore="UnusedResources">
+        <item name="android:fontFamily">sans-serif-medium</item>
+    </style>
+
 </resources>
diff --git a/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml b/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
index 0979d91..088a35c 100644
--- a/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
+++ b/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
@@ -15,7 +15,7 @@
     limitations under the License.
 -->
 
-<android.support.v7.widget.RecyclerView
+<androidx.recyclerview.widget.RecyclerView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/suw_recycler_view"
     android:layout_width="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_card.xml b/library/recyclerview/res/layout/suw_recycler_template_card.xml
index 1d7b143..79cbcd6 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_card.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_card.xml
@@ -49,7 +49,7 @@
                 android:elevation="@dimen/suw_card_elevation"
                 tools:ignore="UnusedAttribute">
 
-                <android.support.v7.widget.RecyclerView
+                <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/suw_recycler_view"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml b/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
index e5e876f..31f1ca0 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
@@ -50,7 +50,7 @@
                 android:elevation="@dimen/suw_card_elevation"
                 tools:ignore="UnusedAttribute">
 
-                <android.support.v7.widget.RecyclerView
+                <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/suw_recycler_view"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml b/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
index 1960f0d..833f7d0 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
@@ -44,7 +44,7 @@
         android:layout_height="0dp"
         android:layout_weight="1">
 
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/suw_recycler_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
diff --git a/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java b/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
index 6c1a928..2db17f8 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
@@ -21,16 +21,17 @@
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.IntDef;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
+import androidx.annotation.IntDef;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * An {@link android.support.v7.widget.RecyclerView.ItemDecoration} for RecyclerView to draw
+ * An {@link androidx.recyclerview.widget.RecyclerView.ItemDecoration} for RecyclerView to draw
  * dividers between items. This ItemDecoration will draw the drawable specified by
  * {@link #setDivider(android.graphics.drawable.Drawable)} as the divider in between each item by
  * default, and the behavior of whether the divider is shown can be customized by subclassing
diff --git a/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java b/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
index d337e84..af1a739 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
@@ -18,12 +18,13 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.template.RecyclerMixin;
 
 /**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java b/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
index e8a021d..7e0b1b7 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
@@ -20,14 +20,15 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.Build.VERSION_CODES;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import com.android.setupwizardlib.template.RecyclerMixin;
 import com.android.setupwizardlib.template.RecyclerViewScrollHandlingDelegate;
 import com.android.setupwizardlib.template.RequireScrollMixin;
diff --git a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
index 6570694..670c309 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
@@ -18,12 +18,13 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.template.RecyclerMixin;
 
 /**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
index 6f3aed4..5d3f1a5 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
@@ -18,20 +18,21 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import com.android.setupwizardlib.template.RecyclerMixin;
 import com.android.setupwizardlib.template.RecyclerViewScrollHandlingDelegate;
 import com.android.setupwizardlib.template.RequireScrollMixin;
 
 /**
- * A setup wizard layout for use with {@link android.support.v7.widget.RecyclerView}.
+ * A setup wizard layout for use with {@link androidx.recyclerview.widget.RecyclerView}.
  * {@code android:entries} can also be used to specify an
  * {@link com.android.setupwizardlib.items.ItemHierarchy} to be used with this layout in XML.
  *
diff --git a/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java b/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
index 231f81d..aeaba68 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
@@ -16,9 +16,10 @@
 
 package com.android.setupwizardlib.items;
 
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.DividerItemDecoration;
 
 class ItemViewHolder extends RecyclerView.ViewHolder
diff --git a/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java b/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
index 0703c17..56c60e7 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
@@ -20,13 +20,14 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.VisibleForTesting;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.R;
 
 /**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
index fa5ac4a..32e7bd8 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
@@ -21,15 +21,16 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.util.AttributeSet;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import com.android.setupwizardlib.DividerItemDecoration;
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
index 41fb03e..bfe8df2 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
@@ -16,11 +16,12 @@
 
 package com.android.setupwizardlib.template;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
 
 /**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java b/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
index cf13d01..0304b65 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
@@ -19,7 +19,6 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.os.Build;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -27,6 +26,8 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.FrameLayout;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.DividerItemDecoration;
 import com.android.setupwizardlib.R;
 
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
index 1bfbb95..6f42e84 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
@@ -35,9 +35,10 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView.AdapterDataObserver;
 import android.widget.FrameLayout;
 
+import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver;
+
 import com.android.setupwizardlib.items.RecyclerItemAdapter.PatchedLayerDrawable;
 import com.android.setupwizardlib.test.R;
 
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
index ce73791..ece4bf9 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
@@ -33,10 +33,11 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
 import android.view.View;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+
 import com.android.setupwizardlib.TemplateLayout;
 import com.android.setupwizardlib.test.R;
 
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
index 747d1ba..9cf33b9 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
@@ -31,11 +31,12 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.DividerItemDecoration;
 
 import org.junit.Test;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
index 791e11f..4d2876d 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
@@ -27,12 +27,13 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.GlifPreferenceLayout;
 
 import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
index 4bd98ce..a68faf0 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
@@ -29,14 +29,15 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.MeasureSpec;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+
 import com.android.setupwizardlib.GlifRecyclerLayout;
 
 import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
index d9f52cd..9af68a7 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
@@ -22,10 +22,11 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.view.HeaderRecyclerView.HeaderAdapter;
 
 import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
index 486d2cf..316793f 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
@@ -27,12 +27,13 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.setupwizardlib.SetupWizardPreferenceLayout;
 
 import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
index 4b38945..bbe773b 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
@@ -29,15 +29,16 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.MeasureSpec;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import com.android.setupwizardlib.SetupWizardRecyclerLayout;
 
 import org.junit.Before;
diff --git a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
index 5912f7f..6fa4c54 100644
--- a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
+++ b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
@@ -24,8 +24,8 @@
 import static org.mockito.Mockito.verify;
 import static org.robolectric.RuntimeEnvironment.application;
 
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.OnScrollListener;
 
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 
diff --git a/library/rules.gradle b/library/rules.gradle
index 9baa390..4e815ce 100644
--- a/library/rules.gradle
+++ b/library/rules.gradle
@@ -26,7 +26,7 @@
         // Provides backwards compatibility for Gingerbread or above, using support libraries.
         gingerbreadCompat {
             dimension 'compat'
-            minSdkVersion 9
+            minSdkVersion 14
         }
     }
 
diff --git a/library/standalone-rules.gradle b/library/standalone-rules.gradle
index 7f505a1..e17cffd 100644
--- a/library/standalone-rules.gradle
+++ b/library/standalone-rules.gradle
@@ -26,9 +26,9 @@
     //      }
     //
     deps = [
-        'support-annotations': 'com.android.support:support-annotations:23.4.0',
-        'support-appcompat-v7': 'com.android.support:appcompat-v7:23.4.0',
-        'support-recyclerview-v7': 'com.android.support:recyclerview-v7:23.4.0'
+        'support-annotations': 'androidx.annotation:annotation:1.0.0-alpha1',
+        'support-appcompat-v7': 'androidx.appcompat:appcompat:1.0.0-alpha1',
+        'support-recyclerview-v7': 'androidx.recyclerview:recyclerview:1.0.0-alpha1'
     ]
 }
 
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
index 2772cb1..08f5958 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
@@ -24,7 +24,6 @@
 import static org.mockito.Mockito.spy;
 
 import android.content.Context;
-import android.support.annotation.IdRes;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
@@ -36,6 +35,8 @@
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 
+import androidx.annotation.IdRes;
+
 import com.android.setupwizardlib.TemplateLayout;
 import com.android.setupwizardlib.test.R;
 
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
index 5c22324..137a146 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
@@ -20,7 +20,6 @@
 import static org.junit.Assert.assertTrue;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
@@ -28,6 +27,8 @@
 import android.view.animation.AnimationSet;
 import android.view.animation.ScaleAnimation;
 
+import androidx.annotation.NonNull;
+
 import com.android.setupwizardlib.items.ReflectionInflater;
 
 import org.junit.Test;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
index aab2efb..531d69e 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
@@ -27,7 +27,6 @@
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.os.Parcelable;
-import android.support.annotation.IdRes;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
@@ -39,6 +38,8 @@
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import androidx.annotation.IdRes;
+
 import com.android.setupwizardlib.SetupWizardLayout;
 import com.android.setupwizardlib.template.HeaderMixin;
 import com.android.setupwizardlib.template.NavigationBarMixin;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
index bd4c251..f4738ca 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
@@ -20,12 +20,13 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.annotation.NonNull;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
 import android.util.AttributeSet;
 
+import androidx.annotation.NonNull;
+
 import com.android.setupwizardlib.items.SimpleInflater;
 
 import org.junit.Test;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
index 94ef145..6910513 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
@@ -24,11 +24,12 @@
 import android.content.pm.ActivityInfo;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
-import android.support.annotation.StyleRes;
 import android.support.test.InstrumentationRegistry;
 import android.view.View;
 import android.view.View.MeasureSpec;
 
+import androidx.annotation.StyleRes;
+
 public class DrawingTestHelper {
 
     /**
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
index 9358aad..7af20eb 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
@@ -21,7 +21,6 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.view.InputQueue;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -31,6 +30,8 @@
 import android.view.ViewGroup;
 import android.view.Window;
 
+import androidx.annotation.NonNull;
+
 public class MockWindow extends Window {
 
     public MockWindow(Context context) {
diff --git a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
index d2d1ee0..2a4a8c0 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
@@ -34,13 +34,14 @@
 import android.os.Build;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.IdRes;
 import android.view.ContextThemeWrapper;
 import android.view.View;
 import android.widget.ProgressBar;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
+import androidx.annotation.IdRes;
+
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 import com.android.setupwizardlib.template.ColoredHeaderMixin;
 import com.android.setupwizardlib.template.HeaderMixin;
diff --git a/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java b/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java
new file mode 100644
index 0000000..2ef2b7d
--- /dev/null
+++ b/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+package com.android.setupwizardlib.shadow;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.io.IOException;
+import java.net.HttpCookie;
+import java.util.List;
+import java.util.Map;
+
+@Implements(MediaPlayer.class)
+public class ShadowMediaPlayer extends org.robolectric.shadows.ShadowMediaPlayer {
+
+    @Implementation
+    public void setDataSource(
+            @NonNull Context context,
+            @NonNull Uri uri,
+            @Nullable Map<String, String> headers,
+            @Nullable List<HttpCookie> cookies)
+            throws IOException {
+        setDataSource(context, uri, headers);
+    }
+
+    @Implementation
+    public void seekTo(long msec, int mode) {
+        seekTo((int) msec);
+    }
+}
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
index 46df9d6..195fc9b 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
@@ -28,35 +28,31 @@
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
+import android.util.AttributeSet;
 import android.view.ContextThemeWrapper;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
 import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
 
 @RunWith(SuwLibRobolectricTestRunner.class)
 @Config(sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK})
 public class GlifStyleTest {
 
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light);
-    }
-
     @Test
     public void testSuwGlifButtonTertiary() {
-        Button button = new Button(
-                mContext,
+        Button button = createButton(
+                new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light),
                 Robolectric.buildAttributeSet()
                         .setStyleAttribute("@style/SuwGlifButton.Tertiary")
                         .build());
@@ -86,6 +82,22 @@
                 activity.findViewById(R.id.suw_large_progress_bar) instanceof ProgressBar);
     }
 
+    private Button createButton(Context context, AttributeSet attrs) {
+        Class<? extends Button> buttonClass;
+        try {
+            // Use AppCompatButton in builds that have them (i.e. gingerbreadCompat)
+            // noinspection unchecked
+            buttonClass = (Class<? extends Button>)
+                     Class.forName("androidx.appcompat.widget.AppCompatButton");
+        } catch (ClassNotFoundException e) {
+            buttonClass = Button.class;
+        }
+        return ReflectionHelpers.callConstructor(
+                buttonClass,
+                ClassParameter.from(Context.class, context),
+                ClassParameter.from(AttributeSet.class, attrs));
+    }
+
     private static class GlifThemeActivity extends Activity {
 
         @Override
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
index 613f2aa..44b8886 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
@@ -27,10 +27,11 @@
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.view.View;
 import android.widget.Button;
 
+import androidx.annotation.Nullable;
+
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
index 0d15ef4..20549f2 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
@@ -29,7 +29,8 @@
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
-import android.support.annotation.StyleRes;
+
+import androidx.annotation.StyleRes;
 
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
@@ -161,6 +162,22 @@
     }
 
     @Test
+    public void getThemeRes_whenOldestSupportedThemeTakeEffect_shouldReturnDefault() {
+        Intent intent = new Intent();
+        intent.putExtra(WizardManagerHelper.EXTRA_THEME, "material");
+        assertEquals(0,
+                WizardManagerHelper.getThemeRes(intent, 0, WizardManagerHelper.THEME_GLIF_V2));
+    }
+
+    @Test
+    public void getThemeRes_whenOldestSupportedThemeNotTakeEffect_shouldReturnCurrent() {
+        Intent intent = new Intent();
+        intent.putExtra(WizardManagerHelper.EXTRA_THEME, "glif_v3");
+        assertEquals(R.style.SuwThemeGlifV3,
+                WizardManagerHelper.getThemeRes(intent, 0, WizardManagerHelper.THEME_GLIF_V2));
+    }
+
+    @Test
     public void testIsLightThemeDefault() {
         final Intent intent = new Intent();
         intent.putExtra("theme", "abracadabra");
diff --git a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
index 21822a4..c09e22f 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
@@ -16,50 +16,52 @@
 
 package com.android.setupwizardlib.view;
 
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
 import static org.robolectric.RuntimeEnvironment.application;
 
 import android.annotation.TargetApi;
-import android.content.Context;
+import android.app.Activity;
 import android.graphics.SurfaceTexture;
-import android.media.MediaPlayer;
+import android.net.Uri;
 import android.os.Build.VERSION_CODES;
-import android.support.annotation.RawRes;
 import android.view.Surface;
+import android.view.View;
+
+import androidx.annotation.RawRes;
 
 import com.android.setupwizardlib.R;
 import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
 import com.android.setupwizardlib.shadow.ShadowLog;
-import com.android.setupwizardlib.shadow.ShadowLog.TerribleFailure;
-import com.android.setupwizardlib.view.IllustrationVideoViewTest.ShadowMockMediaPlayer;
+import com.android.setupwizardlib.shadow.ShadowMediaPlayer;
 import com.android.setupwizardlib.view.IllustrationVideoViewTest.ShadowSurface;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
+import org.robolectric.Shadows;
 import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 import org.robolectric.annotation.RealObject;
 import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowMediaPlayer;
+import org.robolectric.shadows.ShadowMediaPlayer.InvalidStateBehavior;
+import org.robolectric.shadows.ShadowMediaPlayer.MediaInfo;
+import org.robolectric.shadows.ShadowMediaPlayer.State;
+import org.robolectric.shadows.util.DataSource;
 import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
 
 @RunWith(SuwLibRobolectricTestRunner.class)
 @Config(
         sdk = Config.NEWEST_SDK,
         shadows = {
                 ShadowLog.class,
-                ShadowMockMediaPlayer.class,
+                ShadowMediaPlayer.class,
                 ShadowSurface.class
         })
 public class IllustrationVideoViewTest {
@@ -69,48 +71,58 @@
 
     private IllustrationVideoView mView;
 
+    private ShadowMediaPlayer mShadowMediaPlayer;
+
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowMockMediaPlayer.reset();
+        addMediaInfo(android.R.color.white);
     }
 
     @Test
-    public void nullMediaPlayer_shouldThrowWtf() {
-        ShadowMockMediaPlayer.sMediaPlayer = null;
-        try {
-            createDefaultView();
-            fail("WTF should be thrown for null media player");
-        } catch (TerribleFailure e) {
-            // pass
-        }
+    public void onVisibilityChanged_notVisible_shouldRelease() {
+
+        createDefaultView();
+        mView.onWindowVisibilityChanged(View.GONE);
+
+        assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.END);
+        assertThat(mView.mSurface).isNull();
+        assertThat(mView.mMediaPlayer).isNull();
+    }
+
+    @Test
+    public void onVisibilityChanged_visible_shouldPlay() {
+        createDefaultView();
+
+        mView.onWindowVisibilityChanged(View.GONE);
+        assertThat(mView.mSurface).isNull();
+        assertThat(mView.mMediaPlayer).isNull();
+
+        mView.onWindowVisibilityChanged(View.VISIBLE);
+
+        assertThat(mView.mSurface).isNotNull();
+        assertThat(mView.mMediaPlayer).isNotNull();
     }
 
     @Test
     public void testPausedWhenWindowFocusLost() {
         createDefaultView();
+        Robolectric.flushForegroundThreadScheduler();
         mView.start();
 
         assertNotNull(mView.mMediaPlayer);
         assertNotNull(mView.mSurface);
 
         mView.onWindowFocusChanged(false);
-        verify(ShadowMockMediaPlayer.getMock()).pause();
+        assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.PAUSED);
     }
 
     @Test
     public void testStartedWhenWindowFocusRegained() {
         testPausedWhenWindowFocusLost();
 
-        // Clear verifications for calls in the other test
-        reset(ShadowMockMediaPlayer.getMock());
-
         mView.onWindowFocusChanged(true);
-        verify(ShadowMockMediaPlayer.getMock()).start();
+        assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.STARTED);
     }
 
     @Test
@@ -122,55 +134,68 @@
         assertNotNull(mView.mSurface);
 
         mView.onSurfaceTextureDestroyed(mSurfaceTexture);
-        verify(ShadowMockMediaPlayer.getMock()).release();
+        assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.END);
     }
 
     @Test
     public void testXmlSetVideoResId() {
         createDefaultView();
-        assertEquals(android.R.color.white, ShadowMockMediaPlayer.sResId);
+        assertThat(mShadowMediaPlayer.getSourceUri().toString())
+                .isEqualTo("android.resource://com.android.setupwizardlib/"
+                        + android.R.color.white);
     }
 
     @Test
     public void testSetVideoResId() {
+        addMediaInfo(android.R.color.black);
+
         createDefaultView();
 
         @RawRes int black = android.R.color.black;
         mView.setVideoResource(black);
 
-        assertEquals(android.R.color.black, ShadowMockMediaPlayer.sResId);
+        mShadowMediaPlayer = (ShadowMediaPlayer) Shadows.shadowOf(mView.mMediaPlayer);
+
+        assertThat(mShadowMediaPlayer.getSourceUri().toString())
+                .isEqualTo("android.resource://com.android.setupwizardlib/"
+                        + android.R.color.black);
     }
 
     private void createDefaultView() {
         mView = new IllustrationVideoView(
                 application,
                 Robolectric.buildAttributeSet()
-                        // Any resource attribute should work, since the media player is mocked
+                        // Any resource attribute should work, since the DataSource is fake
                         .addAttribute(R.attr.suwVideo, "@android:color/white")
                         .build());
+
+        Activity activity = Robolectric.setupActivity(Activity.class);
+        activity.setContentView(mView);
+        setWindowVisible();
+
+        mView.setSurfaceTexture(mock(SurfaceTexture.class));
         mView.onSurfaceTextureAvailable(mSurfaceTexture, 500, 500);
+        mShadowMediaPlayer = (ShadowMediaPlayer) Shadows.shadowOf(mView.mMediaPlayer);
+        mShadowMediaPlayer.setInvalidStateBehavior(InvalidStateBehavior.EMULATE);
     }
 
-    @Implements(MediaPlayer.class)
-    public static class ShadowMockMediaPlayer extends ShadowMediaPlayer {
+    private void setWindowVisible() {
+        Object viewRootImpl = ReflectionHelpers.callInstanceMethod(mView, "getViewRootImpl");
+        ReflectionHelpers.callInstanceMethod(
+                viewRootImpl,
+                "handleAppVisibility",
+                ClassParameter.from(boolean.class, true));
+        assertThat(mView.isAttachedToWindow()).isTrue();
+        assertThat(mView.getWindowVisibility()).isEqualTo(View.VISIBLE);
+    }
 
-        private static MediaPlayer sMediaPlayer = mock(MediaPlayer.class);
-        private static int sResId;
-
-        public static void reset() {
-            sMediaPlayer = mock(MediaPlayer.class);
-            sResId = 0;
-        }
-
-        @Implementation
-        public static MediaPlayer create(Context context, int resId) {
-            sResId = resId;
-            return sMediaPlayer;
-        }
-
-        public static MediaPlayer getMock() {
-            return sMediaPlayer;
-        }
+    private void addMediaInfo(@RawRes int res) {
+        ShadowMediaPlayer.addMediaInfo(
+                DataSource.toDataSource(
+                        application,
+                        Uri.parse("android.resource://com.android.setupwizardlib/" + res),
+                        null),
+                new MediaInfo(5000, 1));
     }
 
     @Implements(Surface.class)
@@ -180,6 +205,7 @@
         @RealObject
         private Surface mRealSurface;
 
+        @Override
         public void __constructor__(SurfaceTexture surfaceTexture) {
             // Call the constructor on the real object, so that critical fields such as mLock is
             // initialized properly.
diff --git a/navigationbar/res/values-as/strings.xml b/navigationbar/res/values-as/strings.xml
new file mode 100644
index 0000000..398ff1f
--- /dev/null
+++ b/navigationbar/res/values-as/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="setup_wizard_next_button_label" msgid="6681282266022780599">"পৰৱৰ্তী"</string>
+    <string name="setup_wizard_back_button_label" msgid="2863826823307023546">"উভতি যাওক"</string>
+</resources>
diff --git a/navigationbar/res/values-or/strings.xml b/navigationbar/res/values-or/strings.xml
new file mode 100644
index 0000000..4c70d06
--- /dev/null
+++ b/navigationbar/res/values-or/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="setup_wizard_next_button_label" msgid="6681282266022780599">"ପରବର୍ତ୍ତୀ"</string>
+    <string name="setup_wizard_back_button_label" msgid="2863826823307023546">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+</resources>
diff --git a/tools/build_for_build_server.sh b/tools/build_for_build_server.sh
index 7a8c942..1ed4ea7 100755
--- a/tools/build_for_build_server.sh
+++ b/tools/build_for_build_server.sh
@@ -6,4 +6,4 @@
 export TARGET_BUILD_TYPE="release"
 export TARGET_BUILD_APPS="setup-wizard-lib"
 
-./gradlew buildProjectFull test coverage
+./gradlew buildProjectFull test coverage --info
diff --git a/tools/gradle/repositories.properties b/tools/gradle/repositories.properties
index 378d454..d2c15a1 100644
--- a/tools/gradle/repositories.properties
+++ b/tools/gradle/repositories.properties
@@ -1,3 +1,4 @@
 repositories {
     maven { url "$rootDir/prebuilts/maven_repo/robolectric" }
+    maven { url "$rootDir/prebuilts/maven_repo/android" }
 }