Android: Enable Jetify to move to androidx"

To update to androidx, we run the "jetify" script on all targets
passed to process_java_prebuilt. This converts all references in the
jar to androidx without having to modify the source code. This also
allows us to not have to check in third_party jars that reference
androidx, such as the gms libraries.

To compile with the androidx dependencies with the
android_support_library references still in the code, we modified the
java groups in android_deps/BUILD.gn to have the dependency target
depended on androidx, but use the old support library as an input_jar.

All the resources (such as layout.xml files) need to be converted to
androidx too, which was done in another CL, this CL just activates that
feature in compile_resources.py

Bug: 896775
Change-Id: Ib53c670b53145999ca57eebd4905e8f22684de67
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1830506
Commit-Queue: benjamin joyce <bjoyce@google.com>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#741505}
diff --git a/base/android/proguard/chromium_code.flags b/base/android/proguard/chromium_code.flags
index 983dbd5..f1070dd 100644
--- a/base/android/proguard/chromium_code.flags
+++ b/base/android/proguard/chromium_code.flags
@@ -19,6 +19,17 @@
 -keep @interface org.chromium.base.annotations.RemovableInRelease
 -keep @interface org.chromium.base.annotations.UsedByReflection
 
+# Android support library annotations will get converted to androidx ones
+# which we want to keep.
+-keep @interface androidx.annotation.Keep
+-keep @androidx.annotation.Keep class *
+-keepclasseswithmembers class * {
+  @androidx.annotation.Keep <fields>;
+}
+-keepclasseswithmembers class * {
+  @androidx.annotation.Keep <methods>;
+}
+
 # Keeps for class level annotations.
 -keep @org.chromium.base.annotations.UsedByReflection class ** {}
 
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py
index bc5a0ce10..cb44909b 100755
--- a/build/android/gyp/compile_resources.py
+++ b/build/android/gyp/compile_resources.py
@@ -599,10 +599,9 @@
 
     jetify_dir = os.path.join(partials_dir, 'jetify')
     build_utils.MakeDirectory(jetify_dir)
-    # TODO (bjoyce): Enable when androidx is ready.
-    # working_jetify_path = os.path.join(jetify_dir, 'jetify_' + partial_path)
-    # jetified_dep = _JetifyArchive(dep_path, working_jetify_path)
-    # dep_path = jetified_dep
+    working_jetify_path = os.path.join(jetify_dir, 'jetify_' + partial_path)
+    jetified_dep = _JetifyArchive(dep_path, working_jetify_path)
+    dep_path = jetified_dep
 
     compile_command = (
         partial_compile_command + ['--dir', dep_path, '-o', partial_path])
diff --git a/build/android/gyp/compile_resources.pydeps b/build/android/gyp/compile_resources.pydeps
index 55263a1..60f6edb 100644
--- a/build/android/gyp/compile_resources.pydeps
+++ b/build/android/gyp/compile_resources.pydeps
@@ -44,6 +44,7 @@
 ../../../third_party/protobuf/python/google/protobuf/symbol_database.py
 ../../../third_party/protobuf/python/google/protobuf/text_encoding.py
 ../../../third_party/protobuf/python/google/protobuf/text_format.py
+../../../third_party/six/src/six.py
 ../../gn_helpers.py
 compile_resources.py
 proto/Configuration_pb2.py
diff --git a/build/android/gyp/jetify_jar.py b/build/android/gyp/jetify_jar.py
new file mode 100755
index 0000000..fe58bc6
--- /dev/null
+++ b/build/android/gyp/jetify_jar.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from __future__ import print_function
+
+import argparse
+import subprocess
+import sys
+
+
+def _AddArguments(parser):
+  """Adds arguments related to jetifying to parser.
+
+  Args:
+    parser: ArgumentParser object.
+  """
+  parser.add_argument(
+      '--input-path',
+      required=True,
+      help='Path to input file(s). Either the classes '
+      'directory, or the path to a jar.')
+  parser.add_argument(
+      '--output-path',
+      required=True,
+      help='Path to output final file(s) to. Either the '
+      'final classes directory, or the directory in '
+      'which to place the instrumented/copied jar.')
+  parser.add_argument(
+      '--jetify-path', required=True, help='Path to jetify bin.')
+  parser.add_argument(
+      '--jetify-config-path', required=True, help='Path to jetify config file.')
+
+
+def _RunJetifyCommand(parser):
+  args = parser.parse_args()
+  cmd = [
+      args.jetify_path,
+      '-i',
+      args.input_path,
+      '-o',
+      args.output_path,
+      # Need to suppress a lot of warning output when jar doesn't have
+      # any references rewritten.
+      '-l',
+      'error'
+  ]
+  if args.jetify_config_path:
+    cmd.extend(['-c', args.jetify_config_path])
+  # Must wait for jetify command to complete to prevent race condition.
+  subprocess.check_call(cmd)
+
+
+def main():
+  parser = argparse.ArgumentParser()
+  _AddArguments(parser)
+  _RunJetifyCommand(parser)
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py
index 05df7843..5acd831 100755
--- a/build/android/gyp/proguard.py
+++ b/build/android/gyp/proguard.py
@@ -432,6 +432,10 @@
 
   libraries = []
   for p in options.classpath:
+    # TODO(bjoyce): Remove filter once old android support libraries are gone.
+    # Fix for having Library class extend program class dependency problem.
+    if 'com_android_support' in p or 'android_support_test' in p:
+      continue
     # If a jar is part of input no need to include it as library jar.
     if p not in libraries and p not in options.input_paths:
       libraries.append(p)
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py
index 2bd73f7..514ba0b 100755
--- a/build/android/gyp/write_build_config.py
+++ b/build/android/gyp/write_build_config.py
@@ -862,6 +862,13 @@
       help='Path to the .jar to use for javac classpath purposes.')
   parser.add_option('--interface-jar-path',
       help='Path to the .interface.jar to use for javac classpath purposes.')
+  parser.add_option(
+      '--jetified-jar-path',
+      help='Path to the jetified.jar to use for javac classpath purposes.')
+  parser.add_option(
+      '--skip-jetify',
+      action='store_true',
+      help='Whether to use jetified or non-jetified classpath.')
   parser.add_option('--is-prebuilt', action='store_true',
                     help='Whether the jar was compiled or pre-compiled.')
   parser.add_option('--java-sources-file', help='Path to .sources file')
@@ -1212,6 +1219,10 @@
       deps_info['jar_path'] = options.jar_path
       deps_info['unprocessed_jar_path'] = options.unprocessed_jar_path
       deps_info['interface_jar_path'] = options.interface_jar_path
+    if options.skip_jetify:
+      deps_info['jetified_jar_path'] = options.interface_jar_path
+    else:
+      deps_info['jetified_jar_path'] = options.jetified_jar_path
     if options.dex_path:
       deps_info['dex_path'] = options.dex_path
       if is_apk_or_module_target:
@@ -1359,6 +1370,10 @@
     # The classpath used for error prone.
     javac_full_interface_classpath = [
         c['interface_jar_path'] for c in all_library_deps]
+    # The path of the jetified jars.
+    jetified_full_jar_classpath = [
+        c['jetified_jar_path'] for c in all_library_deps
+    ]
     # The classpath used for bytecode-rewritting.
     javac_full_classpath = [
         c['unprocessed_jar_path'] for c in all_library_deps]
@@ -1369,6 +1384,8 @@
           base_module_build_config['deps_info']['jar_path'])
       javac_full_interface_classpath.append(
           base_module_build_config['deps_info']['interface_jar_path'])
+      jetified_full_jar_classpath.append(
+          base_module_build_config['deps_info']['jetified_jar_path'])
 
     for dep in direct_group_deps:
       javac_classpath.extend(dep.get('extra_classpath_jars', []))
@@ -1378,6 +1395,8 @@
       javac_full_classpath.extend(dep.get('extra_classpath_jars', []))
       javac_full_interface_classpath.extend(
           dep.get('extra_classpath_interface_jars', []))
+      jetified_full_jar_classpath.extend(
+          dep.get('extra_classpath_interface_jars', []))
 
     # Deps to add to the compile-time classpath (but not the runtime classpath).
     # TODO(agrieve): Might be less confusing to fold these into bootclasspath.
@@ -1413,6 +1432,8 @@
     javac_full_interface_classpath.extend(
         p for p in interface_extra_jars
         if p not in javac_full_interface_classpath)
