diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/content/res/AppCompatResources.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/content/res/AppCompatResources.java
index 8bb6a4e..b97ec39 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/content/res/AppCompatResources.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/content/res/AppCompatResources.java
@@ -16,7 +16,6 @@
 
 package androidx.appcompat.content.res;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.graphics.drawable.Drawable;
@@ -32,7 +31,6 @@
  * Class for accessing an application's resources through AppCompat, and thus any backward
  * compatible functionality.
  */
-@SuppressLint("RestrictedAPI") // Temporary until we have correct restriction scopes for 1.0
 public final class AppCompatResources {
 
     private AppCompatResources() {}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
index 6abb1a2..e5f01b4 100644
--- a/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
+++ b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
@@ -323,7 +323,6 @@
         return mCamera.cameraInfo.getSensorRotationDegrees(targetRotation)
     }
 
-    @Suppress("RestrictedApi")
     @VisibleForTesting
     fun getCaptureResolution(): Size {
         val resolution = mImageCapture.attachedSurfaceResolution
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/CameraControllerFragment.java b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/CameraControllerFragment.java
index 1f2a77f..c03d5ad 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/CameraControllerFragment.java
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/CameraControllerFragment.java
@@ -21,7 +21,6 @@
 import static androidx.camera.video.VideoRecordEvent.Finalize.ERROR_NONE;
 
 import android.Manifest;
-import android.annotation.SuppressLint;
 import android.app.Dialog;
 import android.content.ContentResolver;
 import android.content.ContentValues;
@@ -92,7 +91,6 @@
 /**
  * {@link Fragment} for testing {@link LifecycleCameraController}.
  */
-@SuppressLint("RestrictedAPI")
 public class CameraControllerFragment extends Fragment {
 
     private static final String TAG = "CameraCtrlFragment";
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/StreamSharingActivity.kt b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/StreamSharingActivity.kt
index 6577ce6..fb6738a 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/StreamSharingActivity.kt
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/StreamSharingActivity.kt
@@ -214,7 +214,6 @@
         return null
     }
 
-    @SuppressLint("RestrictedApi")
     private fun isStreamSharingEnabled(): Boolean {
         val isCombinationSupported =
             camera != null && camera!!.isUseCasesCombinationSupportedByFramework(*useCases)
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/TransformFragment.java b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/TransformFragment.java
index 5e6eaa3..67d7313 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/TransformFragment.java
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/TransformFragment.java
@@ -19,7 +19,6 @@
 import static java.lang.Math.abs;
 import static java.lang.Math.round;
 
-import android.annotation.SuppressLint;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.graphics.Bitmap;
@@ -73,7 +72,6 @@
 /**
  * A fragment that demos transform utilities.
  */
-@SuppressLint("RestrictedAPI")
 @OptIn(markerClass = TransformExperimental.class)
 public final class TransformFragment extends Fragment {
 
@@ -114,7 +112,6 @@
 
         @Override
         @OptIn(markerClass = TransformExperimental.class)
-        @SuppressWarnings("RestrictedApi")
         public void analyze(@NonNull ImageProxy imageProxy) {
             // Find the brightest tile to highlight.
             mBrightestTile = findBrightestTile(imageProxy);
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/graphics/vector/compat/XmlVectorParser.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/graphics/vector/compat/XmlVectorParser.android.kt
index d707d26..a489ab9 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/graphics/vector/compat/XmlVectorParser.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/graphics/vector/compat/XmlVectorParser.android.kt
@@ -136,8 +136,6 @@
     }
     return this
 }
-
-@SuppressWarnings("RestrictedApi")
 internal fun AndroidVectorParser.createVectorImageBuilder(
     res: Resources,
     theme: Resources.Theme?,
@@ -253,7 +251,6 @@
 }
 
 @Throws(IllegalArgumentException::class)
-@SuppressWarnings("RestrictedApi")
 internal fun AndroidVectorParser.parsePath(
     res: Resources,
     theme: Resources.Theme?,
@@ -380,8 +377,6 @@
         trimPathOffset
     )
 }
-
-@SuppressWarnings("RestrictedApi")
 private fun obtainBrushFromComplexColor(complexColor: ComplexColorCompat): Brush? =
     if (complexColor.willDraw()) {
         val shader = complexColor.shader
@@ -426,8 +421,6 @@
         clipPathData = pathData
     )
 }
