diff --git a/Android.bp b/Android.bp
index 598beb6..c4b9ad3 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,8 +59,6 @@
 
     sdk_version: "system_current",
     min_sdk_version: "29",
-
-    lint: { strict_updatability_linting: true }
 }
 
 platform_compat_config {
@@ -68,39 +66,32 @@
     src: ":DocumentsUI",
 }
 
-filegroup {
-    name: "DocumentsUI-srcs",
-    srcs: [
-        "src/**/*.java",
-	":statslog-docsui-java-gen",
-    ],
-}
-
 java_library {
     name: "docsui-statsd",
     srcs: [
         ":statslog-docsui-java-gen",
     ],
-    lint: { strict_updatability_linting: true }
+    libs: [
+        "androidx.annotation_annotation",
+    ],
+    lint: {
+        strict_updatability_linting: true,
+    },
 }
 
 genrule {
     name: "statslog-docsui-java-gen",
     tools: ["stats-log-api-gen"],
     cmd: "$(location stats-log-api-gen) --java $(out) --module docsui" +
-         " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
+        " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
     out: ["com/android/documentsui/DocumentsStatsLog.java"],
 }
 
 android_library {
-    name: "DocumentsUI-res-lib",
+    name: "DocumentsUI-lib",
+    defaults: ["documentsui_defaults"],
 
-    manifest: "AndroidManifest.xml",
-
-    static_libs: [
-        "androidx.appcompat_appcompat",
-        "com.google.android.material_material",
-    ],
+    manifest: "AndroidManifestLib.xml",
 
     resource_dirs: [
         "res",
@@ -110,40 +101,31 @@
         "--auto-add-overlay",
     ],
 
+    srcs: [
+        "src/**/*.java",
+        ":statslog-docsui-java-gen",
+    ],
+
     sdk_version: "system_current",
     target_sdk_version: "33",
     min_sdk_version: "29",
-    lint: { strict_updatability_linting: true }
+    lint: {
+        baseline_filename: "lint-baseline.xml",
+    },
 }
 
 android_library {
-    name: "DocumentsUIUnitTests-res-lib",
+    name: "DocumentsUIManifestLib",
+    defaults: ["documentsui_defaults"],
 
-    manifest: "AndroidManifestForUnitTests.xml",
+    manifest: "AndroidManifest.xml",
 
-    static_libs: [
-        "androidx.appcompat_appcompat",
-        "com.google.android.material_material",
-        "modules-utils-build_system",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
-
-    licenses: [
-        "Android-Apache-2.0",
-        "packages_apps_DocumentsUI_res_drawable_pd_license",
-    ],
-
-    aaptflags: [
-        "--auto-add-overlay",
-    ],
+    resource_dirs: [],
+    libs: ["DocumentsUI-lib"],
 
     sdk_version: "system_current",
     target_sdk_version: "33",
     min_sdk_version: "29",
-    lint: { strict_updatability_linting: true }
 }
 
 android_app {
@@ -153,13 +135,8 @@
 
     manifest: "AndroidManifest.xml",
 
-    srcs: [
-        ":DocumentsUI-srcs",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
+    static_libs: ["DocumentsUI-lib"],
+    resource_dirs: [],
 
     licenses: [
         "Android-Apache-2.0",
@@ -170,6 +147,4 @@
 
     min_sdk_version: "29",
     updatable: true,
-    lint: { strict_updatability_linting: true }
 }
-
diff --git a/AndroidManifestForUnitTests.xml b/AndroidManifestLib.xml
similarity index 100%
rename from AndroidManifestForUnitTests.xml
rename to AndroidManifestLib.xml
diff --git a/lint-baseline.xml b/lint-baseline.xml
index c7db331..a89103e 100644
--- a/lint-baseline.xml
+++ b/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.0.0-dev" type="baseline" dependencies="true" variant="all" version="8.0.0-dev">
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
 
     <issue
         id="NewApi"
diff --git a/perf-tests/Android.bp b/perf-tests/Android.bp
index d98c36c..4cf6c65 100644
--- a/perf-tests/Android.bp
+++ b/perf-tests/Android.bp
@@ -8,7 +8,6 @@
     manifest: "AndroidManifest.xml",
 
     srcs: [
-        ":DocumentsUIPerfTests-files",
         "src/**/*.java",
     ],
 
@@ -23,6 +22,7 @@
     ],
 
     static_libs: [
+        "DocumentsUIPerfTests-lib",
         "androidx.legacy_legacy-support-v4",
         "androidx.test.rules",
         "androidx.test.espresso.core",
diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
index 33ef73e..f7c295d 100644
--- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
@@ -24,12 +24,12 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.BaseActivity.EventListener;
 import com.android.documentsui.base.RootInfo;
 import com.android.documentsui.files.FilesActivity;
-import com.android.documentsui.ActivityTest;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
index 6dd8044..8054c38 100644
--- a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
@@ -26,8 +26,8 @@
 import android.support.test.jank.GfxMonitor;
 import android.support.test.jank.JankTest;
 import android.support.test.jank.JankTestBase;
-import android.test.suitebuilder.annotation.LargeTest;
 
+import androidx.test.filters.LargeTest;
 import androidx.test.uiautomator.UiDevice;
 import androidx.test.uiautomator.UiScrollable;
 
diff --git a/perfetto_config.pbtx b/perfetto_config.pbtx
new file mode 100644
index 0000000..7c5bfa1
--- /dev/null
+++ b/perfetto_config.pbtx
@@ -0,0 +1,222 @@
+buffers: {
+    size_kb: 63488
+    fill_policy: DISCARD
+}
+buffers: {
+    size_kb: 2048
+    fill_policy: DISCARD
+}
+# Max duration: 1 min
+duration_ms: 60000
+
+data_sources: {
+    config {
+        name: "linux.ftrace"
+
+        # See: https://perfetto.dev/docs/data-sources/atrace#traceconfig
+        ftrace_config {
+            ftrace_events: "ftrace/print"
+
+            # Trace all ContentProvider commands and SQLite queries.
+            # See: https://source.corp.google.com/android-internal/frameworks/base/core/java/android/os/Trace.java?q=TRACE_TAG_DATABASE
+            # See: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/database/sqlite/SQLiteConnection.java
+            # Uncomment to enable.
+            # Note: on a userdebug build it will add a trace for every SQLite command for every
+            # application, which makes traces very-very "noisy".
+            # atrace_categories: "database"
+
+            # Trace Binder IPC transactions.
+            # Uncomment to enable.
+            # Note: on a userdebug build it will add a trace for every Binder transaction for every
+            # application, which makes traces very-very "noisy".
+            # atrace_categories: "binder_driver"
+
+            # ActivityManager, WindowManager, Graphics, View System.
+            # Uncomment to enable.
+            # Note: on a userdebug build it will traces from corresponding category for every
+            # application, which makes traces very-very "noisy".
+            # atrace_categories: "wm"
+            # atrace_categories: "am"
+            atrace_categories: "gfx"
+            atrace_categories: "view"
+
+            # Trace DocumentUI "custom" events.
+            atrace_apps: "com.android.documentsui"
+            atrace_apps: "com.google.android.documentsui"
+
+            # Trace other Providers.
+
+            # authorities="com.android.documentsui.archives" - DocsUI
+            atrace_apps: "com.android.documentsui"
+            atrace_apps: "com.google.android.documentsui"
+
+            # authorities="com.android.externalstorage.documents" - ExternalStorageProvider
+            atrace_apps: "com.android.externalstorage"
+
+            # authorities="com.android.mtp.documents" - Mtp
+            atrace_apps: "com.android.mtp"
+
+            # authorities="com.android.pixellogger.documents" - PixelLogger
+            atrace_apps: "com.android.pixellogger"
+
+            # authorities="com.android.providers.downloads" - DownloadSProvider
+            atrace_apps: "com.android.providers.downloads.documents"
+
+            # authorities="com.android.providers.media.documents" - MediaProvider
+            atrace_apps: "com.android.providers.media.module"
+            atrace_apps: "com.google.android.providers.media.module"
+
+            # authorities="com.android.shell.documents" - Shell (BugreportStorageProvider)
+            # atrace_apps: "android.uid.shell"
+
+            # authorities="com.google.android.apps.docs.storage" - Google Docs
+            atrace_apps: "com.google.android.apps.docs"
+
+            # Google Photos.
+            # atrace_apps: "com.google.android.apps.photos"
+
+            # Trace all apps' events.
+            # Uncomment to enable.
+            # atrace_apps: "*"
+        }
+    }
+}
+
+# This is for getting Thread-to-Process associations and full process names.
+data_sources: {
+    config {
+        name: "linux.process_stats"
+    }
+}
+
+# "Expected Timeline" and "Actual Timeline" jor each process
+# See https://perfetto.dev/docs/data-sources/frametimeline#traceconfig
+data_sources {
+    config {
+        name: "android.surfaceflinger.frametimeline"
+    }
+}
+
+# Memory Profiling
+# See https://perfetto.dev/docs/data-sources/memory-counters
+
+# Android Logcat
+data_sources: {
+    config {
+        name: "android.log"
+        android_log_config {
+            min_prio: PRIO_VERBOSE # Default: PRIO_DEBUG
+
+            log_ids: LID_EVENTS
+            log_ids: LID_CRASH
+            log_ids: LID_KERNEL
+            log_ids: LID_DEFAULT
+            log_ids: LID_RADIO
+            log_ids: LID_SECURITY
+            log_ids: LID_STATS
+            log_ids: LID_SYSTEM
+
+            # If filter_tags non-empty ignores all log messages whose tag doesn't match one of the
+            # specified values.
+            # filter_tags: "AbstractActionHandler"
+            # filter_tags: "ActionModeController"
+            # filter_tags: "Archive"
+            # filter_tags: "ArchiveFileTestRule"
+            # filter_tags: "ArchiveHandle"
+            # filter_tags: "ArchivesProvider"
+            # filter_tags: "CancelFromNotificationUiTest"
+            # filter_tags: "ClipStorage"
+            # filter_tags: "CommandInterceptor"
+            # filter_tags: "CompressJob"
+            # filter_tags: "ConfirmFragment"
+            # filter_tags: "ContentLock"
+            # filter_tags: "CopyJob"
+            # filter_tags: "DebugHelper"
+            # filter_tags: "DeleteJob"
+            # filter_tags: "DirectoryFragment"
+            # filter_tags: "DirectoryLoader"
+            # filter_tags: "DirectoryResult"
+            # filter_tags: "DocumentAccess"
+            # filter_tags: "DocumentClipper"
+            # filter_tags: "DocumentInfo"
+            # filter_tags: "DocumentStack"
+            # filter_tags: "Documents"
+            # filter_tags: "DocumentsApplication"
+            # filter_tags: "DocumentsSwipeRefreshLayout"
+            # filter_tags: "DragStartListener"
+            # filter_tags: "DrawerController"
+            # filter_tags: "EjectRootTask"
+            # filter_tags: "FileCopyUiTest"
+            # filter_tags: "FileDeleteUiTest"
+            # filter_tags: "FileOperationService"
+            # filter_tags: "FileOperations"
+            # filter_tags: "FilesActivity"
+            # filter_tags: "FilesAppPerfTest"
+            # filter_tags: "FocusManager"
+            # filter_tags: "GetRootDocumentTask"
+            # filter_tags: "HeaderItem"
+            # filter_tags: "HeaderMessage"
+            # filter_tags: "IconHelper"
+            # filter_tags: "ItemDragListener"
+            # filter_tags: "Job"
+            # filter_tags: "JumboUrisSupplier"
+            # filter_tags: "LastAccessedProvider"
+            # filter_tags: "LastAccessedStorage"
+            # filter_tags: "LauncherActivity"
+            # filter_tags: "ListDocumentHolder"
+            # filter_tags: "LoadDocStackTask"
+            # filter_tags: "LoadRootTask"
+            # filter_tags: "Loader"
+            # filter_tags: "ManagerActionHandler"
+            # filter_tags: "MenuManager"
+            # filter_tags: "MetadataLoader"
+            # filter_tags: "Metrics"
+            # filter_tags: "Model"
+            # filter_tags: "ModelBackedDocuments"
+            # filter_tags: "MoveJob"
+            # filter_tags: "MultiRootDocsLoader"
+            # filter_tags: "NavigationViewManager"
+            # filter_tags: "OperationDialogFragment"
+            # filter_tags: "PermissionsTest"
+            # filter_tags: "PickActivity"
+            # filter_tags: "PickCountRecordProvider"
+            # filter_tags: "PickCountRecordStorage"
+            # filter_tags: "PickFragment"
+            # filter_tags: "PickerActionHandler"
+            # filter_tags: "PreBootReceiver"
+            # filter_tags: "ProfileTabsController"
+            # filter_tags: "ProvidersCache"
+            # filter_tags: "QuickViewIntentBuilder"
+            # filter_tags: "ReadableArchive"
+            # filter_tags: "RefreshTask"
+            # filter_tags: "ResolvedResourcesJob"
+            # filter_tags: "RootCursorWrapper"
+            # filter_tags: "RootInfo"
+            # filter_tags: "RootItem"
+            # filter_tags: "RootUiTest"
+            # filter_tags: "RootsDragHost"
+            # filter_tags: "RootsFragment"
+            # filter_tags: "RootsListBot"
+            # filter_tags: "SaveFragment"
+            # filter_tags: "ScaleHelper"
+            # filter_tags: "ScopedAccessMetrics"
+            # filter_tags: "SearchFragment"
+            # filter_tags: "SearchHistoryManager"
+            # filter_tags: "SearchManager"
+            # filter_tags: "SectioningDocumentsAdapterWrapper"
+            # filter_tags: "SelectionMetadata"
+            # filter_tags: "SharedInputHandler"
+            # filter_tags: "SortModel"
+            # filter_tags: "SpacerItem"
+            # filter_tags: "State"
+            # filter_tags: "StubProvider"
+            # filter_tags: "TestContextResolver"
+            # filter_tags: "TestNotificationService"
+            # filter_tags: "ThemeOverlayManager"
+            # filter_tags: "ThumbnailLoader"
+            # filter_tags: "UserIdManager"
+            # filter_tags: "WriteableArchive"
+            # filter_tags: "dirlist.DragHost"
+        }
+    }
+}
diff --git a/src/com/android/documentsui/ActionModeController.java b/src/com/android/documentsui/ActionModeController.java
index 89b8ff3..1bd4eea 100644
--- a/src/com/android/documentsui/ActionModeController.java
+++ b/src/com/android/documentsui/ActionModeController.java
@@ -79,7 +79,8 @@
                     Log.d(TAG, "Starting action mode.");
                 }
                 mActionMode = mActivity.startActionMode(this);
-                final View closeButton = mActivity.findViewById(R.id.action_mode_close_button);
+                final View closeButton =
+                        mActivity.findViewById(androidx.appcompat.R.id.action_mode_close_button);
                 if (closeButton != null) {
                     closeButton.setContentDescription(mActivity.getString(android.R.string.cancel));
                 }
diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index 21112ff..6727f1c 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -181,7 +181,8 @@
         // move directory_header out of the AppBarLayout.
 
         Window window = mActivity.getWindow();
-        View actionBar = window.getDecorView().findViewById(R.id.action_mode_bar);
+        View actionBar =
+                window.getDecorView().findViewById(androidx.appcompat.R.id.action_mode_bar);
         int dynamicHeaderColor = ContextCompat.getColor(mActivity,
                 offset == 0 ? mDefaultStatusBarColorResId : R.color.color_surface_header);
         if (actionBar != null) {
diff --git a/src/com/android/documentsui/inspector/KeyValueRow.java b/src/com/android/documentsui/inspector/KeyValueRow.java
index 00ef819..349d017 100644
--- a/src/com/android/documentsui/inspector/KeyValueRow.java
+++ b/src/com/android/documentsui/inspector/KeyValueRow.java
@@ -98,9 +98,11 @@
     public void setOnClickListener(OnClickListener callback) {
         TextView clickable = ((TextView) findViewById(R.id.table_row_value));
         mDefaultTextColor = clickable.getTextColors();
-        TypedArray ta = getContext().obtainStyledAttributes(R.styleable.TextAppearance);
-        int linkColor = ta.getColor(R.styleable.TextAppearance_android_textColorLink,
-                mDefaultTextColor.getDefaultColor());
+        TypedArray ta =
+                getContext().obtainStyledAttributes(androidx.appcompat.R.styleable.TextAppearance);
+        int linkColor =
+                ta.getColor(androidx.appcompat.R.styleable.TextAppearance_android_textColorLink,
+                        mDefaultTextColor.getDefaultColor());
         ta.recycle();
         clickable.setTextColor(linkColor);
         clickable.setPaintFlags(clickable.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java
index b0c2987..053dc93 100644
--- a/src/com/android/documentsui/queries/SearchViewManager.java
+++ b/src/com/android/documentsui/queries/SearchViewManager.java
@@ -227,7 +227,7 @@
         mSearchView.setOnCloseListener(this);
         mSearchView.setOnSearchClickListener(this);
         mSearchView.setOnQueryTextFocusChangeListener(this);
-        final View clearButton = mSearchView.findViewById(R.id.search_close_btn);
+        final View clearButton = mSearchView.findViewById(androidx.appcompat.R.id.search_close_btn);
         if (clearButton != null) {
             clearButton.setPadding(clearButton.getPaddingStart() + getPixelForDp(4),
                     clearButton.getPaddingTop(), clearButton.getPaddingEnd() + getPixelForDp(4),
@@ -239,7 +239,7 @@
             });
         }
         if (SdkLevel.isAtLeastU()) {
-            final View textView = mSearchView.findViewById(R.id.search_src_text);
+            final View textView = mSearchView.findViewById(androidx.appcompat.R.id.search_src_text);
             if (textView != null) {
                 try {
                     textView.setIsHandwritingDelegate(true);
diff --git a/src/com/android/documentsui/sorting/SortController.java b/src/com/android/documentsui/sorting/SortController.java
index ccfc3f1..4fc2844 100644
--- a/src/com/android/documentsui/sorting/SortController.java
+++ b/src/com/android/documentsui/sorting/SortController.java
@@ -16,11 +16,11 @@
 
 package com.android.documentsui.sorting;
 
+import android.view.View;
+
 import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentActivity;
 
-import android.view.View;
-
 import com.android.documentsui.BaseActivity;
 import com.android.documentsui.Injector;
 import com.android.documentsui.MetricConsts;
@@ -67,19 +67,15 @@
         final Injector<?> injector = ((BaseActivity)activity).getInjector();
         sortModel.setMetricRecorder((SortDimension dimension) -> {
             int sortType = MetricConsts.USER_ACTION_UNKNOWN;
-            switch (dimension.getId()) {
-                case SortModel.SORT_DIMENSION_ID_TITLE:
-                    sortType = MetricConsts.USER_ACTION_SORT_NAME;
-                    break;
-                case SortModel.SORT_DIMENSION_ID_SIZE:
-                    sortType = MetricConsts.USER_ACTION_SORT_SIZE;
-                    break;
-                case SortModel.SORT_DIMENSION_ID_DATE:
-                    sortType = MetricConsts.USER_ACTION_SORT_DATE;
-                    break;
-                case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                    sortType = MetricConsts.USER_ACTION_SORT_TYPE;
-                    break;
+            final int id = dimension.getId();
+            if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
+                sortType = MetricConsts.USER_ACTION_SORT_NAME;
+            } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
+                sortType = MetricConsts.USER_ACTION_SORT_SIZE;
+            } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
+                sortType = MetricConsts.USER_ACTION_SORT_DATE;
+            } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+                sortType = MetricConsts.USER_ACTION_SORT_TYPE;
             }
 
             Metrics.logUserAction(sortType);
diff --git a/src/com/android/documentsui/sorting/SortListFragment.java b/src/com/android/documentsui/sorting/SortListFragment.java
index 7c33c9d..8d4032c 100644
--- a/src/com/android/documentsui/sorting/SortListFragment.java
+++ b/src/com/android/documentsui/sorting/SortListFragment.java
@@ -20,7 +20,6 @@
 
 import com.android.documentsui.R;
 import com.android.documentsui.sorting.SortDimension.SortDirection;
-import com.android.documentsui.sorting.SortModel.SortDimensionId;
 
 import com.google.android.material.bottomsheet.BottomSheetBehavior;
 import com.google.android.material.bottomsheet.BottomSheetDialog;
@@ -66,18 +65,15 @@
         for (int i = 0; i < mModel.getSize(); ++i) {
             SortDimension dimension = mModel.getDimensionAt(i);
             if (dimension.getSortCapability() != SortDimension.SORT_CAPABILITY_NONE) {
-                switch (dimension.getId()) {
-                    case SortModel.SORT_DIMENSION_ID_TITLE:
-                    case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                        addBothDirectionDimension(dimension, true);
-                        break;
-                    case SortModel.SORT_DIMENSION_ID_DATE:
-                    case SortModel.SORT_DIMENSION_ID_SIZE:
-                        addBothDirectionDimension(dimension, false);
-                        break;
-                    default:
-                        mSortingList.add(new SortItem(dimension));
-                        break;
+                final int id = dimension.getId();
+                if (id == SortModel.SORT_DIMENSION_ID_TITLE
+                        || id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+                    addBothDirectionDimension(dimension, true);
+                } else if (id == SortModel.SORT_DIMENSION_ID_DATE
+                        || id == SortModel.SORT_DIMENSION_ID_SIZE) {
+                    addBothDirectionDimension(dimension, false);
+                } else {
+                    mSortingList.add(new SortItem(dimension));
                 }
             }
         }
@@ -96,22 +92,21 @@
 
     public static @StringRes int getSheetLabelId(SortDimension dimension, @SortDirection int direction) {
         boolean isAscending = direction == SortDimension.SORT_DIRECTION_ASCENDING;
-        switch (dimension.getId()) {
-            case SortModel.SORT_DIMENSION_ID_TITLE:
-                return isAscending ? R.string.sort_dimension_name_ascending :
-                        R.string.sort_dimension_name_descending;
-            case SortModel.SORT_DIMENSION_ID_DATE:
-                return isAscending ? R.string.sort_dimension_date_ascending :
-                        R.string.sort_dimension_date_descending;
-            case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                return isAscending ? R.string.sort_dimension_file_type_ascending :
-                        R.string.sort_dimension_file_type_descending;
-            case SortModel.SORT_DIMENSION_ID_SIZE:
-                return isAscending ? R.string.sort_dimension_size_ascending :
-                        R.string.sort_dimension_size_descending;
-            default:
-                return dimension.getLabelId();
+        final int id = dimension.getId();
+        if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
+            return isAscending ? R.string.sort_dimension_name_ascending :
+                    R.string.sort_dimension_name_descending;
+        } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
+            return isAscending ? R.string.sort_dimension_date_ascending :
+                    R.string.sort_dimension_date_descending;
+        } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+            return isAscending ? R.string.sort_dimension_file_type_ascending :
+                    R.string.sort_dimension_file_type_descending;
+        } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
+            return isAscending ? R.string.sort_dimension_size_ascending :
+                    R.string.sort_dimension_size_descending;
         }
+        return dimension.getLabelId();
     }
 
     @Override
@@ -170,7 +165,7 @@
 
     private static class SortItem {
 
-        @SortDimensionId final int id;
+        final int id;
         @SortDirection final int direction;
         @StringRes final int labelId;
 
@@ -180,7 +175,7 @@
             labelId = dimension.getLabelId();
         }
 
-        SortItem(@SortDimensionId int id, @SortDirection int direction, @StringRes int labelId) {
+        SortItem(int id, @SortDirection int direction, @StringRes int labelId) {
             this.id = id;
             this.direction = direction;
             this.labelId = labelId;
diff --git a/src/com/android/documentsui/sorting/SortModel.java b/src/com/android/documentsui/sorting/SortModel.java
index 4e544a9..9bf5b96 100644
--- a/src/com/android/documentsui/sorting/SortModel.java
+++ b/src/com/android/documentsui/sorting/SortModel.java
@@ -47,16 +47,6 @@
  * Sort model that contains all columns and their sorting state.
  */
 public class SortModel implements Parcelable {
-    @IntDef({
-            SORT_DIMENSION_ID_UNKNOWN,
-            SORT_DIMENSION_ID_TITLE,
-            SORT_DIMENSION_ID_SUMMARY,
-            SORT_DIMENSION_ID_SIZE,
-            SORT_DIMENSION_ID_FILE_TYPE,
-            SORT_DIMENSION_ID_DATE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface SortDimensionId {}
     public static final int SORT_DIMENSION_ID_UNKNOWN = 0;
     public static final int SORT_DIMENSION_ID_TITLE = android.R.id.title;
     public static final int SORT_DIMENSION_ID_SUMMARY = android.R.id.summary;
@@ -239,32 +229,28 @@
         // should only be called when R.bool.feature_content_paging is true
 
         final int id = getSortedDimensionId();
-        switch (id) {
-            case SORT_DIMENSION_ID_UNKNOWN:
-                return;
-            case SortModel.SORT_DIMENSION_ID_TITLE:
-                queryArgs.putStringArray(
-                        ContentResolver.QUERY_ARG_SORT_COLUMNS,
-                        new String[]{ Document.COLUMN_DISPLAY_NAME });
-                break;
-            case SortModel.SORT_DIMENSION_ID_DATE:
-                queryArgs.putStringArray(
-                        ContentResolver.QUERY_ARG_SORT_COLUMNS,
-                        new String[]{ Document.COLUMN_LAST_MODIFIED });
-                break;
-            case SortModel.SORT_DIMENSION_ID_SIZE:
-                queryArgs.putStringArray(
-                        ContentResolver.QUERY_ARG_SORT_COLUMNS,
-                        new String[]{ Document.COLUMN_SIZE });
-                break;
-            case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                // Unfortunately sorting by mime type is pretty much guaranteed different from
-                // sorting by user-friendly type, so there is no point to guide the provider to sort
-                // in a particular order.
-                return;
-            default:
-                throw new IllegalStateException(
-                        "Unexpected sort dimension id: " + id);
+        if (id == SORT_DIMENSION_ID_UNKNOWN) {
+            return;
+        } else if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
+            queryArgs.putStringArray(
+                    ContentResolver.QUERY_ARG_SORT_COLUMNS,
+                    new String[]{Document.COLUMN_DISPLAY_NAME});
+        } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
+            queryArgs.putStringArray(
+                    ContentResolver.QUERY_ARG_SORT_COLUMNS,
+                    new String[]{Document.COLUMN_LAST_MODIFIED});
+        } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
+            queryArgs.putStringArray(
+                    ContentResolver.QUERY_ARG_SORT_COLUMNS,
+                    new String[]{Document.COLUMN_SIZE});
+        } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+            // Unfortunately sorting by mime type is pretty much guaranteed different from
+            // sorting by user-friendly type, so there is no point to guide the provider to sort
+            // in a particular order.
+            return;
+        } else {
+            throw new IllegalStateException(
+                    "Unexpected sort dimension id: " + id);
         }
 
         final SortDimension dimension = getDimensionById(id);
@@ -296,26 +282,22 @@
 
         final int id = getSortedDimensionId();
         final String columnName;
-        switch (id) {
-            case SORT_DIMENSION_ID_UNKNOWN:
-                return null;
-            case SortModel.SORT_DIMENSION_ID_TITLE:
-                columnName = Document.COLUMN_DISPLAY_NAME;
-                break;
-            case SortModel.SORT_DIMENSION_ID_DATE:
-                columnName = Document.COLUMN_LAST_MODIFIED;
-                break;
-            case SortModel.SORT_DIMENSION_ID_SIZE:
-                columnName = Document.COLUMN_SIZE;
-                break;
-            case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                // Unfortunately sorting by mime type is pretty much guaranteed different from
-                // sorting by user-friendly type, so there is no point to guide the provider to sort
-                // in a particular order.
-                return null;
-            default:
-                throw new IllegalStateException(
-                        "Unexpected sort dimension id: " + id);
+        if (id == SORT_DIMENSION_ID_UNKNOWN) {
+            return null;
+        } else if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
+            columnName = Document.COLUMN_DISPLAY_NAME;
+        } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
+            columnName = Document.COLUMN_LAST_MODIFIED;
+        } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
+            columnName = Document.COLUMN_SIZE;
+        } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+            // Unfortunately sorting by mime type is pretty much guaranteed different from
+            // sorting by user-friendly type, so there is no point to guide the provider to sort
+            // in a particular order.
+            return null;
+        } else {
+            throw new IllegalStateException(
+                    "Unexpected sort dimension id: " + id);
         }
 
         final SortDimension dimension = getDimensionById(id);
diff --git a/src/com/android/documentsui/sorting/SortingCursorWrapper.java b/src/com/android/documentsui/sorting/SortingCursorWrapper.java
index d8c686c..1e359a3 100644
--- a/src/com/android/documentsui/sorting/SortingCursorWrapper.java
+++ b/src/com/android/documentsui/sorting/SortingCursorWrapper.java
@@ -27,7 +27,6 @@
 
 import com.android.documentsui.base.Lookup;
 import com.android.documentsui.base.Shared;
-import com.android.documentsui.sorting.SortModel.SortDimensionId;
 
 /**
  * Cursor wrapper that presents a sorted view of the underlying cursor. Handles
@@ -49,16 +48,13 @@
         long[] longValues = null;
         String[] ids = new String[count];
 
-        final @SortDimensionId int id = dimension.getId();
-        switch (id) {
-            case SortModel.SORT_DIMENSION_ID_TITLE:
-            case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                stringValues = new String[count];
-                break;
-            case SortModel.SORT_DIMENSION_ID_DATE:
-            case SortModel.SORT_DIMENSION_ID_SIZE:
-                longValues = new long[count];
-                break;
+        final int id = dimension.getId();
+        if (id == SortModel.SORT_DIMENSION_ID_TITLE
+                || id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+            stringValues = new String[count];
+        } else if (id == SortModel.SORT_DIMENSION_ID_DATE
+                || id == SortModel.SORT_DIMENSION_ID_SIZE) {
+            longValues = new long[count];
         }
 
         cursor.moveToPosition(-1);
@@ -70,34 +66,26 @@
             isDirs[i] = Document.MIME_TYPE_DIR.equals(mimeType);
             ids[i] = getCursorString(mCursor, Document.COLUMN_DOCUMENT_ID);
 
-            switch(id) {
-                case SortModel.SORT_DIMENSION_ID_TITLE:
-                    final String displayName = getCursorString(
-                            mCursor, Document.COLUMN_DISPLAY_NAME);
-                    stringValues[i] = displayName;
-                    break;
-                case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                    stringValues[i] = fileTypeLookup.lookup(mimeType);
-                    break;
-                case SortModel.SORT_DIMENSION_ID_DATE:
-                    longValues[i] = getLastModified(mCursor);
-                    break;
-                case SortModel.SORT_DIMENSION_ID_SIZE:
-                    longValues[i] = getCursorLong(mCursor, Document.COLUMN_SIZE);
-                    break;
+            if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
+                final String displayName = getCursorString(
+                        mCursor, Document.COLUMN_DISPLAY_NAME);
+                stringValues[i] = displayName;
+            } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+                stringValues[i] = fileTypeLookup.lookup(mimeType);
+            } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
+                longValues[i] = getLastModified(mCursor);
+            } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
+                longValues[i] = getCursorLong(mCursor, Document.COLUMN_SIZE);
             }
 
         }
 
-        switch (id) {
-            case SortModel.SORT_DIMENSION_ID_TITLE:
-            case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
-                binarySort(stringValues, isDirs, mPosition, ids, dimension.getSortDirection());
-                break;
-            case SortModel.SORT_DIMENSION_ID_DATE:
-            case SortModel.SORT_DIMENSION_ID_SIZE:
-                binarySort(longValues, isDirs, mPosition, ids, dimension.getSortDirection());
-                break;
+        if (id == SortModel.SORT_DIMENSION_ID_TITLE
+                || id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
+            binarySort(stringValues, isDirs, mPosition, ids, dimension.getSortDirection());
+        } else if (id == SortModel.SORT_DIMENSION_ID_DATE
+                || id == SortModel.SORT_DIMENSION_ID_SIZE) {
+            binarySort(longValues, isDirs, mPosition, ids, dimension.getSortDirection());
         }
 
     }
diff --git a/src/com/android/documentsui/sorting/TableHeaderController.java b/src/com/android/documentsui/sorting/TableHeaderController.java
index f3853c0..549478c 100644
--- a/src/com/android/documentsui/sorting/TableHeaderController.java
+++ b/src/com/android/documentsui/sorting/TableHeaderController.java
@@ -19,7 +19,6 @@
 import android.view.View;
 
 import com.android.documentsui.R;
-import com.android.documentsui.sorting.SortModel.SortDimensionId;
 
 import javax.annotation.Nullable;
 
@@ -78,7 +77,7 @@
         mModel.removeListener(mModelListener);
     }
 
-    private void bindCell(HeaderCell cell, @SortDimensionId int id) {
+    private void bindCell(HeaderCell cell, int id) {
         assert(cell != null);
         SortDimension dimension = mModel.getDimensionById(id);
 
diff --git a/tests/Android.bp b/tests/Android.bp
index 65a4bbd..334901d 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -16,35 +16,79 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-filegroup {
-    name: "DocumentsUIPerfTests-files",
+java_defaults {
+    name: "DocumentsUITests-defaults",
+    libs: [
+        "android.test.base",
+        "android.test.mock",
+        "android.test.runner",
+    ],
+
+    static_libs: [
+        "DocumentsUI-lib",
+        "androidx.test.rules",
+        "androidx.test.espresso.core",
+        "androidx.test.ext.truth",
+        "guava",
+        "mockito-target",
+        "androidx.test.uiautomator_uiautomator",
+    ],
+}
+
+android_library {
+    name: "DocumentsUIPerfTests-lib",
     srcs: [
         "common/com/android/documentsui/**/*.java",
         "functional/com/android/documentsui/ActivityTest.java",
     ],
+    resource_dirs: [],
+    libs: [
+        "android.test.base",
+        "android.test.mock",
+        "android.test.runner",
+        "DocumentsUI-lib",
+    ],
+
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "androidx.test.rules",
+        "androidx.test.espresso.core",
+        "mockito-target",
+        "ub-janktesthelper",
+        "androidx.test.uiautomator_uiautomator",
+    ],
 }
 