+    jetified_full_jar_classpath.extend(
+        p for p in interface_extra_jars if p not in jetified_full_jar_classpath)
 
   if is_java_target or options.type == 'android_app_bundle':
     # The classpath to use to run this target (or as an input to ProGuard).
@@ -1596,9 +1617,13 @@
     javac_interface_classpath.append(tested_apk_config['interface_jar_path'])
     javac_full_interface_classpath.append(
         tested_apk_config['interface_jar_path'])
+    jetified_full_jar_classpath.append(tested_apk_config['interface_jar_path'])
     javac_full_interface_classpath.extend(
         p for p in tested_apk_config['javac_full_interface_classpath']
         if p not in javac_full_interface_classpath)
+    jetified_full_jar_classpath.extend(
+        p for p in tested_apk_config['jetified_full_jar_classpath']
+        if p not in jetified_full_jar_classpath)
     javac_full_classpath.extend(
         p for p in tested_apk_config['javac_full_classpath']
         if p not in javac_full_classpath)
@@ -1637,6 +1662,7 @@
         c['main_class'] for c in processor_deps.Direct()]
     deps_info['javac_full_classpath'] = javac_full_classpath
     deps_info['javac_full_interface_classpath'] = javac_full_interface_classpath
+    deps_info['jetified_full_jar_classpath'] = jetified_full_jar_classpath
   elif options.type == 'android_app_bundle':
     # bundles require javac_full_classpath to create .aab.jar.info.
     javac_full_classpath = set()
@@ -1742,6 +1768,7 @@
     RemoveObjDups(config, base, 'deps_info', 'java_runtime_classpath')
     RemoveObjDups(config, base, 'deps_info', 'javac_full_classpath')
     RemoveObjDups(config, base, 'deps_info', 'javac_full_interface_classpath')
+    RemoveObjDups(config, base, 'deps_info', 'jetified_full_jar_classpath')
     RemoveObjDups(config, base, 'deps_info', 'jni', 'all_source')
     RemoveObjDups(config, base, 'final_dex', 'all_dex_files')
     RemoveObjDups(config, base, 'extra_android_manifests')
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index d7f2296..6de89103 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -204,6 +204,15 @@
         rebase_path(invoker.java_resources_jar, root_build_dir),
       ]
     }
+    if (defined(invoker.skip_jetify) && invoker.skip_jetify) {
+      args += [ "--skip-jetify" ]
+    }
+    if (defined(invoker.jetified_jar_path)) {
+      args += [
+        "--jetified-jar-path",
+        rebase_path(invoker.jetified_jar_path, root_build_dir),
+      ]
+    }
     if (defined(invoker.annotation_processor_deps)) {
       _processor_configs = []
       foreach(_processor_dep, invoker.annotation_processor_deps) {
@@ -1489,7 +1498,7 @@
   #    coverage data.
   #  jar_excluded_patterns: Optional list of .class file patterns to exclude
   #    from the final .jar file.
-  #  jar_included_patterns: OPtional list of .class file patterns to include
+  #  jar_included_patterns: Optional list of .class file patterns to include
   #    in the final .jar file. jar_excluded_patterns take precedence over this.
   #  skip_jetify: A boolean on whether to skip jetifying or not.
   #  strip_resource_classes:
@@ -1526,9 +1535,6 @@
     _jacoco_instrument = invoker.jacoco_instrument
     _skip_jetify = defined(invoker.skip_jetify) && invoker.skip_jetify
 
-    # TODO(bjoyce): Remove once Androidx with jetifying lands.
-    not_needed([ "_skip_jetify" ])
-
     _enable_bytecode_rewriter =
         _enable_assert || _enable_custom_resources || _enable_thread_annotations
     _is_prebuilt = defined(invoker.is_prebuilt) && invoker.is_prebuilt
@@ -1568,6 +1574,44 @@
     _deps = []
     _previous_output_jar = _input_jar_path
 
+    if (!_skip_jetify) {
+      _jetify_target = "${target_name}__jetify"
+      _jetify_input_jar = _previous_output_jar
+      _jetify_output_jar = "$target_out_dir/$target_name-jetified.jar"
+
+      action(_jetify_target) {
+        script = "//build/android/gyp/jetify_jar.py"
+        deps = _deps
+        if (defined(invoker.deps)) {
+          deps += invoker.deps
+        }
+        _jetify_jar_path =
+            "//third_party/jetifier_standalone/bin/jetifier-standalone"
+        _jetify_config_path =
+            "//third_party/jetifier_standalone/config/ignore_R.config"
+
+        inputs = [
+          _jetify_input_jar,
+          _jetify_jar_path,
+        ]
+        outputs = [ _jetify_output_jar ]
+        args = [
+          "--input-path",
+          rebase_path(invoker.input_jar_path, root_build_dir),
+          "--output-path",
+          rebase_path(_jetify_output_jar, root_build_dir),
+          "--jetify-path",
+          rebase_path(_jetify_jar_path, root_build_dir),
+          "--jetify-config-path",
+          rebase_path(_jetify_config_path, root_build_dir),
+        ]
+      }
+
+      _deps = []
+      _deps = [ ":$_jetify_target" ]
+      _previous_output_jar = _jetify_output_jar
+    }
+
     if (_enable_bytecode_rewriter) {
       _java_bytecode_rewriter_target = "${target_name}__bytecode_rewrite"
       _java_bytecode_rewriter_input_jar = _previous_output_jar
@@ -1656,7 +1700,7 @@
 
           # Temporarily using java_full_interface_classpath until classpath validation of targets
           # is implemented, see http://crbug.com/885273
-          "--classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)",
+          "--classpath=@FileArg($_rebased_build_config:deps_info:jetified_full_jar_classpath)",
           "--bootclasspath=@FileArg($_rebased_build_config:android:sdk_interface_jars)",
           "--depfile",
           rebase_path(depfile, root_build_dir),
@@ -3141,6 +3185,8 @@
         _accumulated_deps += [ "//third_party/android_sdk:android_sdk_java" ]
       }
     }
+    _jetified_jar_path =
+        "$target_out_dir/${target_name}__process_prebuilt-jetified.jar"
 
     # Define build_config_deps which will be a list of targets required to
     # build the _build_config.
@@ -3200,7 +3246,9 @@
       }
       build_config = _build_config
       is_prebuilt = _is_prebuilt
+      jetified_jar_path = _jetified_jar_path
       possible_config_deps = _accumulated_deps
+      skip_jetify = defined(invoker.skip_jetify) && invoker.skip_jetify
       if (defined(apk_under_test)) {
         possible_config_deps += [ apk_under_test ]
       }
diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java
index a655095..c2cbff15 100644
--- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java
+++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java
@@ -14,11 +14,12 @@
 import android.support.v7.app.MediaRouteChooserDialogFragment;
 import android.support.v7.media.MediaRouteSelector;
 import android.support.v7.media.MediaRouter;
-import android.support.v7.mediarouter.R;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 
+import androidx.mediarouter.R;
+
 /**
  * Manages the dialog responsible for selecting a {@link MediaSink}.
  */
diff --git a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
index e3ba8d6..f379a6f 100644
--- a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
+++ b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
@@ -178,6 +178,17 @@
 -keep @interface org.chromium.base.annotations.RemovableInRelease
 -keep @interface org.chromium.base.annotations.UsedByReflection
 
+# Android support library annotations will get converted to androidx ones
+# which we want to keep.
+-keep @interface androidx.annotation.Keep
+-keep @androidx.annotation.Keep class *
+-keepclasseswithmembers class * {
+  @androidx.annotation.Keep <fields>;
+}
+-keepclasseswithmembers class * {
+  @androidx.annotation.Keep <methods>;
+}
+
 # Keeps for class level annotations.
 -keep @org.chromium.base.annotations.UsedByReflection class ** {}
 
@@ -312,24 +323,24 @@
 
 # Every fragment must have an empty constructor, so it can be instantiated when
 # restoring its activity's state.