-
-@SuppressWarnings("RestrictedApi")
 internal fun AndroidVectorParser.parseGroup(
     res: Resources,
     theme: Resources.Theme?,
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
index eeb02ee..61ae249 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
@@ -77,7 +77,6 @@
  * This method assumes the parser is already been positioned to the start tag
  */
 @Throws(XmlPullParserException::class)
-@SuppressWarnings("RestrictedApi")
 internal fun loadVectorResourceInner(
     theme: Resources.Theme? = null,
     res: Resources,
diff --git a/fragment/fragment-testing-manifest/src/main/java/androidx/fragment/app/testing/EmptyFragmentActivity.kt b/fragment/fragment-testing-manifest/src/main/java/androidx/fragment/app/testing/EmptyFragmentActivity.kt
index 1a60987..298c1f4 100644
--- a/fragment/fragment-testing-manifest/src/main/java/androidx/fragment/app/testing/EmptyFragmentActivity.kt
+++ b/fragment/fragment-testing-manifest/src/main/java/androidx/fragment/app/testing/EmptyFragmentActivity.kt
@@ -16,7 +16,6 @@
 
 package androidx.fragment.app.testing
 
-import android.annotation.SuppressLint
 import android.os.Bundle
 import androidx.annotation.RestrictTo
 import androidx.fragment.app.FragmentActivity
@@ -28,7 +27,6 @@
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 class EmptyFragmentActivity : FragmentActivity() {
-    @SuppressLint("RestrictedApi")
     override fun onCreate(savedInstanceState: Bundle?) {
         setTheme(
             intent.getIntExtra(
diff --git a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
index b90929fe..5a98bb7 100644
--- a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
+++ b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
@@ -16,7 +16,6 @@
 
 package androidx.fragment.app.testing
 
-import android.annotation.SuppressLint
 import android.content.ComponentName
 import android.content.Intent
 import android.os.Bundle
@@ -498,7 +497,6 @@
             android.R.id.content
         )
 
-        @SuppressLint("RestrictedApi")
         internal fun <F : Fragment> internalLaunch(
             fragmentClass: Class<F>,
             fragmentArgs: Bundle?,
diff --git a/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt b/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
index 72d3ef7..7c8ba20 100644
--- a/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
+++ b/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
@@ -18,7 +18,6 @@
 
 package androidx.lifecycle
 
-import android.annotation.SuppressLint
 import android.os.Build
 import androidx.annotation.RequiresApi
 import androidx.arch.core.executor.ArchTaskExecutor
@@ -84,7 +83,6 @@
 }.also { liveData ->
     val flow = this
     if (flow is StateFlow<T>) {
-        @SuppressLint("RestrictedApi")
         if (ArchTaskExecutor.getInstance().isMainThread) {
             liveData.value = flow.value
         } else {
diff --git a/lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/LifecycleRegistry.kt b/lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/LifecycleRegistry.kt
index 03f2836..2ca01e2 100644
--- a/lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/LifecycleRegistry.kt
+++ b/lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/LifecycleRegistry.kt
@@ -15,7 +15,6 @@
  */
 package androidx.lifecycle
 
-import android.annotation.SuppressLint
 import androidx.annotation.MainThread
 import androidx.annotation.VisibleForTesting
 import androidx.arch.core.executor.ArchTaskExecutor
@@ -298,7 +297,6 @@
         _currentStateFlow.value = currentState
     }
 
-    @SuppressLint("RestrictedApi")
     private fun enforceMainThreadIfNeeded(methodName: String) {
         if (enforceMainThread) {
             check(ArchTaskExecutor.getInstance().isMainThread) {
diff --git a/media2/media2-common/src/main/java/androidx/media2/common/MediaParcelUtils.java b/media2/media2-common/src/main/java/androidx/media2/common/MediaParcelUtils.java
index 28afd0b..5e4d2ee 100644
--- a/media2/media2-common/src/main/java/androidx/media2/common/MediaParcelUtils.java
+++ b/media2/media2-common/src/main/java/androidx/media2/common/MediaParcelUtils.java
@@ -18,8 +18,6 @@
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.SuppressLint;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
@@ -97,7 +95,6 @@
     private MediaParcelUtils() {
     }
 
-    @SuppressLint("RestrictedApi")
     private static class MediaItemParcelImpl extends ParcelImpl {
         private final MediaItem mItem;
         MediaItemParcelImpl(MediaItem item) {
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/ByteArrayFrame.java b/media2/media2-player/src/main/java/androidx/media2/player/ByteArrayFrame.java
index 0bd16d5..b3b6488 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/ByteArrayFrame.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/ByteArrayFrame.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.os.Parcel;
 
 import androidx.annotation.Nullable;
@@ -29,7 +28,6 @@
 /**
  * Metadata entry consisting of an ID3 frame as a byte array.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class ByteArrayFrame implements Metadata.Entry {
 
     public final long mTimestamp;
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/DataSourceCallbackDataSource.java b/media2/media2-player/src/main/java/androidx/media2/player/DataSourceCallbackDataSource.java
index 8dc1cf1..64b4eda 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/DataSourceCallbackDataSource.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/DataSourceCallbackDataSource.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.net.Uri;
 
 import androidx.annotation.Nullable;
@@ -34,7 +33,6 @@
  * An ExoPayer {@link DataSource} for reading from a {@link DataSourceCallback}.
  */
 @SuppressWarnings("unchecked")
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class DataSourceCallbackDataSource extends BaseDataSource {
 
     /**
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerMediaPlayer2Impl.java b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerMediaPlayer2Impl.java
index 34bd710..aa89b4e 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerMediaPlayer2Impl.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerMediaPlayer2Impl.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.media.MediaDrm;
 import android.os.Handler;
@@ -52,7 +51,6 @@
 /**
  * An implementation of {@link MediaPlayer2} based on a repackaged version of ExoPlayer.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class ExoPlayerMediaPlayer2Impl extends MediaPlayer2
         implements ExoPlayerWrapper.Listener {
 
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerUtils.java b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerUtils.java
index b16c069..b8b3777 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerUtils.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerUtils.java
@@ -67,7 +67,6 @@
 /**
  * Utility methods for translating between the MediaPlayer2 and ExoPlayer APIs.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ class ExoPlayerUtils {
 
     private static final ExtractorsFactory sExtractorsFactory = new DefaultExtractorsFactory()
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerWrapper.java b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerWrapper.java
index 1f424ba..bb31761 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerWrapper.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/ExoPlayerWrapper.java
@@ -18,7 +18,6 @@
 
 import static androidx.media2.player.MediaPlayer2.MEDIA_ERROR_UNKNOWN;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.os.Build;
 import android.os.Handler;
@@ -80,7 +79,6 @@
  * {@link MediaPlayer2} API. {@link #getLooper()} returns the looper on which all other method calls
  * must be made.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class ExoPlayerWrapper {
 
     private static final String TAG = "ExoPlayerWrapper";
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorDataSource.java b/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorDataSource.java
index c091df1..317338a 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorDataSource.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorDataSource.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.net.Uri;
 
 import androidx.annotation.Nullable;
@@ -36,7 +35,6 @@
  * An ExoPayer {@link DataSource} for reading from a file descriptor.
  */
 @SuppressWarnings("unchecked")
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ class FileDescriptorDataSource extends BaseDataSource {
 
     /**
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorUtil.java b/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorUtil.java
index 60eb166..9d342b8 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorUtil.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/FileDescriptorUtil.java
@@ -35,7 +35,6 @@
 /**
  * Utility methods for handling file descriptors.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class FileDescriptorUtil {
 
     /**
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/Id3MetadataDecoderFactory.java b/media2/media2-player/src/main/java/androidx/media2/player/Id3MetadataDecoderFactory.java
index bdfa169..7605110 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/Id3MetadataDecoderFactory.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/Id3MetadataDecoderFactory.java
@@ -17,8 +17,6 @@
 package androidx.media2.player;
 
 
-import android.annotation.SuppressLint;
-
 import androidx.media2.exoplayer.external.Format;
 import androidx.media2.exoplayer.external.metadata.Metadata;
 import androidx.media2.exoplayer.external.metadata.MetadataDecoder;
@@ -31,7 +29,6 @@
 /**
  * Factory for metadata decoders that provide raw ID3 data in {@link ByteArrayFrame}s.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class Id3MetadataDecoderFactory implements MetadataDecoderFactory {
 
     @Override
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/RenderersFactory.java b/media2/media2-player/src/main/java/androidx/media2/player/RenderersFactory.java
index 69684d1..8a7e976 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/RenderersFactory.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/RenderersFactory.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.os.Handler;
 
@@ -37,7 +36,6 @@
 /**
  * Factory for renderers for {@link ExoPlayerWrapper}.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class RenderersFactory
         implements androidx.media2.exoplayer.external.RenderersFactory {
 
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/TextRenderer.java b/media2/media2-player/src/main/java/androidx/media2/player/TextRenderer.java
index 69c398e..91cb1b0 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/TextRenderer.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/TextRenderer.java
@@ -16,7 +16,6 @@
 
 package androidx.media2.player;
 
-import android.annotation.SuppressLint;
 import android.os.Handler;
 import android.os.Looper;
 
@@ -42,7 +41,6 @@
  *
  * <p>The decoding process implemented here should match NuPlayer2CCDecoder.cpp in the framework.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ class TextRenderer extends BaseRenderer {
 
     /** Interface for text renderer outputs. */
diff --git a/media2/media2-player/src/main/java/androidx/media2/player/TrackSelector.java b/media2/media2-player/src/main/java/androidx/media2/player/TrackSelector.java
index 33c4c40..99f7bd6 100644
--- a/media2/media2-player/src/main/java/androidx/media2/player/TrackSelector.java
+++ b/media2/media2-player/src/main/java/androidx/media2/player/TrackSelector.java
@@ -30,7 +30,6 @@
 import static androidx.media2.player.TextRenderer.TRACK_TYPE_WEBVTT;
 import static androidx.media2.player.TrackSelector.InternalTextTrackInfo.UNSET;
 
-import android.annotation.SuppressLint;
 import android.media.MediaFormat;
 import android.util.SparseArray;
 
@@ -55,7 +54,6 @@
 /**
  * Manages track selection for {@link ExoPlayerWrapper}.
  */
-@SuppressLint("RestrictedApi") // TODO(b/68398926): Remove once RestrictedApi checks are fixed.
 /* package */ final class TrackSelector {
 
     private static final int TRACK_INDEX_UNSET = -1;
diff --git a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/room/CustomerViewModel.java b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/room/CustomerViewModel.java
index 731bf8a..5c2fdb3 100644
--- a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/room/CustomerViewModel.java
+++ b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/room/CustomerViewModel.java
@@ -16,7 +16,6 @@
 
 package androidx.paging.integration.testapp.room;
 
-import android.annotation.SuppressLint;
 import android.app.Application;
 
 import androidx.annotation.WorkerThread;
@@ -34,7 +33,6 @@
 
 import java.util.UUID;
 
-
 /**
  * Sample database-backed view model of Customers
  */
@@ -80,7 +78,6 @@
                 () -> mDatabase.getCustomerDao().insert(createCustomer()));
     }
 
-    @SuppressLint("RestrictedApi")
     void clearAllCustomers() {
         ArchTaskExecutor.getInstance().executeOnDiskIO(
                 () -> mDatabase.getCustomerDao().removeAll());
diff --git a/paging/paging-rxjava2/src/main/java/androidx/paging/RxPagedListBuilder.kt b/paging/paging-rxjava2/src/main/java/androidx/paging/RxPagedListBuilder.kt
index e0728608..7bbc4d7 100644
--- a/paging/paging-rxjava2/src/main/java/androidx/paging/RxPagedListBuilder.kt
+++ b/paging/paging-rxjava2/src/main/java/androidx/paging/RxPagedListBuilder.kt
@@ -16,7 +16,6 @@
 
 package androidx.paging
 
-import android.annotation.SuppressLint
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.paging.LoadState.Loading
 import io.reactivex.BackpressureStrategy
@@ -288,12 +287,10 @@
      */
     @Suppress("BuilderSetStyle", "DEPRECATION")
     fun buildObservable(): Observable<PagedList<Value>> {
-        @SuppressLint("RestrictedApi")
         val notifyScheduler = notifyScheduler
             ?: ScheduledExecutor(ArchTaskExecutor.getMainThreadExecutor())
         val notifyDispatcher = notifyDispatcher ?: notifyScheduler.asCoroutineDispatcher()
 
-        @SuppressLint("RestrictedApi")
         val fetchScheduler = fetchScheduler
             ?: ScheduledExecutor(ArchTaskExecutor.getIOThreadExecutor())
         val fetchDispatcher = fetchDispatcher ?: fetchScheduler.asCoroutineDispatcher()
diff --git a/paging/paging-rxjava3/src/main/java/androidx/paging/rxjava3/RxPagedListBuilder.kt b/paging/paging-rxjava3/src/main/java/androidx/paging/rxjava3/RxPagedListBuilder.kt
index d8b4d35..98e745a 100644
--- a/paging/paging-rxjava3/src/main/java/androidx/paging/rxjava3/RxPagedListBuilder.kt
+++ b/paging/paging-rxjava3/src/main/java/androidx/paging/rxjava3/RxPagedListBuilder.kt
@@ -16,7 +16,6 @@
 
 package androidx.paging.rxjava3
 
-import android.annotation.SuppressLint
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.paging.DataSource
 import androidx.paging.InitialPagedList
@@ -296,12 +295,10 @@
      */
     @Suppress("BuilderSetStyle", "DEPRECATION")
     fun buildObservable(): Observable<PagedList<Value>> {
-        @SuppressLint("RestrictedApi")
         val notifyScheduler = notifyScheduler
             ?: ScheduledExecutor(ArchTaskExecutor.getMainThreadExecutor())
         val notifyDispatcher = notifyDispatcher ?: notifyScheduler.asCoroutineDispatcher()
 
-        @SuppressLint("RestrictedApi")
         val fetchScheduler = fetchScheduler
             ?: ScheduledExecutor(ArchTaskExecutor.getIOThreadExecutor())
         val fetchDispatcher = fetchDispatcher ?: fetchScheduler.asCoroutineDispatcher()
diff --git a/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java b/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
index 7713e05..a6aeae8 100644
--- a/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
+++ b/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
@@ -38,7 +38,6 @@
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
 @SuppressWarnings("unused") // Used in GuavaListenableFutureQueryResultBinder code generation.
-@SuppressLint("RestrictedAPI") // ArchTaskExecutor can only be called from androidx.arch.core
 public class GuavaRoom {
 
     private GuavaRoom() {}
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/InvalidationTracker.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/InvalidationTracker.android.kt
index ec47164..6b18661 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/InvalidationTracker.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/InvalidationTracker.android.kt
@@ -15,7 +15,6 @@
  */
 package androidx.room
 
-import android.annotation.SuppressLint
 import android.content.Context
 import android.content.Intent
 import android.database.sqlite.SQLiteException
@@ -240,7 +239,6 @@
      *
      * @param observer The observer which listens the database for changes.
      */
-    @SuppressLint("RestrictedApi")
     @WorkerThread
     open fun addObserver(observer: Observer) {
         val tableNames = resolveViews(observer.tables)
@@ -312,7 +310,6 @@
      *
      * @param observer The observer to remove.
      */
-    @SuppressLint("RestrictedApi")
     @WorkerThread
     open fun removeObserver(observer: Observer) {
         val wrapper = synchronized(observerMap) {
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomTrackingLiveData.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomTrackingLiveData.android.kt
index 171b57d..f7c8df2 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomTrackingLiveData.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomTrackingLiveData.android.kt
@@ -15,7 +15,6 @@
  */
 package androidx.room
 
-import android.annotation.SuppressLint
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.lifecycle.LiveData
 import java.lang.Exception
@@ -38,7 +37,6 @@
  * This [LiveData] keeps a weak observer to the [InvalidationTracker] but it is hold
  * strongly by the [InvalidationTracker] as long as it is active.
  */
-@SuppressLint("RestrictedApi")
 internal class RoomTrackingLiveData<T> (
     val database: RoomDatabase,
     private val container: InvalidationLiveDataContainer,
diff --git a/room/room-testing/src/main/java/androidx/room/testing/MigrationTestHelper.kt b/room/room-testing/src/main/java/androidx/room/testing/MigrationTestHelper.kt
index fd0be27..70653a3 100644
--- a/room/room-testing/src/main/java/androidx/room/testing/MigrationTestHelper.kt
+++ b/room/room-testing/src/main/java/androidx/room/testing/MigrationTestHelper.kt
@@ -16,7 +16,6 @@
 
 package androidx.room.testing
 
-import android.annotation.SuppressLint
 import android.app.Instrumentation
 import android.content.Context
 import android.util.Log
@@ -177,7 +176,6 @@
      * @param version The version in which the database should be created.
      * @return A database connection which has the schema in the requested version.
      */
-    @SuppressLint("RestrictedApi")
     @Throws(IOException::class)
     open fun createDatabase(name: String, version: Int): SupportSQLiteDatabase {
         val dbPath: File = instrumentation.targetContext.getDatabasePath(name)
@@ -247,7 +245,6 @@
      * @param migrations            The list of available migrations.
      * @throws IllegalArgumentException If the schema validation fails.
      */
-    @SuppressLint("RestrictedApi")
     open fun runMigrationsAndValidate(
         name: String,
         version: Int,
diff --git a/samples/AndroidXDemos/src/main/java/com/example/androidx/graphics/PaletteActivity.java b/samples/AndroidXDemos/src/main/java/com/example/androidx/graphics/PaletteActivity.java
index 6e584bb..21058cc 100644
--- a/samples/AndroidXDemos/src/main/java/com/example/androidx/graphics/PaletteActivity.java
+++ b/samples/AndroidXDemos/src/main/java/com/example/androidx/graphics/PaletteActivity.java
@@ -16,7 +16,6 @@
 
 package com.example.androidx.graphics;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
@@ -174,7 +173,6 @@
 
             private int mNumColors;
 
-            @SuppressLint("RestrictedApi")
             public PhotosCursorAdapter(Context context, Cursor c) {
                 super(context, R.layout.palette_list_item, c, false);
             }
diff --git a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
index f793a7a..0bc3a13 100644
--- a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
+++ b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
@@ -20,7 +20,6 @@
 import static android.app.slice.Slice.HINT_TITLE;
 import static android.app.slice.SliceItem.FORMAT_TEXT;
 
-import android.annotation.SuppressLint;
 import android.app.ProgressDialog;
 import android.app.slice.SliceProvider;
 import android.content.ComponentName;
@@ -232,7 +231,6 @@
         return String.valueOf(findTitle(context, content, SliceMetadata.from(context, content)));
     }
 
-    @SuppressLint("RestrictedApi")
     protected static CharSequence findTitle(Context context, Slice loadedSlice,
             SliceMetadata metaData) {
         ListContent content = new ListContent(loadedSlice);
diff --git a/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistry.kt b/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistry.kt
index f269a28..da57fa4 100644
--- a/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistry.kt
+++ b/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistry.kt
@@ -15,7 +15,6 @@
  */
 package androidx.savedstate
 
-import android.annotation.SuppressLint
 import android.os.Bundle
 import androidx.annotation.MainThread
 import androidx.arch.core.internal.SafeIterableMap
@@ -29,7 +28,6 @@
  * This objects lifetime is bound to the lifecycle of owning component: when activity or
  * fragment is recreated, new instance of the object is created as well.
  */
-@SuppressLint("RestrictedApi")
 class SavedStateRegistry internal constructor() {
     private val components = SafeIterableMap<String, SavedStateProvider>()
     private var attached = false
diff --git a/transition/transition/src/main/java/androidx/transition/ArcMotion.java b/transition/transition/src/main/java/androidx/transition/ArcMotion.java
index 6c83dd4..bd297ef 100644
--- a/transition/transition/src/main/java/androidx/transition/ArcMotion.java
+++ b/transition/transition/src/main/java/androidx/transition/ArcMotion.java
@@ -16,7 +16,6 @@
 
 package androidx.transition;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Path;
@@ -66,8 +65,6 @@
     public ArcMotion() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public ArcMotion(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.ARC_MOTION);
diff --git a/transition/transition/src/main/java/androidx/transition/ChangeBounds.java b/transition/transition/src/main/java/androidx/transition/ChangeBounds.java
index 89077d0..e8cf7d6 100644
--- a/transition/transition/src/main/java/androidx/transition/ChangeBounds.java
+++ b/transition/transition/src/main/java/androidx/transition/ChangeBounds.java
@@ -20,7 +20,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
@@ -144,8 +143,6 @@
     public ChangeBounds() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public ChangeBounds(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
 
diff --git a/transition/transition/src/main/java/androidx/transition/ChangeTransform.java b/transition/transition/src/main/java/androidx/transition/ChangeTransform.java
index 0d5ae8f..f0bd400 100644
--- a/transition/transition/src/main/java/androidx/transition/ChangeTransform.java
+++ b/transition/transition/src/main/java/androidx/transition/ChangeTransform.java
@@ -20,7 +20,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Matrix;
@@ -109,8 +108,6 @@
     public ChangeTransform() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public ChangeTransform(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.CHANGE_TRANSFORM);
diff --git a/transition/transition/src/main/java/androidx/transition/Fade.java b/transition/transition/src/main/java/androidx/transition/Fade.java
index 4ce248e..edd1722 100644
--- a/transition/transition/src/main/java/androidx/transition/Fade.java
+++ b/transition/transition/src/main/java/androidx/transition/Fade.java
@@ -19,7 +19,6 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
@@ -98,8 +97,6 @@
     public Fade() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public Fade(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.FADE);
diff --git a/transition/transition/src/main/java/androidx/transition/FragmentTransitionSupport.java b/transition/transition/src/main/java/androidx/transition/FragmentTransitionSupport.java
index 7b668c7f..6f6f488 100644
--- a/transition/transition/src/main/java/androidx/transition/FragmentTransitionSupport.java
+++ b/transition/transition/src/main/java/androidx/transition/FragmentTransitionSupport.java
@@ -39,8 +39,6 @@
 // This is instantiated in androidx.fragment.app.FragmentTransition
 @SuppressWarnings("unused")
 @RestrictTo(LIBRARY_GROUP_PREFIX)
-@SuppressLint("RestrictedApi") // remove once fragment lib would be released with the new
-// LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
 public class FragmentTransitionSupport extends FragmentTransitionImpl {
 
     @Override
diff --git a/transition/transition/src/main/java/androidx/transition/PatternPathMotion.java b/transition/transition/src/main/java/androidx/transition/PatternPathMotion.java
index 36f88dec..2d440bb 100644
--- a/transition/transition/src/main/java/androidx/transition/PatternPathMotion.java
+++ b/transition/transition/src/main/java/androidx/transition/PatternPathMotion.java
@@ -16,7 +16,6 @@
 
 package androidx.transition;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Matrix;
@@ -57,8 +56,6 @@
         mOriginalPatternPath = mPatternPath;
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public PatternPathMotion(@NonNull Context context, @NonNull AttributeSet attrs) {
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.PATTERN_PATH_MOTION);
         try {
diff --git a/transition/transition/src/main/java/androidx/transition/Slide.java b/transition/transition/src/main/java/androidx/transition/Slide.java
index ea0f60d..03e3d51 100644
--- a/transition/transition/src/main/java/androidx/transition/Slide.java
+++ b/transition/transition/src/main/java/androidx/transition/Slide.java
@@ -20,7 +20,6 @@
 
 import android.animation.Animator;
 import android.animation.TimeInterpolator;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
@@ -162,8 +161,6 @@
         setSlideEdge(slideEdge);
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public Slide(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.SLIDE);
diff --git a/transition/transition/src/main/java/androidx/transition/Transition.java b/transition/transition/src/main/java/androidx/transition/Transition.java
index 89bb535..745f2b0 100644
--- a/transition/transition/src/main/java/androidx/transition/Transition.java
+++ b/transition/transition/src/main/java/androidx/transition/Transition.java
@@ -22,7 +22,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.TimeInterpolator;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
@@ -299,8 +298,6 @@
      *                access the current theme, resources, etc.
      * @param attrs   The attributes of the XML tag that is inflating the transition.
      */
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public Transition(@NonNull Context context, @NonNull AttributeSet attrs) {
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.TRANSITION);
         XmlResourceParser parser = (XmlResourceParser) attrs;
diff --git a/transition/transition/src/main/java/androidx/transition/TransitionInflater.java b/transition/transition/src/main/java/androidx/transition/TransitionInflater.java
index e1ae2a76..a5f612a 100644
--- a/transition/transition/src/main/java/androidx/transition/TransitionInflater.java
+++ b/transition/transition/src/main/java/androidx/transition/TransitionInflater.java
@@ -16,7 +16,6 @@
 
 package androidx.transition;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -223,8 +222,6 @@
         }
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     private void getTargetIds(XmlPullParser parser, AttributeSet attrs,
             @NonNull Transition transition) throws XmlPullParserException, IOException {
 
@@ -312,8 +309,6 @@
         return transitionManager;
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     private void loadTransition(AttributeSet attrs, XmlPullParser parser,
             @NonNull ViewGroup sceneRoot, TransitionManager transitionManager)
             throws Resources.NotFoundException {
diff --git a/transition/transition/src/main/java/androidx/transition/TransitionSet.java b/transition/transition/src/main/java/androidx/transition/TransitionSet.java
index 6c52d23..d1ae7bb0 100644
--- a/transition/transition/src/main/java/androidx/transition/TransitionSet.java
+++ b/transition/transition/src/main/java/androidx/transition/TransitionSet.java
@@ -19,7 +19,6 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
 import android.animation.TimeInterpolator;
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
@@ -112,8 +111,6 @@
     public TransitionSet() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public TransitionSet(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.TRANSITION_SET);
diff --git a/transition/transition/src/main/java/androidx/transition/Visibility.java b/transition/transition/src/main/java/androidx/transition/Visibility.java
index 5b1848b..543541a 100644
--- a/transition/transition/src/main/java/androidx/transition/Visibility.java
+++ b/transition/transition/src/main/java/androidx/transition/Visibility.java
@@ -99,8 +99,6 @@
     public Visibility() {
     }
 
-    @SuppressLint("RestrictedApi") // remove once core lib would be released with the new
-    // LIBRARY_GROUP_PREFIX restriction. tracking in b/127286008
     public Visibility(@NonNull Context context, @NonNull AttributeSet attrs) {
         super(context, attrs);
         TypedArray a = context.obtainStyledAttributes(attrs, Styleable.VISIBILITY_TRANSITION);