-filegroup {
-    name: "DocumentsUITests-srcs",
+android_library {
+    name: "DocumentsUIUnitTests-lib",
+    defaults: ["DocumentsUITests-defaults"],
+
+    manifest: "AndroidManifestUnitTests.xml",
+
+    srcs: [
+        "common/**/*.java",
+        "unit/**/*.java",
+    ],
+
+    resource_dirs: [
+        "res",
+    ],
+
+    min_sdk_version: "29",
+    target_sdk_version: "29",
+}
+
+android_library {
+    name: "DocumentsUITests-lib",
+    defaults: ["DocumentsUITests-defaults"],
+
+    manifest: "AndroidManifest.xml",
+
     srcs: [
         "common/**/*.java",
         "functional/**/*.java",
         "unit/**/*.java",
     ],
-}
-
-filegroup {
-    name: "DocumentsUIUnitTests-srcs",
-    srcs: [
-        "common/**/*.java",
-        "unit/**/*.java",
-    ],
-}
-
-android_library {
-    name: "DocumentsUITests-res-lib",
-
-    manifest: "AndroidManifest.xml",
 
     asset_dirs: [
         "assets",
@@ -57,45 +101,25 @@
     aaptflags: [
         // pack some raw file locate in assets folder
         "-0 .zip",
-        "--auto-add-overlay",
     ],
 
-    min_sdk_version : "29",
-    target_sdk_version : "29",
+    min_sdk_version: "29",
+    target_sdk_version: "29",
+    lint: {
+        baseline_filename: "lint-baseline.xml",
+    },
 }
 
 android_test {
     name: "DocumentsUITests",
+    defaults: ["DocumentsUITests-defaults"],
 
     manifest: "AndroidManifest.xml",
 
-    srcs: [
-        "common/**/*.java",
-        "functional/**/*.java",
-        "unit/**/*.java",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
-
-    aaptflags: [
-        "-0 .zip",
-    ],
-
-    libs: [
-        "android.test.base",
-        "android.test.mock",
-        "android.test.runner",
-    ],
+    resource_dirs: [],
 
     static_libs: [
-        "androidx.test.rules",
-        "androidx.test.espresso.core",
-        "androidx.test.ext.truth",
-        "guava",
-        "mockito-target",
-        "androidx.test.uiautomator_uiautomator",
+        "DocumentsUITests-lib",
     ],
 
     jarjar_rules: "jarjar-rules.txt",
@@ -110,6 +134,6 @@
     certificate: "platform",
 
     instrumentation_for: "DocumentsUI",
-    min_sdk_version : "29",
-    target_sdk_version : "29",
+    min_sdk_version: "29",
+    target_sdk_version: "29",
 }
diff --git a/tests/AndroidManifestUnitTests.xml b/tests/AndroidManifestUnitTests.xml
new file mode 100644
index 0000000..13d7a08
--- /dev/null
+++ b/tests/AndroidManifestUnitTests.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.documentsui.tests">
+
+</manifest>
diff --git a/tests/common/com/android/documentsui/bots/SearchBot.java b/tests/common/com/android/documentsui/bots/SearchBot.java
index 51f9394..bde74ca 100644
--- a/tests/common/com/android/documentsui/bots/SearchBot.java
+++ b/tests/common/com/android/documentsui/bots/SearchBot.java
@@ -33,12 +33,13 @@
 import android.content.Context;
 import android.view.View;
 
-import androidx.recyclerview.R;
 import androidx.test.uiautomator.UiDevice;
 import androidx.test.uiautomator.UiObject;
 import androidx.test.uiautomator.UiObjectNotFoundException;
 import androidx.test.uiautomator.UiSelector;
 
+import com.android.documentsui.R;
+
 import org.hamcrest.Matcher;
 
 /**
@@ -60,7 +61,7 @@
     // require this input be not clickable.
     @SuppressWarnings("unchecked")
     private static final Matcher<View> SEARCH_INPUT = allOf(
-            withId(R.id.search_src_text),
+            withId(androidx.appcompat.R.id.search_src_text),
             isDisplayed());
 
     public SearchBot(UiDevice device, Context context, int timeout) {
diff --git a/tests/common/com/android/documentsui/bots/SortBot.java b/tests/common/com/android/documentsui/bots/SortBot.java
index 74493ca..0a77de4 100644
--- a/tests/common/com/android/documentsui/bots/SortBot.java
+++ b/tests/common/com/android/documentsui/bots/SortBot.java
@@ -45,7 +45,6 @@
 import com.android.documentsui.sorting.SortDimension.SortDirection;
 import com.android.documentsui.sorting.SortListFragment;
 import com.android.documentsui.sorting.SortModel;
-import com.android.documentsui.sorting.SortModel.SortDimensionId;
 
 import org.hamcrest.Matcher;
 
@@ -67,7 +66,7 @@
         mUiBot = uiBot;
     }
 
-    public void sortBy(@SortDimensionId int id, @SortDirection int direction) {
+    public void sortBy(int id, @SortDirection int direction) {
         assert(direction != SortDimension.SORT_DIRECTION_NONE);
 
         final @StringRes int labelId = mSortModel.getDimensionById(id).getLabelId();
@@ -102,7 +101,7 @@
         assertTrue(Matchers.present(mColumnBot.MATCHER));
     }
 
-    private boolean sortByMenu(@SortDimensionId int id, @SortDirection int direction) {
+    private boolean sortByMenu(int id, @SortDirection int direction) {
         assert(direction != SortDimension.SORT_DIRECTION_NONE);
 
         clickMenuSort();
diff --git a/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java b/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
index b8ef8d6..a33cca3 100644
--- a/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
+++ b/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
@@ -21,7 +21,6 @@
 
 import android.os.RemoteException;
 
-import androidx.recyclerview.R;
 import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.base.RootInfo;
diff --git a/tests/functional/com/android/documentsui/SearchViewUiTest.java b/tests/functional/com/android/documentsui/SearchViewUiTest.java
index 04ea87a..78ce44a 100644
--- a/tests/functional/com/android/documentsui/SearchViewUiTest.java
+++ b/tests/functional/com/android/documentsui/SearchViewUiTest.java
@@ -19,7 +19,6 @@
 import static com.android.documentsui.StubProvider.ROOT_0_ID;
 import static com.android.documentsui.StubProvider.ROOT_1_ID;
 
-import androidx.recyclerview.R;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.Suppress;
 
diff --git a/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
index 7092d12..da470da 100644
--- a/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
+++ b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
@@ -21,9 +21,9 @@
 import android.os.ParcelFileDescriptor;
 import android.provider.DocumentsContract.Document;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
index 8a2b21f..ac417c9 100644
--- a/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
+++ b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
@@ -25,8 +25,8 @@
 import android.os.Bundle;
 import android.os.Looper;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
 
+import androidx.test.filters.MediumTest;
 import androidx.test.rule.provider.ProviderTestRule;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
index 7b2cb82..525397b 100644
--- a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
+++ b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
@@ -23,9 +23,10 @@
 import android.app.Notification;
 import android.net.Uri;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
 import android.text.format.DateUtils;
 
+import androidx.test.filters.MediumTest;
+
 import com.android.documentsui.R;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/tests/lint-baseline.xml b/tests/lint-baseline.xml
new file mode 100644
index 0000000..ed87eb9
--- /dev/null
+++ b/tests/lint-baseline.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        when(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="85"
+            column="30"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        when(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="89"
+            column="30"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="104"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        verify(mOverlayManager, times(1)).getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="116"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, never()).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                         ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="129"
+            column="42"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        assertThat(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="137"
+            column="36"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+        errorLine1="                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+        errorLine2="                                    ~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="138"
+            column="37"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="146"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        assertThat(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="154"
+            column="36"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+        errorLine1="                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+        errorLine2="                                    ~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="155"
+            column="37"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="163"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="                mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="192"
+            column="33"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `new android.content.om.OverlayInfo`"
+        errorLine1='        return new OverlayInfo(packageName, targetPackageName, null, null, "",'
+        errorLine2="               ~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="211"
+            column="16"/>
+    </issue>
+
+</issues>
\ No newline at end of file
diff --git a/tests/unit/com/android/documentsui/FocusManagerTest.java b/tests/unit/com/android/documentsui/FocusManagerTest.java
index 67e7000..36637f3 100644
--- a/tests/unit/com/android/documentsui/FocusManagerTest.java
+++ b/tests/unit/com/android/documentsui/FocusManagerTest.java
@@ -17,10 +17,10 @@
 package com.android.documentsui;
 
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
 import androidx.recyclerview.selection.SelectionTracker;
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SmallTest;
 
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.dirlist.TestData;
diff --git a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
index eba30d2..4e73333 100644
--- a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
+++ b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
@@ -28,8 +28,8 @@
 import android.net.Uri;
 import android.provider.DocumentsContract;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
+import androidx.test.filters.SmallTest;
 import androidx.test.rule.provider.ProviderTestRule;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
index 4334608..09b1933 100644
--- a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
@@ -18,12 +18,12 @@
 
 import android.database.Cursor;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View;
 import android.widget.Space;
 
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SmallTest;
 
 import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.testing.TestRecyclerView;
diff --git a/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
index e25d227..f4e0422 100644
--- a/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
+++ b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
@@ -20,12 +20,12 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.LocaleList;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.textclassifier.TextClassification;
 import android.view.textclassifier.TextClassificationManager;
 import android.view.textclassifier.TextClassifier;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.testing.TestPackageManager;
diff --git a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
index 30178ce..28bc667 100644
--- a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
+++ b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
@@ -19,12 +19,12 @@
 import static junit.framework.Assert.assertTrue;
 
 import android.content.Context;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.widget.TextView;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.inspector.HeaderTextSelector.Selector;
diff --git a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
index 9a7bad5..f3d5b59 100644
--- a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
+++ b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
@@ -29,10 +29,10 @@
 import android.os.UserHandle;
 import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View.OnClickListener;
 
 import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
index 80c3c47..db87e42 100644
--- a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
+++ b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
@@ -19,8 +19,8 @@
 import android.media.MediaMetadata;
 import android.os.Bundle;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.SmallTest;
 
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.R;
diff --git a/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
index cab6641..255c1cb 100644
--- a/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
+++ b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
@@ -21,9 +21,9 @@
 
 import android.provider.DocumentsContract;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
 import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
 
 import com.android.documentsui.base.Providers;
 import com.android.documentsui.base.RootInfo;
diff --git a/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java b/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
index e323dc8..72ad1b7 100644
--- a/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
+++ b/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
@@ -34,7 +34,6 @@
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.Shared;
 import com.android.documentsui.roots.RootCursorWrapper;
-import com.android.documentsui.sorting.SortModel.SortDimensionId;
 import com.android.documentsui.testing.SortModels;
 import com.android.documentsui.testing.TestFileTypeLookup;
 
@@ -497,7 +496,7 @@
     }
 
     private Cursor createSortingCursorWrapper(Cursor c) {
-        final @SortDimensionId int id = sortModel.getSortedDimensionId();
+        final int id = sortModel.getSortedDimensionId();
         return new SortingCursorWrapper(c, sortModel.getDimensionById(id), fileTypeLookup);
     }
 }
diff --git a/trace.sh b/trace.sh
new file mode 100755
index 0000000..573d923
--- /dev/null
+++ b/trace.sh
@@ -0,0 +1,3 @@
+$ANDROID_BUILD_TOP/external/perfetto/tools/record_android_trace \
+  -c $ANDROID_BUILD_TOP/packages/apps/DocumentsUI/perfetto_config.pbtx \
+  -o /tmp/perfetto-traces/docsui-$(date +"%d-%m-%Y_%H-%M-%S").perfetto-trace
