diff --git a/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java b/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
index 47c66c8..aeebf90 100644
--- a/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
+++ b/lifecycle/common/src/main/java/androidx/lifecycle/Lifecycling.java
@@ -178,4 +178,7 @@
     public static String getAdapterName(String className) {
         return className.replace(".", "_") + "_LifecycleAdapter";
     }
+
+    private Lifecycling() {
+    }
 }
diff --git a/lifecycle/extensions/src/main/java/androidx/lifecycle/LifecycleDispatcher.java b/lifecycle/extensions/src/main/java/androidx/lifecycle/LifecycleDispatcher.java
index f241276..fa1550b 100644
--- a/lifecycle/extensions/src/main/java/androidx/lifecycle/LifecycleDispatcher.java
+++ b/lifecycle/extensions/src/main/java/androidx/lifecycle/LifecycleDispatcher.java
@@ -180,4 +180,7 @@
             dispatchIfLifecycleOwner(f, ON_RESUME);
         }
     }
+
+    private LifecycleDispatcher() {
+    }
 }
diff --git a/room/common/api/current.txt b/room/common/api/current.txt
index fd32902..250e4ec 100644
--- a/room/common/api/current.txt
+++ b/room/common/api/current.txt
@@ -77,7 +77,7 @@
   }
 
   public class RoomWarnings {
-    ctor public RoomWarnings();
+    ctor public deprecated RoomWarnings();
     field public static final java.lang.String CANNOT_CREATE_VERIFICATION_DATABASE = "ROOM_CANNOT_CREATE_VERIFICATION_DATABASE";
     field public static final java.lang.String CURSOR_MISMATCH = "ROOM_CURSOR_MISMATCH";
     field public static final java.lang.String DEFAULT_CONSTRUCTOR = "ROOM_DEFAULT_CONSTRUCTOR";
diff --git a/room/common/src/main/java/androidx/room/RoomMasterTable.java b/room/common/src/main/java/androidx/room/RoomMasterTable.java
index 6c8c855..c1ab82a 100644
--- a/room/common/src/main/java/androidx/room/RoomMasterTable.java
+++ b/room/common/src/main/java/androidx/room/RoomMasterTable.java
@@ -52,4 +52,7 @@
                 + COLUMN_ID + "," + COLUMN_IDENTITY_HASH + ")"
                 + " VALUES(" + DEFAULT_ID + ", \"" + hash + "\")";
     }
+
+    private RoomMasterTable() {
+    }
 }
diff --git a/room/common/src/main/java/androidx/room/RoomWarnings.java b/room/common/src/main/java/androidx/room/RoomWarnings.java
index a4122bd..5f5d7f1 100644
--- a/room/common/src/main/java/androidx/room/RoomWarnings.java
+++ b/room/common/src/main/java/androidx/room/RoomWarnings.java
@@ -133,4 +133,10 @@
      */
     public static final String RELATION_QUERY_WITHOUT_TRANSACTION =
             "ROOM_RELATION_QUERY_WITHOUT_TRANSACTION";
+
+    /** @deprecated This type should not be instantiated as it contains only static methods. */
+    @Deprecated
+    @SuppressWarnings("PrivateConstructorForUtilityClass")
+    public RoomWarnings() {
+    }
 }
diff --git a/room/migration/src/main/java/androidx/room/migration/bundle/BundleUtil.java b/room/migration/src/main/java/androidx/room/migration/bundle/BundleUtil.java
index 8eb4d10..86888ba 100644
--- a/room/migration/src/main/java/androidx/room/migration/bundle/BundleUtil.java
+++ b/room/migration/src/main/java/androidx/room/migration/bundle/BundleUtil.java
@@ -33,4 +33,7 @@
     static String replaceTableName(String contents, String tableName) {
         return contents.replace(TABLE_NAME_PLACEHOLDER, tableName);
     }
+
+    private BundleUtil() {
+    }
 }
diff --git a/room/migration/src/main/java/androidx/room/migration/bundle/SchemaEqualityUtil.java b/room/migration/src/main/java/androidx/room/migration/bundle/SchemaEqualityUtil.java
index 799c3d8..910958d 100644
--- a/room/migration/src/main/java/androidx/room/migration/bundle/SchemaEqualityUtil.java
+++ b/room/migration/src/main/java/androidx/room/migration/bundle/SchemaEqualityUtil.java
@@ -87,4 +87,7 @@
         }
         return item1.isSchemaEqual(item2);
     }
+
+    private SchemaEqualityUtil() {
+    }
 }
diff --git a/room/runtime/api/current.txt b/room/runtime/api/current.txt
index cfd667d..3f317d5 100644
--- a/room/runtime/api/current.txt
+++ b/room/runtime/api/current.txt
@@ -25,7 +25,7 @@
   }
 
   public class Room {
-    ctor public Room();
+    ctor public deprecated Room();
     method public static <T extends androidx.room.RoomDatabase> androidx.room.RoomDatabase.Builder<T> databaseBuilder(android.content.Context, java.lang.Class<T>, java.lang.String);
     method public static <T extends androidx.room.RoomDatabase> androidx.room.RoomDatabase.Builder<T> inMemoryDatabaseBuilder(android.content.Context, java.lang.Class<T>);
     field public static final java.lang.String MASTER_TABLE_NAME = "room_master_table";
diff --git a/room/runtime/src/main/java/androidx/room/Room.java b/room/runtime/src/main/java/androidx/room/Room.java
index 15107fc..2e4dedc 100644
--- a/room/runtime/src/main/java/androidx/room/Room.java
+++ b/room/runtime/src/main/java/androidx/room/Room.java
@@ -100,4 +100,10 @@
                     + klass.getCanonicalName());
         }
     }
+
+    /** @deprecated This type should not be instantiated as it contains only static methods. */
+    @Deprecated
+    @SuppressWarnings("PrivateConstructorForUtilityClass")
+    public Room() {
+    }
 }
diff --git a/room/runtime/src/main/java/androidx/room/util/StringUtil.java b/room/runtime/src/main/java/androidx/room/util/StringUtil.java
index 8988490..b865138 100644
--- a/room/runtime/src/main/java/androidx/room/util/StringUtil.java
+++ b/room/runtime/src/main/java/androidx/room/util/StringUtil.java
@@ -112,4 +112,7 @@
         }
         return sb.toString();
     }
+
+    private StringUtil() {
+    }
 }
diff --git a/room/rxjava2/api/current.txt b/room/rxjava2/api/current.txt
index be690d9..355c117 100644
--- a/room/rxjava2/api/current.txt
+++ b/room/rxjava2/api/current.txt
@@ -5,7 +5,7 @@
   }
 
   public class RxRoom {
-    ctor public RxRoom();
+    ctor public deprecated RxRoom();
     method public static io.reactivex.Flowable<java.lang.Object> createFlowable(androidx.room.RoomDatabase, java.lang.String...);
     field public static final java.lang.Object NOTHING;
   }
diff --git a/room/rxjava2/src/main/java/androidx/room/RxRoom.java b/room/rxjava2/src/main/java/androidx/room/RxRoom.java
index 2694629..89af1f3 100644
--- a/room/rxjava2/src/main/java/androidx/room/RxRoom.java
+++ b/room/rxjava2/src/main/java/androidx/room/RxRoom.java
@@ -166,4 +166,10 @@
             }
         }
     }
+
+    /** @deprecated This type should not be instantiated as it contains only static methods. */
+    @Deprecated
+    @SuppressWarnings("PrivateConstructorForUtilityClass")
+    public RxRoom() {
+    }
 }