--keep public class org.chromium.chrome.browser.** extends android.support.v4.app.Fragment {
+-keep public class org.chromium.chrome.browser.** extends androidx.fragment.app.Fragment {
   public <init>();
 }
 
 # Referenced by android.support.v7.preference.PreferenceInflater
--keep public class android.support.v14.preference.SwitchPreference {}
+-keep public class androidx.preference.SwitchPreference {}
 
 # Inflated via reflection
--keep public class android.support.v7.preference.Preference {
+-keep public class androidx.preference.Preference {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.PreferenceScreen {
+-keep public class androidx.preference.PreferenceScreen {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.PreferenceCategory {
+-keep public class androidx.preference.PreferenceCategory {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.ListPreference {
+-keep public class androidx.preference.ListPreference {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
 
@@ -375,7 +386,7 @@
 }
 
 ################################################################################
-# ../../third_party/android_deps/support_mediarouter.flags
+# ../../third_party/android_deps/androidx_mediarouter.flags
 ################################################################################
 # Copyright 2019 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
@@ -384,15 +395,7 @@
 # Help R8 to remove debug related coded. All of these static constants are
 # initialized to: Log.isLoggable(DEBUG, TAG).
 
--assumevalues class android.support.v7.app.MediaRouteControllerDialogFragment {
-  static boolean USE_SUPPORT_DYNAMIC_GROUP return false;
-}
-
--assumevalues class android.support.v7.media.MediaRouter {
-  static boolean DEBUG return false;
-}
-
--assumevalues class android.support.v7.media.RegisteredMediaRouteProvider {
+-assumevalues class androidx.mediarouter.** {
   static boolean DEBUG return false;
 }
 
@@ -492,30 +495,7 @@
 -dontwarn com.google.protobuf.nano.NanoEnumValue
 
 ################################################################################
-# obj/third_party/android_deps/com_android_support_animated_vector_drawable_java/proguard.txt
-################################################################################
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# keep setters in VectorDrawables so that animations can still work.
--keepclassmembers class android.support.graphics.drawable.VectorDrawableCompat$* {
-   void set*(***);
-   *** get*();
-}
-
-################################################################################
-# obj/third_party/android_deps/com_android_support_appcompat_v7_java/proguard.txt
+# obj/third_party/android_deps/androidx_appcompat_appcompat_java/proguard.txt
 ################################################################################
 # Copyright (C) 2018 The Android Open Source Project
 #
@@ -533,44 +513,14 @@
 
 # Ensure that reflectively-loaded inflater is not obfuscated. This can be
 # removed when we stop supporting AAPT1 builds.
--keepnames class android.support.v7.app.AppCompatViewInflater
+-keepnames class androidx.appcompat.app.AppCompatViewInflater
 
 # aapt is not able to read app::actionViewClass and app:actionProviderClass to produce proguard
 # keep rules. Add a commonly used SearchView to the keep list until b/109831488 is resolved.
--keep class android.support.v7.widget.SearchView { <init>(...); }
+-keep class androidx.appcompat.widget.SearchView { <init>(...); }
 
 ################################################################################
-# obj/third_party/android_deps/com_android_support_recyclerview_v7_java/proguard.txt
-################################################################################
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# When layoutManager xml attribute is used, RecyclerView inflates
-#LayoutManagers' constructors using reflection.
--keep public class * extends android.support.v7.widget.RecyclerView$LayoutManager {
-    public <init>(android.content.Context, android.util.AttributeSet, int, int);
-    public <init>();
-}
-
-################################################################################
-# obj/third_party/android_deps/com_android_support_support_compat_java/proguard.txt
-################################################################################
-# aapt2 is not (yet) keeping FQCNs defined in the appComponentFactory <application> attribute
--keep class android.support.v4.app.CoreComponentFactory
-
-################################################################################
-# obj/third_party/android_deps/com_android_support_support_media_compat_java/proguard.txt
+# obj/third_party/android_deps/androidx_media_media_java/proguard.txt
 ################################################################################
 # Copyright (C) 2017 The Android Open Source Project
 #
@@ -592,33 +542,36 @@
 }
 
 # Prevent Parcelable objects from being removed or renamed.
--keep class android.support.mediacompat.** implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.Audio* implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.MediaBrowserCompatUtils* implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.MediaBrowserProtocol* implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.MediaBrowserService* implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.Volume* implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.app.** implements android.os.Parcelable {
-    public static final android.os.Parcelable$Creator *;
-}
--keep class android.support.v4.media.session.MediaButton* implements android.os.Parcelable {
+-keep class androidx.media.** implements android.os.Parcelable {
     public static final android.os.Parcelable$Creator *;
 }
 
 ################################################################################
-# obj/third_party/android_deps/com_android_support_transition_java/proguard.txt
+# obj/third_party/android_deps/androidx_recyclerview_recyclerview_java/proguard.txt
+################################################################################
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# When layoutManager xml attribute is used, RecyclerView inflates
+#LayoutManagers' constructors using reflection.
+-keep public class * extends androidx.recyclerview.widget.RecyclerView$LayoutManager {
+    public <init>(android.content.Context, android.util.AttributeSet, int, int);
+    public <init>();
+}
+
+################################################################################
+# obj/third_party/android_deps/androidx_transition_transition_java/proguard.txt
 ################################################################################
 # Copyright (C) 2017 The Android Open Source Project
 #
@@ -635,12 +588,49 @@
 # limitations under the License.
 
 # Keep a field in transition that is used to keep a reference to weakly-referenced object
--keepclassmembers class android.support.transition.ChangeBounds$* extends android.animation.AnimatorListenerAdapter {
-  android.support.transition.ChangeBounds$ViewBounds mViewBounds;
+-keepclassmembers class androidx.transition.ChangeBounds$* extends android.animation.AnimatorListenerAdapter {
+  androidx.transition.ChangeBounds$ViewBounds mViewBounds;
 }
 
 ################################################################################
-# obj/third_party/android_deps/com_android_support_versionedparcelable_java/proguard.txt
+# obj/third_party/android_deps/androidx_vectordrawable_vectordrawable_animated_java/proguard.txt
+################################################################################
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# keep setters in VectorDrawables so that animations can still work.
+-keepclassmembers class androidx.vectordrawable.graphics.drawable.VectorDrawableCompat$* {
+   void set*(***);
+   *** get*();
+}
+
+################################################################################
+# obj/third_party/android_deps/androidx_versionedparcelable_versionedparcelable_java/proguard.txt
+################################################################################
+-keep public class * extends androidx.versionedparcelable.VersionedParcelable
+-keep public class android.support.**Parcelizer { *; }
+-keep public class androidx.**Parcelizer { *; }
+-keep public class androidx.versionedparcelable.ParcelImpl
+
+################################################################################
+# obj/third_party/android_deps/com_android_support_support_compat_java_orig/proguard.txt
+################################################################################
+# aapt2 is not (yet) keeping FQCNs defined in the appComponentFactory <application> attribute
+-keep class android.support.v4.app.CoreComponentFactory
+
+################################################################################
+# obj/third_party/android_deps/com_android_support_versionedparcelable_java_orig/proguard.txt
 ################################################################################
 -keep public class * extends androidx.versionedparcelable.VersionedParcelable
 -keep public class android.support.**Parcelizer { *; }
diff --git a/chrome/android/java/monochrome_public_bundle__base_bundle_module.AndroidManifest.expected b/chrome/android/java/monochrome_public_bundle__base_bundle_module.AndroidManifest.expected
index ae263b1..7f634ea 100644
--- a/chrome/android/java/monochrome_public_bundle__base_bundle_module.AndroidManifest.expected
+++ b/chrome/android/java/monochrome_public_bundle__base_bundle_module.AndroidManifest.expected
@@ -80,7 +80,7 @@
       android:protectionLevel="signature"/>
   <application
       android:allowBackup="false"
-      android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
+      android:appComponentFactory="androidx.core.app.CoreComponentFactory"
       android:extractNativeLibs="false"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
diff --git a/chrome/android/java/proguard.flags b/chrome/android/java/proguard.flags
index d84bb1f..d55952c 100644
--- a/chrome/android/java/proguard.flags
+++ b/chrome/android/java/proguard.flags
@@ -4,24 +4,24 @@
 
 # Every fragment must have an empty constructor, so it can be instantiated when
 # restoring its activity's state.
--keep public class org.chromium.chrome.browser.** extends android.support.v4.app.Fragment {
+-keep public class org.chromium.chrome.browser.** extends androidx.fragment.app.Fragment {
   public <init>();
 }
 
 # Referenced by android.support.v7.preference.PreferenceInflater
--keep public class android.support.v14.preference.SwitchPreference {}
+-keep public class androidx.preference.SwitchPreference {}
 
 # Inflated via reflection
--keep public class android.support.v7.preference.Preference {
+-keep public class androidx.preference.Preference {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.PreferenceScreen {
+-keep public class androidx.preference.PreferenceScreen {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.PreferenceCategory {
+-keep public class androidx.preference.PreferenceCategory {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
--keep public class android.support.v7.preference.ListPreference {
+-keep public class androidx.preference.ListPreference {
     public <init>(android.content.Context, android.util.AttributeSet);
 }
 
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index b3fcb14..060d8e1 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -434,6 +434,7 @@
     ":package_api_java",
     ":package_impl_native_java",
     "//third_party/android_deps:android_support_v7_appcompat_java",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
   ]
 }
 
@@ -515,6 +516,7 @@
     "//third_party/android_deps:android_support_v4_java",
     "//third_party/jsr-305:jsr_305_javalib",
   ]
+  jar_excluded_patterns = [ "androidx/*/R*" ]
 }
 
 android_java_prebuilt("package_impl_util_java") {
@@ -1076,7 +1078,6 @@
       "//third_party/netty4:netty_all_java",
     ]
 
-    enable_multidex = false
     if (!is_java_debug) {
       proguard_enabled = true
 
diff --git a/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2 b/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
index a2eeced..ae22bec 100644
--- a/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
+++ b/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2
@@ -57,7 +57,7 @@
                  android:exported="false" />
         {% endfor %}
 
-        <provider android:name="android.support.v4.content.FileProvider"
+        <provider android:name="androidx.core.content.FileProvider"
             android:authorities="org.chromium.content_browsertests_apk.FileProvider"
             android:exported="false"
             android:grantUriPermissions="true">
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
index 01cce53..9399589 100644
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -7,6 +7,11 @@
 # Library groups
 java_group("android_support_v4_java") {
   deps = [
+    ":android_arch_lifecycle_common_java",
+    ":android_arch_lifecycle_viewmodel_java",
+    ":com_android_support_drawerlayout_java",
+    ":com_android_support_interpolator_java",
+    ":com_android_support_recyclerview_v7_java",
     ":com_android_support_support_compat_java",
     ":com_android_support_support_core_ui_java",
     ":com_android_support_support_core_utils_java",
@@ -14,7 +19,9 @@
     ":com_android_support_support_media_compat_java",
     ":com_android_support_support_v4_java",
   ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_compat_java_orig/classes.jar" ]
 }
+
 java_group("android_support_v7_appcompat_java") {
   deps = [
     ":android_support_v4_java",
@@ -22,14 +29,419 @@
     ":com_android_support_appcompat_v7_java",
     ":com_android_support_support_vector_drawable_java",
   ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_appcompat_v7_java_orig/classes.jar",
+    "${target_out_dir}/com_android_support_animated_vector_drawable_java_orig/classes.jar",
+    "${target_out_dir}/com_android_support_support_vector_drawable_java_orig/classes.jar",
+  ]
+}
+
+java_group("android_arch_core_common_java") {
+  deps = [ ":androidx_arch_core_core_common_java" ]
+  input_jars_paths = [ "libs/android_arch_core_common/common-1.1.1.jar" ]
+}
+
+java_group("android_arch_core_runtime_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_arch_core_core_runtime_java",
+  ]
+  input_jars_paths =
+      [ "${target_out_dir}/android_arch_core_runtime_java_orig/classes.jar" ]
+}
+
+java_group("android_arch_lifecycle_common_java") {
+  deps = [ ":androidx_lifecycle_lifecycle_common_java" ]
+  input_jars_paths = [ "libs/android_arch_lifecycle_common/common-1.1.1.jar" ]
+}
+
+java_group("android_arch_lifecycle_common_java8_java") {
+  deps = [ ":androidx_lifecycle_lifecycle_common_java8_java" ]
+  input_jars_paths =
+      [ "libs/android_arch_lifecycle_common_java8/common-java8-1.1.1.jar" ]
+}
+
+java_group("android_arch_lifecycle_livedata_core_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_lifecycle_lifecycle_livedata_core_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/android_arch_lifecycle_livedata_core_java_orig/classes.jar" ]
+}
+
+java_group("android_arch_lifecycle_livedata_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_lifecycle_lifecycle_livedata_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/android_arch_lifecycle_livedata_java_orig/classes.jar",
+  ]
+}
+
+java_group("android_arch_lifecycle_runtime_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_lifecycle_lifecycle_runtime_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/android_arch_lifecycle_runtime_java_orig/classes.jar",
+  ]
+}
+
+java_group("android_arch_lifecycle_viewmodel_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_lifecycle_lifecycle_viewmodel_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/android_arch_lifecycle_viewmodel_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_animated_vector_drawable_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_vectordrawable_vectordrawable_animated_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_animated_vector_drawable_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_appcompat_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_appcompat_appcompat_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_appcompat_v7_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_asynclayoutinflater_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_asynclayoutinflater_asynclayoutinflater_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_asynclayoutinflater_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_cardview_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_cardview_cardview_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_cardview_v7_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_collections_java") {
+  deps = [ ":androidx_collection_collection_java" ]
+  input_jars_paths =
+      [ "libs/com_android_support_collections/collections-28.0.0.jar" ]
+}
+
+java_group("com_android_support_coordinatorlayout_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_coordinatorlayout_coordinatorlayout_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_coordinatorlayout_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_cursoradapter_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_cursoradapter_cursoradapter_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_cursoradapter_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_customview_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_customview_customview_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_customview_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_design_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":com_google_android_material_material_java",
+  ]
+  input_jars_paths =
+      [ "${target_out_dir}/com_android_support_design_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_documentfile_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_documentfile_documentfile_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_documentfile_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_drawerlayout_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_drawerlayout_drawerlayout_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_drawerlayout_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_gridlayout_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_gridlayout_gridlayout_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_gridlayout_v7_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_interpolator_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_interpolator_interpolator_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_interpolator_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_leanback_v17_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_leanback_leanback_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_leanback_v17_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_loader_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_loader_loader_java",
+  ]
+  input_jars_paths =
+      [ "${target_out_dir}/com_android_support_loader_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_localbroadcastmanager_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_localbroadcastmanager_localbroadcastmanager_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_localbroadcastmanager_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_mediarouter_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_mediarouter_mediarouter_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_mediarouter_v7_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_multidex_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_multidex_multidex_java",
+  ]
+  input_jars_paths =
+      [ "${target_out_dir}/com_android_support_multidex_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_palette_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_palette_palette_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_palette_v7_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_preference_leanback_v17_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_leanback_leanback_preference_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_preference_leanback_v17_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_preference_v14_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_legacy_legacy_preference_v14_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_preference_v14_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_preference_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_preference_preference_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_preference_v7_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_print_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_print_print_java",
+  ]
+  input_jars_paths =
+      [ "${target_out_dir}/com_android_support_print_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_recyclerview_v7_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_recyclerview_recyclerview_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_recyclerview_v7_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_slidingpanelayout_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_slidingpanelayout_slidingpanelayout_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_slidingpanelayout_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_annotations_java") {
+  deps = [ ":androidx_annotation_annotation_java" ]
+  input_jars_paths = [ "libs/com_android_support_support_annotations/support-annotations-28.0.0.jar" ]
+}
+
+java_group("com_android_support_support_compat_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_core_core_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_compat_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_core_ui_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_legacy_legacy_support_core_ui_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_core_ui_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_core_utils_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_legacy_legacy_support_core_utils_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_core_utils_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_fragment_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_fragment_fragment_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_fragment_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_media_compat_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_media_media_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_media_compat_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_support_v13_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_legacy_legacy_support_v13_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_support_v13_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_support_v4_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_legacy_legacy_support_v4_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_support_v4_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_support_vector_drawable_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_vectordrawable_vectordrawable_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_support_vector_drawable_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_swiperefreshlayout_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_swiperefreshlayout_swiperefreshlayout_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_swiperefreshlayout_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_transition_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_transition_transition_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_transition_java_orig/classes.jar",
+  ]
+}
+
+java_group("com_android_support_versionedparcelable_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_versionedparcelable_versionedparcelable_java",
+  ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_versionedparcelable_java_orig/classes.jar" ]
+}
+
+java_group("com_android_support_viewpager_java") {
+  deps = [
+    ":${target_name}_orig__unpack_aar",
+    ":androidx_viewpager_viewpager_java",
+  ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_viewpager_java_orig/classes.jar",
+  ]
 }
 
 # The dependencies below are used by chromecast internal.
 java_group("android_support_v7_preference_java") {
   deps = [ ":com_android_support_preference_v7_java" ]
+  input_jars_paths = [
+    "${target_out_dir}/com_android_support_preference_v7_java_orig/classes.jar",
+  ]
 }
 java_group("android_support_v14_preference_java") {
   deps = [ ":com_android_support_preference_v14_java" ]
+  input_jars_paths = [ "${target_out_dir}/com_android_support_preference_v14_java_orig/classes.jar" ]
 }
 java_group("android_support_v17_leanback_java") {
   deps = [ ":com_android_support_leanback_v17_java" ]
@@ -53,35 +465,35 @@
 
 # === Generated Code Start ===
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-java_prebuilt("android_arch_lifecycle_common_java") {
+java_prebuilt("android_arch_lifecycle_common_java_orig") {
   jar_path = "libs/android_arch_lifecycle_common/common-1.1.1.jar"
   output_name = "android_arch_lifecycle_common"
   supports_android = true
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-java_prebuilt("android_arch_lifecycle_common_java8_java") {
+java_prebuilt("android_arch_lifecycle_common_java8_java_orig") {
   jar_path = "libs/android_arch_lifecycle_common_java8/common-java8-1.1.1.jar"
   output_name = "android_arch_lifecycle_common_java8"
   supports_android = true
   deps = [
-    ":android_arch_lifecycle_common_java",
-    ":com_android_support_support_annotations_java",
+    ":android_arch_lifecycle_common_java_orig",
+    ":com_android_support_support_annotations_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("android_arch_lifecycle_runtime_java") {
+android_aar_prebuilt("android_arch_lifecycle_runtime_java_orig") {
   aar_path = "libs/android_arch_lifecycle_runtime/runtime-1.1.1.aar"
   info_path =
       "libs/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info"
   deps = [
-    ":android_arch_core_common_java",
-    ":android_arch_lifecycle_common_java",
-    ":com_android_support_support_annotations_java",
+    ":android_arch_core_common_java_orig",
+    ":android_arch_lifecycle_common_java_orig",
+    ":com_android_support_support_annotations_java_orig",
   ]
   skip_jetify = true
 
@@ -90,11 +502,11 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("android_arch_lifecycle_viewmodel_java") {
+android_aar_prebuilt("android_arch_lifecycle_viewmodel_java_orig") {
   aar_path = "libs/android_arch_lifecycle_viewmodel/viewmodel-1.1.1.aar"
   info_path = "libs/android_arch_lifecycle_viewmodel/android_arch_lifecycle_viewmodel.info"
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 
   # https://crbug.com/887942#c1
   ignore_proguard_configs = true
@@ -179,6 +591,7 @@
     ":androidx_core_core_java",
     ":androidx_customview_customview_java",
   ]
+  ignore_proguard_configs = true
   skip_jetify = true
 }
 
@@ -194,6 +607,7 @@
   ]
   skip_jetify = true
   ignore_aidl = true
+  ignore_proguard_configs = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -349,6 +763,9 @@
     ":androidx_lifecycle_lifecycle_common_java",
   ]
   skip_jetify = true
+
+  # https://crbug.com/887942#c1
+  ignore_proguard_configs = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -356,6 +773,7 @@
   aar_path = "libs/androidx_lifecycle_lifecycle_viewmodel/lifecycle-viewmodel-2.0.0.aar"
   info_path = "libs/androidx_lifecycle_lifecycle_viewmodel/androidx_lifecycle_lifecycle_viewmodel.info"
   deps = [ ":androidx_annotation_annotation_java" ]
+  ignore_proguard_configs = true
   skip_jetify = true
 }
 
@@ -403,6 +821,7 @@
     ":androidx_fragment_fragment_java",
     ":androidx_recyclerview_recyclerview_java",
   ]
+  ignore_proguard_configs = true
   skip_jetify = true
 }
 
@@ -518,59 +937,60 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_appcompat_v7_java") {
+android_aar_prebuilt("com_android_support_appcompat_v7_java_orig") {
   aar_path = "libs/com_android_support_appcompat_v7/appcompat-v7-28.0.0.aar"
   info_path = "libs/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info"
   deps = [
-    ":com_android_support_animated_vector_drawable_java",
-    ":com_android_support_collections_java",
-    ":com_android_support_cursoradapter_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_utils_java",
-    ":com_android_support_support_fragment_java",
-    ":com_android_support_support_vector_drawable_java",
+    ":com_android_support_animated_vector_drawable_java_orig",
+    ":com_android_support_collections_java_orig",
+    ":com_android_support_cursoradapter_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
+    ":com_android_support_support_fragment_java_orig",
+    ":com_android_support_support_vector_drawable_java_orig",
   ]
   skip_jetify = true
+  jar_excluded_patterns = [ "androidx/appcompat/R*" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_asynclayoutinflater_java") {
+android_aar_prebuilt("com_android_support_asynclayoutinflater_java_orig") {
   aar_path = "libs/com_android_support_asynclayoutinflater/asynclayoutinflater-28.0.0.aar"
   info_path = "libs/com_android_support_asynclayoutinflater/com_android_support_asynclayoutinflater.info"
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_cardview_v7_java") {
+android_aar_prebuilt("com_android_support_cardview_v7_java_orig") {
   aar_path = "libs/com_android_support_cardview_v7/cardview-v7-28.0.0.aar"
   info_path = "libs/com_android_support_cardview_v7/com_android_support_cardview_v7.info"
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-java_prebuilt("com_android_support_collections_java") {
+java_prebuilt("com_android_support_collections_java_orig") {
   jar_path = "libs/com_android_support_collections/collections-28.0.0.jar"
   output_name = "com_android_support_collections"
   supports_android = true
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_coordinatorlayout_java") {
+android_aar_prebuilt("com_android_support_coordinatorlayout_java_orig") {
   aar_path =
       "libs/com_android_support_coordinatorlayout/coordinatorlayout-28.0.0.aar"
   info_path = "libs/com_android_support_coordinatorlayout/com_android_support_coordinatorlayout.info"
   deps = [
-    ":com_android_support_customview_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_customview_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 
@@ -579,84 +999,84 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_customview_java") {
+android_aar_prebuilt("com_android_support_customview_java_orig") {
   aar_path = "libs/com_android_support_customview/customview-28.0.0.aar"
   info_path =
       "libs/com_android_support_customview/com_android_support_customview.info"
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_design_java") {
+android_aar_prebuilt("com_android_support_design_java_orig") {
   aar_path = "libs/com_android_support_design/design-28.0.0.aar"
   info_path = "libs/com_android_support_design/com_android_support_design.info"
   deps = [
-    ":com_android_support_appcompat_v7_java",
-    ":com_android_support_cardview_v7_java",
-    ":com_android_support_recyclerview_v7_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
-    ":com_android_support_support_core_utils_java",
-    ":com_android_support_support_fragment_java",
-    ":com_android_support_transition_java",
+    ":com_android_support_appcompat_v7_java_orig",
+    ":com_android_support_cardview_v7_java_orig",
+    ":com_android_support_recyclerview_v7_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
+    ":com_android_support_support_fragment_java_orig",
+    ":com_android_support_transition_java_orig",
   ]
   skip_jetify = true
   ignore_proguard_configs = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_drawerlayout_java") {
+android_aar_prebuilt("com_android_support_drawerlayout_java_orig") {
   aar_path = "libs/com_android_support_drawerlayout/drawerlayout-28.0.0.aar"
   info_path = "libs/com_android_support_drawerlayout/com_android_support_drawerlayout.info"
   deps = [
-    ":com_android_support_customview_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_customview_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_gridlayout_v7_java") {
+android_aar_prebuilt("com_android_support_gridlayout_v7_java_orig") {
   aar_path = "libs/com_android_support_gridlayout_v7/gridlayout-v7-28.0.0.aar"
   info_path = "libs/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info"
   deps = [
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_interpolator_java") {
+android_aar_prebuilt("com_android_support_interpolator_java_orig") {
   aar_path = "libs/com_android_support_interpolator/interpolator-28.0.0.aar"
   info_path = "libs/com_android_support_interpolator/com_android_support_interpolator.info"
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_localbroadcastmanager_java") {
+android_aar_prebuilt("com_android_support_localbroadcastmanager_java_orig") {
   aar_path = "libs/com_android_support_localbroadcastmanager/localbroadcastmanager-28.0.0.aar"
   info_path = "libs/com_android_support_localbroadcastmanager/com_android_support_localbroadcastmanager.info"
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_mediarouter_v7_java") {
+android_aar_prebuilt("com_android_support_mediarouter_v7_java_orig") {
   aar_path = "libs/com_android_support_mediarouter_v7/mediarouter-v7-28.0.0.aar"
   info_path = "libs/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info"
   deps = [
-    ":com_android_support_appcompat_v7_java",
-    ":com_android_support_palette_v7_java",
-    ":com_android_support_recyclerview_v7_java",
-    ":com_android_support_support_media_compat_java",
+    ":com_android_support_appcompat_v7_java_orig",
+    ":com_android_support_palette_v7_java_orig",
+    ":com_android_support_recyclerview_v7_java_orig",
+    ":com_android_support_support_media_compat_java_orig",
   ]
   skip_jetify = true
 
@@ -665,7 +1085,7 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_multidex_java") {
+android_aar_prebuilt("com_android_support_multidex_java_orig") {
   aar_path = "libs/com_android_support_multidex/multidex-1.0.0.aar"
   info_path =
       "libs/com_android_support_multidex/com_android_support_multidex.info"
@@ -673,50 +1093,55 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_preference_leanback_v17_java") {
+android_aar_prebuilt("com_android_support_preference_leanback_v17_java_orig") {
   aar_path = "libs/com_android_support_preference_leanback_v17/preference-leanback-v17-28.0.0.aar"
   info_path = "libs/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info"
   deps = [
-    ":com_android_support_appcompat_v7_java",
-    ":com_android_support_collections_java",
-    ":com_android_support_leanback_v17_java",
-    ":com_android_support_preference_v14_java",
-    ":com_android_support_preference_v7_java",
-    ":com_android_support_recyclerview_v7_java",
+    ":com_android_support_appcompat_v7_java_orig",
+    ":com_android_support_collections_java_orig",
+    ":com_android_support_leanback_v17_java_orig",
+    ":com_android_support_preference_v14_java_orig",
+    ":com_android_support_preference_v7_java_orig",
+    ":com_android_support_recyclerview_v7_java_orig",
   ]
   skip_jetify = true
+  jar_excluded_patterns = [ "androidx/preference/R*" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_preference_v7_java") {
+android_aar_prebuilt("com_android_support_preference_v7_java_orig") {
   aar_path = "libs/com_android_support_preference_v7/preference-v7-28.0.0.aar"
   info_path = "libs/com_android_support_preference_v7/com_android_support_preference_v7.info"
   deps = [
-    ":com_android_support_appcompat_v7_java",
-    ":com_android_support_collections_java",
-    ":com_android_support_recyclerview_v7_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_fragment_java",
+    ":com_android_support_appcompat_v7_java_orig",
+    ":com_android_support_collections_java_orig",
+    ":com_android_support_recyclerview_v7_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_fragment_java_orig",
   ]
   skip_jetify = true
   ignore_proguard_configs = true
+  jar_excluded_patterns = [
+    "androidx/preference/internal/package-info.class",
+    "androidx/preference/*",
+  ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_recyclerview_v7_java") {
+android_aar_prebuilt("com_android_support_recyclerview_v7_java_orig") {
   aar_path =
       "libs/com_android_support_recyclerview_v7/recyclerview-v7-28.0.0.aar"
   info_path = "libs/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info"
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-java_prebuilt("com_android_support_support_annotations_java") {
+java_prebuilt("com_android_support_support_annotations_java_orig") {
   jar_path = "libs/com_android_support_support_annotations/support-annotations-28.0.0.jar"
   output_name = "com_android_support_support_annotations"
   supports_android = true
@@ -727,116 +1152,125 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_compat_java") {
+android_aar_prebuilt("com_android_support_support_compat_java_orig") {
   aar_path = "libs/com_android_support_support_compat/support-compat-28.0.0.aar"
   info_path = "libs/com_android_support_support_compat/com_android_support_support_compat.info"
   deps = [
-    ":android_arch_lifecycle_runtime_java",
-    ":com_android_support_collections_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_versionedparcelable_java",
+    ":android_arch_lifecycle_runtime_java_orig",
+    ":com_android_support_collections_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_versionedparcelable_java_orig",
   ]
   skip_jetify = true
   ignore_aidl = true
+  ignore_manifest = true
+  jar_excluded_patterns = [
+    "android/support/v4/graphics/drawable/IconCompatParcelizer.class",
+    "android/support/v4/os/ResultReceiver*",
+    "androidx/core/graphics/drawable/IconCompatParcelizer.class",
+    "androidx/core/internal/package-info.class",
+    "android/support/v4/app/INotificationSideChannel*",
+    "android/support/v4/os/IResultReceiver*",
+  ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_core_ui_java") {
+android_aar_prebuilt("com_android_support_support_core_ui_java_orig") {
   aar_path =
       "libs/com_android_support_support_core_ui/support-core-ui-28.0.0.aar"
   info_path = "libs/com_android_support_support_core_ui/com_android_support_support_core_ui.info"
   deps = [
-    ":com_android_support_asynclayoutinflater_java",
-    ":com_android_support_coordinatorlayout_java",
-    ":com_android_support_cursoradapter_java",
-    ":com_android_support_customview_java",
-    ":com_android_support_drawerlayout_java",
-    ":com_android_support_interpolator_java",
-    ":com_android_support_slidingpanelayout_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_utils_java",
-    ":com_android_support_swiperefreshlayout_java",
-    ":com_android_support_viewpager_java",
+    ":com_android_support_asynclayoutinflater_java_orig",
+    ":com_android_support_coordinatorlayout_java_orig",
+    ":com_android_support_cursoradapter_java_orig",
+    ":com_android_support_customview_java_orig",
+    ":com_android_support_drawerlayout_java_orig",
+    ":com_android_support_interpolator_java_orig",
+    ":com_android_support_slidingpanelayout_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
+    ":com_android_support_swiperefreshlayout_java_orig",
+    ":com_android_support_viewpager_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_core_utils_java") {
+android_aar_prebuilt("com_android_support_support_core_utils_java_orig") {
   aar_path = "libs/com_android_support_support_core_utils/support-core-utils-28.0.0.aar"
   info_path = "libs/com_android_support_support_core_utils/com_android_support_support_core_utils.info"
   deps = [
-    ":com_android_support_documentfile_java",
-    ":com_android_support_loader_java",
-    ":com_android_support_localbroadcastmanager_java",
-    ":com_android_support_print_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_documentfile_java_orig",
+    ":com_android_support_loader_java_orig",
+    ":com_android_support_localbroadcastmanager_java_orig",
+    ":com_android_support_print_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_fragment_java") {
+android_aar_prebuilt("com_android_support_support_fragment_java_orig") {
   aar_path =
       "libs/com_android_support_support_fragment/support-fragment-28.0.0.aar"
   info_path = "libs/com_android_support_support_fragment/com_android_support_support_fragment.info"
   deps = [
-    ":android_arch_lifecycle_viewmodel_java",
-    ":com_android_support_loader_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
-    ":com_android_support_support_core_utils_java",
+    ":android_arch_lifecycle_viewmodel_java_orig",
+    ":com_android_support_loader_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_v13_java") {
+android_aar_prebuilt("com_android_support_support_v13_java_orig") {
   aar_path = "libs/com_android_support_support_v13/support-v13-28.0.0.aar"
   info_path = "libs/com_android_support_support_v13/com_android_support_support_v13.info"
-  deps = [ ":com_android_support_support_v4_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_v4_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_v4_java") {
+android_aar_prebuilt("com_android_support_support_v4_java_orig") {
   aar_path = "libs/com_android_support_support_v4/support-v4-28.0.0.aar"
   info_path =
       "libs/com_android_support_support_v4/com_android_support_support_v4.info"
   deps = [
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
-    ":com_android_support_support_core_utils_java",
-    ":com_android_support_support_fragment_java",
-    ":com_android_support_support_media_compat_java",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
+    ":com_android_support_support_fragment_java_orig",
+    ":com_android_support_support_media_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_swiperefreshlayout_java") {
+android_aar_prebuilt("com_android_support_swiperefreshlayout_java_orig") {
   aar_path = "libs/com_android_support_swiperefreshlayout/swiperefreshlayout-28.0.0.aar"
   info_path = "libs/com_android_support_swiperefreshlayout/com_android_support_swiperefreshlayout.info"
   deps = [
-    ":com_android_support_interpolator_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_interpolator_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_viewpager_java") {
+android_aar_prebuilt("com_android_support_viewpager_java_orig") {
   aar_path = "libs/com_android_support_viewpager/viewpager-28.0.0.aar"
   info_path =
       "libs/com_android_support_viewpager/com_android_support_viewpager.info"
   deps = [
-    ":com_android_support_customview_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_customview_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
@@ -1085,6 +1519,7 @@
     ":androidx_recyclerview_recyclerview_java",
     ":androidx_transition_transition_java",
   ]
+  ignore_proguard_configs = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -1277,7 +1712,7 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-java_prebuilt("android_arch_core_common_java") {
+java_prebuilt("android_arch_core_common_java_orig") {
   jar_path = "libs/android_arch_core_common/common-1.1.1.jar"
   output_name = "android_arch_core_common"
   supports_android = true
@@ -1285,12 +1720,12 @@
   # To remove visibility constraint, add this dependency to
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("android_arch_core_runtime_java") {
+android_aar_prebuilt("android_arch_core_runtime_java_orig") {
   aar_path = "libs/android_arch_core_runtime/runtime-1.1.1.aar"
   info_path = "libs/android_arch_core_runtime/android_arch_core_runtime.info"
 
@@ -1298,14 +1733,14 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":android_arch_core_common_java",
-    ":com_android_support_support_annotations_java",
+    ":android_arch_core_common_java_orig",
+    ":com_android_support_support_annotations_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("android_arch_lifecycle_livedata_java") {
+android_aar_prebuilt("android_arch_lifecycle_livedata_java_orig") {
   aar_path = "libs/android_arch_lifecycle_livedata/livedata-1.1.1.aar"
   info_path = "libs/android_arch_lifecycle_livedata/android_arch_lifecycle_livedata.info"
 
@@ -1313,15 +1748,15 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":android_arch_core_common_java",
-    ":android_arch_core_runtime_java",
-    ":android_arch_lifecycle_livedata_core_java",
+    ":android_arch_core_common_java_orig",
+    ":android_arch_core_runtime_java_orig",
+    ":android_arch_lifecycle_livedata_core_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("android_arch_lifecycle_livedata_core_java") {
+android_aar_prebuilt("android_arch_lifecycle_livedata_core_java_orig") {
   aar_path = "libs/android_arch_lifecycle_livedata_core/livedata-core-1.1.1.aar"
   info_path = "libs/android_arch_lifecycle_livedata_core/android_arch_lifecycle_livedata_core.info"
 
@@ -1329,9 +1764,9 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":android_arch_core_common_java",
-    ":android_arch_core_runtime_java",
-    ":android_arch_lifecycle_common_java",
+    ":android_arch_core_common_java_orig",
+    ":android_arch_core_runtime_java_orig",
+    ":android_arch_lifecycle_common_java_orig",
   ]
   skip_jetify = true
 }
@@ -1613,7 +2048,7 @@
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_animated_vector_drawable_java") {
+android_aar_prebuilt("com_android_support_animated_vector_drawable_java_orig") {
   aar_path = "libs/com_android_support_animated_vector_drawable/animated-vector-drawable-28.0.0.aar"
   info_path = "libs/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info"
 
@@ -1621,38 +2056,38 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_support_core_ui_java",
-    ":com_android_support_support_vector_drawable_java",
+    ":com_android_support_support_core_ui_java_orig",
+    ":com_android_support_support_vector_drawable_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_cursoradapter_java") {
+android_aar_prebuilt("com_android_support_cursoradapter_java_orig") {
   aar_path = "libs/com_android_support_cursoradapter/cursoradapter-28.0.0.aar"
   info_path = "libs/com_android_support_cursoradapter/com_android_support_cursoradapter.info"
 
   # To remove visibility constraint, add this dependency to
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_documentfile_java") {
+android_aar_prebuilt("com_android_support_documentfile_java_orig") {
   aar_path = "libs/com_android_support_documentfile/documentfile-28.0.0.aar"
   info_path = "libs/com_android_support_documentfile/com_android_support_documentfile.info"
 
   # To remove visibility constraint, add this dependency to
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_leanback_v17_java") {
+android_aar_prebuilt("com_android_support_leanback_v17_java_orig") {
   aar_path = "libs/com_android_support_leanback_v17/leanback-v17-28.0.0.aar"
   info_path = "libs/com_android_support_leanback_v17/com_android_support_leanback_v17.info"
 
@@ -1660,17 +2095,17 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_recyclerview_v7_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_ui_java",
-    ":com_android_support_support_fragment_java",
-    ":com_android_support_support_media_compat_java",
+    ":com_android_support_recyclerview_v7_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_ui_java_orig",
+    ":com_android_support_support_fragment_java_orig",
+    ":com_android_support_support_media_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_loader_java") {
+android_aar_prebuilt("com_android_support_loader_java_orig") {
   aar_path = "libs/com_android_support_loader/loader-28.0.0.aar"
   info_path = "libs/com_android_support_loader/com_android_support_loader.info"
 
@@ -1678,16 +2113,16 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":android_arch_lifecycle_livedata_java",
-    ":android_arch_lifecycle_viewmodel_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":android_arch_lifecycle_livedata_java_orig",
+    ":android_arch_lifecycle_viewmodel_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_palette_v7_java") {
+android_aar_prebuilt("com_android_support_palette_v7_java_orig") {
   aar_path = "libs/com_android_support_palette_v7/palette-v7-28.0.0.aar"
   info_path =
       "libs/com_android_support_palette_v7/com_android_support_palette_v7.info"
@@ -1696,38 +2131,39 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_support_compat_java",
-    ":com_android_support_support_core_utils_java",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_support_core_utils_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_preference_v14_java") {
+android_aar_prebuilt("com_android_support_preference_v14_java_orig") {
   aar_path = "libs/com_android_support_preference_v14/preference-v14-28.0.0.aar"
   info_path = "libs/com_android_support_preference_v14/com_android_support_preference_v14.info"
 
   # To remove visibility constraint, add this dependency to
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
-  deps = [ ":com_android_support_preference_v7_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_preference_v7_java_orig" ]
+  jar_excluded_patterns = [ "androidx/preference/R*" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_print_java") {
+android_aar_prebuilt("com_android_support_print_java_orig") {
   aar_path = "libs/com_android_support_print/print-28.0.0.aar"
   info_path = "libs/com_android_support_print/com_android_support_print.info"
 
   # To remove visibility constraint, add this dependency to
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
-  deps = [ ":com_android_support_support_annotations_java" ]
   skip_jetify = true
+  deps = [ ":com_android_support_support_annotations_java_orig" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_slidingpanelayout_java") {
+android_aar_prebuilt("com_android_support_slidingpanelayout_java_orig") {
   aar_path =
       "libs/com_android_support_slidingpanelayout/slidingpanelayout-28.0.0.aar"
   info_path = "libs/com_android_support_slidingpanelayout/com_android_support_slidingpanelayout.info"
@@ -1736,15 +2172,15 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_customview_java",
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_customview_java_orig",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_media_compat_java") {
+android_aar_prebuilt("com_android_support_support_media_compat_java_orig") {
   aar_path = "libs/com_android_support_support_media_compat/support-media-compat-28.0.0.aar"
   info_path = "libs/com_android_support_support_media_compat/com_android_support_support_media_compat.info"
 
@@ -1752,16 +2188,16 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
-    ":com_android_support_versionedparcelable_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
+    ":com_android_support_versionedparcelable_java_orig",
   ]
   skip_jetify = true
   ignore_aidl = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_support_vector_drawable_java") {
+android_aar_prebuilt("com_android_support_support_vector_drawable_java_orig") {
   aar_path = "libs/com_android_support_support_vector_drawable/support-vector-drawable-28.0.0.aar"
   info_path = "libs/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info"
 
@@ -1769,15 +2205,15 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
   create_srcjar = false
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_transition_java") {
+android_aar_prebuilt("com_android_support_transition_java_orig") {
   aar_path = "libs/com_android_support_transition/transition-28.0.0.aar"
   info_path =
       "libs/com_android_support_transition/com_android_support_transition.info"
@@ -1786,15 +2222,15 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_support_annotations_java",
-    ":com_android_support_support_compat_java",
+    ":com_android_support_support_annotations_java_orig",
+    ":com_android_support_support_compat_java_orig",
   ]
   skip_jetify = true
   deps += [ ":com_android_support_support_fragment_java" ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("com_android_support_versionedparcelable_java") {
+android_aar_prebuilt("com_android_support_versionedparcelable_java_orig") {
   aar_path = "libs/com_android_support_versionedparcelable/versionedparcelable-28.0.0.aar"
   info_path = "libs/com_android_support_versionedparcelable/com_android_support_versionedparcelable.info"
 
@@ -1802,11 +2238,15 @@
   # //third_party/android_deps/build.gradle.
   visibility = [ ":*" ]
   deps = [
-    ":com_android_support_collections_java",
-    ":com_android_support_support_annotations_java",
+    ":com_android_support_collections_java_orig",
+    ":com_android_support_support_annotations_java_orig",
   ]
   skip_jetify = true
   ignore_aidl = true
+  jar_excluded_patterns = [
+    "android/support/v4/graphics/drawable/IconCompat.class",
+    "androidx/*",
+  ]
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index d0fac96..358c5e8 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -261,6 +261,10 @@
                 sb.append('  jar_excluded_patterns = ["META-INF/proguard/*"]\n')
                 break
             case 'androidx_core_core':
+                sb.append('  ignore_proguard_configs = true\n')
+                // Target has AIDL, but we don't support it yet: http://crbug.com/644439
+                sb.append('  ignore_aidl = true\n')
+                break
             case 'androidx_media_media':
             case 'androidx_versionedparcelable_versionedparcelable':
             case 'com_android_support_support_compat':
@@ -292,14 +296,18 @@
                 break
             case 'android_arch_lifecycle_runtime':
             case 'android_arch_lifecycle_viewmodel':
+            case 'androidx_lifecycle_lifecycle_runtime':
+            case 'androidx_lifecycle_lifecycle_viewmodel':
                 sb.append('  # https://crbug.com/887942#c1\n')
                 sb.append('  ignore_proguard_configs = true\n')
                 break
             case 'com_android_support_coordinatorlayout':
+            case 'androidx_coordinatorlayout_coordinatorlayout':
                 sb.append('  # https:crbug.com/954584\n')
                 sb.append('  ignore_proguard_configs = true\n')
                 break
             case 'com_android_support_design':
+            case 'com_google_android_material_material':
                 // Reduce binary size. https:crbug.com/954584
                 sb.append('  ignore_proguard_configs = true\n')
                 break
@@ -347,6 +355,7 @@
                 sb.append('  # Target needs to exclude *xmlpull* files as already included in Android SDK.\n')
                 sb.append('  jar_excluded_patterns = [ "*xmlpull*" ]\n')
                 break
+            case 'androidx_preference_preference':
             case 'com_android_support_preference_v7':
                 // Replace broad library -keep rules with a more limited set in
                 // chrome/android/java/proguard.flags instead.
diff --git a/third_party/android_deps/fetch_all.py b/third_party/android_deps/fetch_all.py
index 4a4766a..24e008cf 100755
--- a/third_party/android_deps/fetch_all.py
+++ b/third_party/android_deps/fetch_all.py
@@ -352,6 +352,12 @@
       '--debug', action='store_true', help='Enable debug logging')
   args = parser.parse_args()
 
+  print("""WARNING: Temporary manual edits have been made to
+        //third_party/android_deps/BUILD.gn to support the androidx migration.
+        This script will overwrite them, so you will need to revert them
+        afterwards.
+        E.g. by running: git checkout HEAD -p https://crbug.com/896775""")
+
   # Determine Chromium source tree.
   chromium_src = args.chromium_dir
   if not chromium_src:
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium
index abe6ce2..7f736233 100644
--- a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium
@@ -10,4 +10,4 @@
 
 
 Local Modifications:
-No modifications.
+-Added androidx.annotaitons.keep to proguard to assist with androidx migration.
diff --git a/third_party/android_deps/support_mediarouter.flags b/third_party/android_deps/support_mediarouter.flags
index b3e8b83..ca57bd5 100644
--- a/third_party/android_deps/support_mediarouter.flags
+++ b/third_party/android_deps/support_mediarouter.flags
@@ -5,14 +5,14 @@
 # Help R8 to remove debug related coded. All of these static constants are
 # initialized to: Log.isLoggable(DEBUG, TAG).
 
--assumevalues class android.support.v7.app.MediaRouteControllerDialogFragment {
+-assumevalues class androidx.mediarouter.app.MediaRouteControllerDialogFragment {
   static boolean USE_SUPPORT_DYNAMIC_GROUP return false;
 }
 
--assumevalues class android.support.v7.media.MediaRouter {
+-assumevalues class androidx.mediarouter.media.MediaRouter {
   static boolean DEBUG return false;
 }
 
--assumevalues class android.support.v7.media.RegisteredMediaRouteProvider {
+-assumevalues class androidx.mediarouter.media.RegisteredMediaRouteProvider {
   static boolean DEBUG return false;
 }
diff --git a/third_party/android_sdk/androidx_browser/BUILD.gn b/third_party/android_sdk/androidx_browser/BUILD.gn
index 582c580..e6e7ead 100644
--- a/third_party/android_sdk/androidx_browser/BUILD.gn
+++ b/third_party/android_sdk/androidx_browser/BUILD.gn
@@ -45,6 +45,10 @@
     "//third_party/android_deps:com_android_support_collections_java",
     "//third_party/android_deps:com_android_support_support_annotations_java",
     "//third_party/android_deps:com_android_support_support_compat_java",
+
+    # TODO(bjoyce): Remove when androidx migration is complete.
+    # crbug.com/1047843
+    "//third_party/android_deps:com_android_support_support_compat_java_orig",
   ]
   srcjar_deps = [ ":androidx_browser_service_aidl" ]
   android_manifest_for_lint = "src/browser/src/main/AndroidManifest.xml"
diff --git a/third_party/custom_tabs_client/BUILD.gn b/third_party/custom_tabs_client/BUILD.gn
index 8f25a6d..9a76dc888 100644
--- a/third_party/custom_tabs_client/BUILD.gn
+++ b/third_party/custom_tabs_client/BUILD.gn
@@ -35,6 +35,7 @@
     ":custom_tabs_support_java",
     "//third_party/android_deps:android_arch_lifecycle_common_java",
     "//third_party/android_deps:android_support_v7_appcompat_java",
+    "//third_party/android_deps:com_android_support_appcompat_v7_java",
     "//third_party/android_deps:com_android_support_support_annotations_java",
   ]
   chromium_code = false
@@ -83,7 +84,11 @@
   ]
   deps = [
     ":custom_tabs_support_resources",
-    "//third_party/android_deps:android_support_v7_appcompat_java",
+
+    # TODO (bjoyce): Restore to android_support_v7_appcompat_java once source
+    # files are manually written to androidx crbug.com/1047843.
+    # "//third_party/android_deps:android_support_v7_appcompat_java",
+    "//third_party/android_deps:com_android_support_appcompat_v7_java_orig",
     "//third_party/android_deps:com_android_support_collections_java",
     "//third_party/android_deps:com_android_support_interpolator_java",
     "//third_party/android_deps:com_android_support_support_annotations_java",
diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
index b673f43..46d22d7a 100644
--- a/third_party/robolectric/BUILD.gn
+++ b/third_party/robolectric/BUILD.gn
@@ -1059,6 +1059,7 @@
     # Note that gson is not a direct dependency for this library, but must be
     # in the classpath when the Robolectric annotation processor runs.
     "//third_party/android_deps:androidx_test_runner_java",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
     "//third_party/android_deps:com_google_code_gson_gson_java",
     "//third_party/android_deps:com_google_guava_guava_java",
     "//third_party/hamcrest:hamcrest_java",
@@ -1092,7 +1093,7 @@
     ":robolectric_utils_java",
     ":shadows_core_java",
     "//build/android:sun_tools_java",
-    "//third_party/android_deps:com_android_support_multidex_java",
+    "//third_party/android_deps:com_android_support_multidex_java_orig",
     "//third_party/android_deps:com_google_code_gson_gson_java",
     "//third_party/android_deps:com_google_guava_guava_java",
   ]
@@ -1129,6 +1130,7 @@
     "$google_play_services_package:google_play_services_base_java",
     "$google_play_services_package:google_play_services_basement_java",
     "//third_party/android_deps:android_support_v4_java",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
     "//third_party/android_deps:com_google_code_gson_gson_java",
     "//third_party/android_deps:com_google_guava_guava_java",
   ]