Revert "Migrate template to Gradle 6.7 and AGP 4.1.0 (#70808)" (#71096)

This reverts commit 8e73bab94c6051317c9fa4279a3733b6ee2a3ef2.
diff --git a/dev/benchmarks/complex_layout/android/app/build.gradle b/dev/benchmarks/complex_layout/android/app/build.gradle
index fd4944e..3ee631d 100644
--- a/dev/benchmarks/complex_layout/android/app/build.gradle
+++ b/dev/benchmarks/complex_layout/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/benchmarks/complex_layout/android/build.gradle b/dev/benchmarks/complex_layout/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/complex_layout/android/build.gradle
+++ b/dev/benchmarks/complex_layout/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/complex_layout/android/gradle.properties b/dev/benchmarks/complex_layout/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/complex_layout/android/gradle.properties
+++ b/dev/benchmarks/complex_layout/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/benchmarks/macrobenchmarks/android/app/build.gradle b/dev/benchmarks/macrobenchmarks/android/app/build.gradle
index 057fe58..1080f42 100644
--- a/dev/benchmarks/macrobenchmarks/android/app/build.gradle
+++ b/dev/benchmarks/macrobenchmarks/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "com.example.macrobenchmarks"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/dev/benchmarks/macrobenchmarks/android/build.gradle b/dev/benchmarks/macrobenchmarks/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/macrobenchmarks/android/build.gradle
+++ b/dev/benchmarks/macrobenchmarks/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/macrobenchmarks/android/gradle.properties b/dev/benchmarks/macrobenchmarks/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/macrobenchmarks/android/gradle.properties
+++ b/dev/benchmarks/macrobenchmarks/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/macrobenchmarks/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/macrobenchmarks/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/benchmarks/macrobenchmarks/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/macrobenchmarks/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/benchmarks/microbenchmarks/android/app/build.gradle b/dev/benchmarks/microbenchmarks/android/app/build.gradle
index fd4944e..3ee631d 100644
--- a/dev/benchmarks/microbenchmarks/android/app/build.gradle
+++ b/dev/benchmarks/microbenchmarks/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/benchmarks/microbenchmarks/android/build.gradle b/dev/benchmarks/microbenchmarks/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/microbenchmarks/android/build.gradle
+++ b/dev/benchmarks/microbenchmarks/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/microbenchmarks/android/gradle.properties b/dev/benchmarks/microbenchmarks/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/microbenchmarks/android/gradle.properties
+++ b/dev/benchmarks/microbenchmarks/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/benchmarks/platform_views_layout/android/app/build.gradle b/dev/benchmarks/platform_views_layout/android/app/build.gradle
index fd4944e..3ee631d 100644
--- a/dev/benchmarks/platform_views_layout/android/app/build.gradle
+++ b/dev/benchmarks/platform_views_layout/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/benchmarks/platform_views_layout/android/build.gradle b/dev/benchmarks/platform_views_layout/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/platform_views_layout/android/build.gradle
+++ b/dev/benchmarks/platform_views_layout/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/platform_views_layout/android/gradle.properties b/dev/benchmarks/platform_views_layout/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/platform_views_layout/android/gradle.properties
+++ b/dev/benchmarks/platform_views_layout/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/platform_views_layout/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/platform_views_layout/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/benchmarks/platform_views_layout/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/platform_views_layout/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle b/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle
index fd4944e..3ee631d 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle b/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle.properties b/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle.properties
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/benchmarks/test_apps/stocks/android/app/build.gradle b/dev/benchmarks/test_apps/stocks/android/app/build.gradle
index 162e0ed..7717a40 100644
--- a/dev/benchmarks/test_apps/stocks/android/app/build.gradle
+++ b/dev/benchmarks/test_apps/stocks/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.stocks"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/benchmarks/test_apps/stocks/android/build.gradle b/dev/benchmarks/test_apps/stocks/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/benchmarks/test_apps/stocks/android/build.gradle
+++ b/dev/benchmarks/test_apps/stocks/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/benchmarks/test_apps/stocks/android/gradle.properties b/dev/benchmarks/test_apps/stocks/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/benchmarks/test_apps/stocks/android/gradle.properties
+++ b/dev/benchmarks/test_apps/stocks/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/benchmarks/test_apps/stocks/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/test_apps/stocks/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100755
--- a/dev/benchmarks/test_apps/stocks/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/benchmarks/test_apps/stocks/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart b/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart
index 20b2b41..f33e133 100644
--- a/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart
+++ b/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart
@@ -249,7 +249,7 @@
             output.contains('at org.gradle'))
           throw failure(
               'Gradle output should not contain stacktrace', result);
-        if (!output.contains('Build failed'))
+        if (!output.contains('Build failed') || !output.contains('builTypes'))
           throw failure(
               'Gradle output should contain a readable error message',
               result);
@@ -285,11 +285,11 @@
           throw failure(
               'flutter build apk should fail when Gradle does', result);
         final String output = '${result.stdout}\n${result.stderr}';
-        if (!output.contains('Build failed'))
+        if (!output.contains('Build failed') || !output.contains('builTypes'))
           throw failure(
               'flutter build apk output should contain a readable Gradle error message',
               result);
-        if (hasMultipleOccurrences(output, 'Build failed'))
+        if (hasMultipleOccurrences(output, 'builTypes'))
           throw failure(
               'flutter build apk should not invoke Gradle repeatedly on error',
               result);
diff --git a/dev/integration_tests/abstract_method_smoke_test/android/app/build.gradle b/dev/integration_tests/abstract_method_smoke_test/android/app/build.gradle
index 63b11d0..d0f73f3 100644
--- a/dev/integration_tests/abstract_method_smoke_test/android/app/build.gradle
+++ b/dev/integration_tests/abstract_method_smoke_test/android/app/build.gradle
@@ -30,12 +30,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
@@ -45,7 +49,7 @@
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.abstract_method_smoke_test"
         minSdkVersion 21
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/abstract_method_smoke_test/android/build.gradle b/dev/integration_tests/abstract_method_smoke_test/android/build.gradle
index 4b2ffeb..1c2d2db 100644
--- a/dev/integration_tests/abstract_method_smoke_test/android/build.gradle
+++ b/dev/integration_tests/abstract_method_smoke_test/android/build.gradle
@@ -10,7 +10,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/dev/integration_tests/abstract_method_smoke_test/android/gradle.properties b/dev/integration_tests/abstract_method_smoke_test/android/gradle.properties
index 08f2b5f..d2032bc 100644
--- a/dev/integration_tests/abstract_method_smoke_test/android/gradle.properties
+++ b/dev/integration_tests/abstract_method_smoke_test/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.enableJetifier=true
 android.useAndroidX=true
+android.enableR8=true
diff --git a/dev/integration_tests/abstract_method_smoke_test/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/abstract_method_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..9ec7236 100644
--- a/dev/integration_tests/abstract_method_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/abstract_method_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-all.zip
diff --git a/dev/integration_tests/android_custom_host_app/SampleApp/build.gradle b/dev/integration_tests/android_custom_host_app/SampleApp/build.gradle
index c408582..a320b98 100644
--- a/dev/integration_tests/android_custom_host_app/SampleApp/build.gradle
+++ b/dev/integration_tests/android_custom_host_app/SampleApp/build.gradle
@@ -5,7 +5,7 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     compileOptions {
         sourceCompatibility 1.8
@@ -15,7 +15,7 @@
     defaultConfig {
         applicationId "io.flutter.add2app"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/android_custom_host_app/build.gradle b/dev/integration_tests/android_custom_host_app/build.gradle
index 40d23f3..fdd798e 100644
--- a/dev/integration_tests/android_custom_host_app/build.gradle
+++ b/dev/integration_tests/android_custom_host_app/build.gradle
@@ -8,7 +8,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/android_custom_host_app/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_custom_host_app/gradle/wrapper/gradle-wrapper.properties
index 74b453c..f6c8f50 100644
--- a/dev/integration_tests/android_custom_host_app/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_custom_host_app/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/app/build.gradle b/dev/integration_tests/android_embedding_v2_smoke_test/android/app/build.gradle
index 65d0f8f..8579aa8 100644
--- a/dev/integration_tests/android_embedding_v2_smoke_test/android/app/build.gradle
+++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/app/build.gradle
@@ -30,17 +30,21 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.android_embedding_v2_smoke_test"
         minSdkVersion 21
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle b/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle
index 4b2ffeb..1c2d2db 100644
--- a/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle
+++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/build.gradle
@@ -10,7 +10,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle.properties b/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle.properties
index 94adc3a..38c8d45 100644
--- a/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle.properties
+++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_embedding_v2_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_host_app_v2_embedding/app/build.gradle b/dev/integration_tests/android_host_app_v2_embedding/app/build.gradle
index d3d6690..1a102db 100644
--- a/dev/integration_tests/android_host_app_v2_embedding/app/build.gradle
+++ b/dev/integration_tests/android_host_app_v2_embedding/app/build.gradle
@@ -5,7 +5,7 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     compileOptions {
         sourceCompatibility 1.8
@@ -15,7 +15,7 @@
     defaultConfig {
         applicationId "io.flutter.add2app"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/android_host_app_v2_embedding/build.gradle b/dev/integration_tests/android_host_app_v2_embedding/build.gradle
index 40d23f3..fdd798e 100644
--- a/dev/integration_tests/android_host_app_v2_embedding/build.gradle
+++ b/dev/integration_tests/android_host_app_v2_embedding/build.gradle
@@ -8,7 +8,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/android_host_app_v2_embedding/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_host_app_v2_embedding/gradle/wrapper/gradle-wrapper.properties
index 74b453c..f6c8f50 100644
--- a/dev/integration_tests/android_host_app_v2_embedding/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_host_app_v2_embedding/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_semantics_testing/android/app/build.gradle b/dev/integration_tests/android_semantics_testing/android/app/build.gradle
index a2f4fa8..682e7ff 100644
--- a/dev/integration_tests/android_semantics_testing/android/app/build.gradle
+++ b/dev/integration_tests/android_semantics_testing/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/integration_tests/android_semantics_testing/android/build.gradle b/dev/integration_tests/android_semantics_testing/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/android_semantics_testing/android/build.gradle
+++ b/dev/integration_tests/android_semantics_testing/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/android_semantics_testing/android/gradle.properties b/dev/integration_tests/android_semantics_testing/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/android_semantics_testing/android/gradle.properties
+++ b/dev/integration_tests/android_semantics_testing/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/android_semantics_testing/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_semantics_testing/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100755
--- a/dev/integration_tests/android_semantics_testing/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_semantics_testing/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/app/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/app/build.gradle
index 5bbbdf1..0f0ba57 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/app/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.splash_screen_kitchen_sink"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/build.gradle
index c2c4160..7e89070 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.1'
     }
 }
 
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle.properties b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/app/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/app/build.gradle
index 1b21eb3..6556ef5 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/app/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.splash_screen_load_rotate"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/build.gradle
index c2c4160..7e89070 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.1'
     }
 }
 
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle.properties b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_load_rotate/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/app/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/app/build.gradle
index 03dcb8e..f8c1c69 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/app/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.splash_screen_trans_rotate"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/build.gradle b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/build.gradle
index c2c4160..7e89070 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/build.gradle
+++ b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.1'
     }
 }
 
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle.properties b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/android_views/android/app/build.gradle b/dev/integration_tests/android_views/android/app/build.gradle
index d85ff89..eed0bcb 100644
--- a/dev/integration_tests/android_views/android/app/build.gradle
+++ b/dev/integration_tests/android_views/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.integration.platformviews"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/android_views/android/build.gradle b/dev/integration_tests/android_views/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/android_views/android/build.gradle
+++ b/dev/integration_tests/android_views/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/android_views/android/gradle.properties b/dev/integration_tests/android_views/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/android_views/android/gradle.properties
+++ b/dev/integration_tests/android_views/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/android_views/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/android_views/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/android_views/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/android_views/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/channels/android/app/build.gradle b/dev/integration_tests/channels/android/app/build.gradle
index a2f4fa8..682e7ff 100644
--- a/dev/integration_tests/channels/android/app/build.gradle
+++ b/dev/integration_tests/channels/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/integration_tests/channels/android/build.gradle b/dev/integration_tests/channels/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/channels/android/build.gradle
+++ b/dev/integration_tests/channels/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/channels/android/gradle.properties b/dev/integration_tests/channels/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/channels/android/gradle.properties
+++ b/dev/integration_tests/channels/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100755
--- a/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/external_ui/android/app/build.gradle b/dev/integration_tests/external_ui/android/app/build.gradle
index 9880899..7171f2b 100644
--- a/dev/integration_tests/external_ui/android/app/build.gradle
+++ b/dev/integration_tests/external_ui/android/app/build.gradle
@@ -19,12 +19,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.externalui"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/external_ui/android/build.gradle b/dev/integration_tests/external_ui/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/external_ui/android/build.gradle
+++ b/dev/integration_tests/external_ui/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/external_ui/android/gradle.properties b/dev/integration_tests/external_ui/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/external_ui/android/gradle.properties
+++ b/dev/integration_tests/external_ui/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/external_ui/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/external_ui/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/external_ui/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/external_ui/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/flavors/android/app/build.gradle b/dev/integration_tests/flavors/android/app/build.gradle
index d54de5f..9a04242 100644
--- a/dev/integration_tests/flavors/android/app/build.gradle
+++ b/dev/integration_tests/flavors/android/app/build.gradle
@@ -19,12 +19,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "com.yourcompany.flavors"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/flavors/android/build.gradle b/dev/integration_tests/flavors/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/flavors/android/build.gradle
+++ b/dev/integration_tests/flavors/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/flavors/android/gradle.properties b/dev/integration_tests/flavors/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/flavors/android/gradle.properties
+++ b/dev/integration_tests/flavors/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/flavors/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/flavors/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/flavors/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/flavors/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/flutter_driver_screenshot_test/android/app/build.gradle b/dev/integration_tests/flutter_driver_screenshot_test/android/app/build.gradle
index 08378dc..8c12664 100644
--- a/dev/integration_tests/flutter_driver_screenshot_test/android/app/build.gradle
+++ b/dev/integration_tests/flutter_driver_screenshot_test/android/app/build.gradle
@@ -30,17 +30,21 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.screenshot_tests"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/flutter_driver_screenshot_test/android/build.gradle b/dev/integration_tests/flutter_driver_screenshot_test/android/build.gradle
index 4b2ffeb..1c2d2db 100644
--- a/dev/integration_tests/flutter_driver_screenshot_test/android/build.gradle
+++ b/dev/integration_tests/flutter_driver_screenshot_test/android/build.gradle
@@ -10,7 +10,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/dev/integration_tests/flutter_driver_screenshot_test/android/gradle.properties b/dev/integration_tests/flutter_driver_screenshot_test/android/gradle.properties
index 94adc3a..38c8d45 100644
--- a/dev/integration_tests/flutter_driver_screenshot_test/android/gradle.properties
+++ b/dev/integration_tests/flutter_driver_screenshot_test/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/dev/integration_tests/flutter_driver_screenshot_test/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/flutter_driver_screenshot_test/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/flutter_driver_screenshot_test/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/flutter_driver_screenshot_test/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/flutter_gallery/android/app/build.gradle b/dev/integration_tests/flutter_gallery/android/app/build.gradle
index 68ea4af..6476fe6 100644
--- a/dev/integration_tests/flutter_gallery/android/app/build.gradle
+++ b/dev/integration_tests/flutter_gallery/android/app/build.gradle
@@ -40,12 +40,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.demo.gallery"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/dev/integration_tests/flutter_gallery/android/build.gradle b/dev/integration_tests/flutter_gallery/android/build.gradle
index ae150cd..7adce49 100644
--- a/dev/integration_tests/flutter_gallery/android/build.gradle
+++ b/dev/integration_tests/flutter_gallery/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/flutter_gallery/android/gradle.properties b/dev/integration_tests/flutter_gallery/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/flutter_gallery/android/gradle.properties
+++ b/dev/integration_tests/flutter_gallery/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/gradle_deprecated_settings/android/app/build.gradle b/dev/integration_tests/gradle_deprecated_settings/android/app/build.gradle
index 13f7a3f..a66c2b2 100644
--- a/dev/integration_tests/gradle_deprecated_settings/android/app/build.gradle
+++ b/dev/integration_tests/gradle_deprecated_settings/android/app/build.gradle
@@ -19,9 +19,12 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    // This test cannot use 30 due to https://github.com/flutter/flutter/issues/70897
     compileSdkVersion 29
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     defaultConfig {
         applicationId "com.yourcompany.flavors"
         minSdkVersion 21
diff --git a/dev/integration_tests/gradle_deprecated_settings/android/app/src/main/java/com/yourcompany/flavors/MainActivity.java b/dev/integration_tests/gradle_deprecated_settings/android/app/src/main/java/com/yourcompany/flavors/MainActivity.java
index 24f93ca..7e6d4fe 100644
--- a/dev/integration_tests/gradle_deprecated_settings/android/app/src/main/java/com/yourcompany/flavors/MainActivity.java
+++ b/dev/integration_tests/gradle_deprecated_settings/android/app/src/main/java/com/yourcompany/flavors/MainActivity.java
@@ -7,6 +7,8 @@
 import android.os.Bundle;
 
 import io.flutter.app.FlutterActivity;
+import io.flutter.plugin.common.MethodCall;
+import io.flutter.plugin.common.MethodChannel;
 import io.flutter.plugins.GeneratedPluginRegistrant;
 
 public class MainActivity extends FlutterActivity {
@@ -14,5 +16,11 @@
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     GeneratedPluginRegistrant.registerWith(this);
+    new MethodChannel(getFlutterView(), "flavor").setMethodCallHandler(new MethodChannel.MethodCallHandler() {
+      @Override
+      public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
+        result.success(BuildConfig.FLAVOR);
+      }
+    });
   }
 }
diff --git a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/gradle_deprecated_settings/android/build.gradle
+++ b/dev/integration_tests/gradle_deprecated_settings/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/gradle_deprecated_settings/android/gradle.properties b/dev/integration_tests/gradle_deprecated_settings/android/gradle.properties
index 4d3226a..a673820 100644
--- a/dev/integration_tests/gradle_deprecated_settings/android/gradle.properties
+++ b/dev/integration_tests/gradle_deprecated_settings/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
-android.enableJetifier=true
\ No newline at end of file
+android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/gradle_deprecated_settings/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/gradle_deprecated_settings/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/gradle_deprecated_settings/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/gradle_deprecated_settings/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/hybrid_android_views/android/app/build.gradle b/dev/integration_tests/hybrid_android_views/android/app/build.gradle
index d85ff89..eed0bcb 100644
--- a/dev/integration_tests/hybrid_android_views/android/app/build.gradle
+++ b/dev/integration_tests/hybrid_android_views/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.integration.platformviews"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/hybrid_android_views/android/build.gradle b/dev/integration_tests/hybrid_android_views/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/hybrid_android_views/android/build.gradle
+++ b/dev/integration_tests/hybrid_android_views/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/hybrid_android_views/android/gradle.properties b/dev/integration_tests/hybrid_android_views/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/hybrid_android_views/android/gradle.properties
+++ b/dev/integration_tests/hybrid_android_views/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/hybrid_android_views/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/hybrid_android_views/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/hybrid_android_views/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/hybrid_android_views/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/image_loading/android/app/bin/build.gradle b/dev/integration_tests/image_loading/android/app/bin/build.gradle
index a2f4fa8..682e7ff 100644
--- a/dev/integration_tests/image_loading/android/app/bin/build.gradle
+++ b/dev/integration_tests/image_loading/android/app/bin/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/integration_tests/image_loading/android/app/build.gradle b/dev/integration_tests/image_loading/android/app/build.gradle
index a2f4fa8..682e7ff 100644
--- a/dev/integration_tests/image_loading/android/app/build.gradle
+++ b/dev/integration_tests/image_loading/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/integration_tests/image_loading/android/build.gradle b/dev/integration_tests/image_loading/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/image_loading/android/build.gradle
+++ b/dev/integration_tests/image_loading/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/image_loading/android/gradle.properties b/dev/integration_tests/image_loading/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/image_loading/android/gradle.properties
+++ b/dev/integration_tests/image_loading/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/image_loading/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/image_loading/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100755
--- a/dev/integration_tests/image_loading/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/image_loading/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle b/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle
index 4b21d20..5282605 100644
--- a/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle
+++ b/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle
@@ -5,7 +5,7 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
     compileOptions {
         sourceCompatibility 1.8
         targetCompatibility 1.8
@@ -13,7 +13,7 @@
     defaultConfig {
         applicationId "io.flutter.addtoapp"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle b/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle
index 40d23f3..afef97c 100644
--- a/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle
+++ b/dev/integration_tests/module_host_with_custom_build_v2_embedding/build.gradle
@@ -8,7 +8,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.1'
     }
 }
 
diff --git a/dev/integration_tests/module_host_with_custom_build_v2_embedding/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/module_host_with_custom_build_v2_embedding/gradle/wrapper/gradle-wrapper.properties
index 74b453c..f6c8f50 100644
--- a/dev/integration_tests/module_host_with_custom_build_v2_embedding/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/module_host_with_custom_build_v2_embedding/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/non_nullable/android/app/build.gradle b/dev/integration_tests/non_nullable/android/app/build.gradle
index 88705de..c6d2150 100644
--- a/dev/integration_tests/non_nullable/android/app/build.gradle
+++ b/dev/integration_tests/non_nullable/android/app/build.gradle
@@ -30,17 +30,21 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.non_nullable"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/integration_tests/non_nullable/android/build.gradle b/dev/integration_tests/non_nullable/android/build.gradle
index 4b2ffeb..1c2d2db 100644
--- a/dev/integration_tests/non_nullable/android/build.gradle
+++ b/dev/integration_tests/non_nullable/android/build.gradle
@@ -10,7 +10,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/dev/integration_tests/non_nullable/android/gradle.properties b/dev/integration_tests/non_nullable/android/gradle.properties
index 94adc3a..38c8d45 100644
--- a/dev/integration_tests/non_nullable/android/gradle.properties
+++ b/dev/integration_tests/non_nullable/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/dev/integration_tests/non_nullable/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/non_nullable/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/non_nullable/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/non_nullable/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/platform_interaction/android/app/build.gradle b/dev/integration_tests/platform_interaction/android/app/build.gradle
index a2f4fa8..682e7ff 100644
--- a/dev/integration_tests/platform_interaction/android/app/build.gradle
+++ b/dev/integration_tests/platform_interaction/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "0.0.1"
     }
diff --git a/dev/integration_tests/platform_interaction/android/build.gradle b/dev/integration_tests/platform_interaction/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/platform_interaction/android/build.gradle
+++ b/dev/integration_tests/platform_interaction/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/platform_interaction/android/gradle.properties b/dev/integration_tests/platform_interaction/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/platform_interaction/android/gradle.properties
+++ b/dev/integration_tests/platform_interaction/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/platform_interaction/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/platform_interaction/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100755
--- a/dev/integration_tests/platform_interaction/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/platform_interaction/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/integration_tests/release_smoke_test/android/app/build.gradle b/dev/integration_tests/release_smoke_test/android/app/build.gradle
index ed4df28..03b459e 100644
--- a/dev/integration_tests/release_smoke_test/android/app/build.gradle
+++ b/dev/integration_tests/release_smoke_test/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.release_smoke_test"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/dev/integration_tests/release_smoke_test/android/build.gradle b/dev/integration_tests/release_smoke_test/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/release_smoke_test/android/build.gradle
+++ b/dev/integration_tests/release_smoke_test/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/release_smoke_test/android/gradle.properties b/dev/integration_tests/release_smoke_test/android/gradle.properties
index d1ab454..b1e161a 100644
--- a/dev/integration_tests/release_smoke_test/android/gradle.properties
+++ b/dev/integration_tests/release_smoke_test/android/gradle.properties
@@ -1,5 +1,6 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/dev/integration_tests/release_smoke_test/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/release_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..9ec7236 100644
--- a/dev/integration_tests/release_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/release_smoke_test/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-all.zip
diff --git a/dev/integration_tests/ui/android/app/build.gradle b/dev/integration_tests/ui/android/app/build.gradle
index a1849af..77ae3e7 100644
--- a/dev/integration_tests/ui/android/app/build.gradle
+++ b/dev/integration_tests/ui/android/app/build.gradle
@@ -19,11 +19,15 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/dev/integration_tests/ui/android/build.gradle b/dev/integration_tests/ui/android/build.gradle
index c2c4160..5df71fc 100644
--- a/dev/integration_tests/ui/android/build.gradle
+++ b/dev/integration_tests/ui/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/dev/integration_tests/ui/android/gradle.properties b/dev/integration_tests/ui/android/gradle.properties
index 94adc3a..a673820 100644
--- a/dev/integration_tests/ui/android/gradle.properties
+++ b/dev/integration_tests/ui/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/dev/manual_tests/android/app/build.gradle b/dev/manual_tests/android/app/build.gradle
index 6b4f3fd..ec08213 100644
--- a/dev/manual_tests/android/app/build.gradle
+++ b/dev/manual_tests/android/app/build.gradle
@@ -30,7 +30,7 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
@@ -44,7 +44,7 @@
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.manual_tests"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/dev/manual_tests/android/build.gradle b/dev/manual_tests/android/build.gradle
index 4b2ffeb..1c2d2db 100644
--- a/dev/manual_tests/android/build.gradle
+++ b/dev/manual_tests/android/build.gradle
@@ -10,7 +10,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/dev/manual_tests/android/gradle.properties b/dev/manual_tests/android/gradle.properties
index 94adc3a..38c8d45 100644
--- a/dev/manual_tests/android/gradle.properties
+++ b/dev/manual_tests/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
 android.useAndroidX=true
 android.enableJetifier=true
diff --git a/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties b/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties
+++ b/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/examples/flutter_view/android/app/build.gradle b/examples/flutter_view/android/app/build.gradle
index 364d054..98ae98a 100644
--- a/examples/flutter_view/android/app/build.gradle
+++ b/examples/flutter_view/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.flutter_view"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/examples/flutter_view/android/build.gradle b/examples/flutter_view/android/build.gradle
index c2c4160..5df71fc 100644
--- a/examples/flutter_view/android/build.gradle
+++ b/examples/flutter_view/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/examples/flutter_view/android/gradle.properties b/examples/flutter_view/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/flutter_view/android/gradle.properties
+++ b/examples/flutter_view/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties b/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/examples/hello_world/android/app/build.gradle b/examples/hello_world/android/app/build.gradle
index 9741e1c..45d8d41 100644
--- a/examples/hello_world/android/app/build.gradle
+++ b/examples/hello_world/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.hello_world"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/examples/hello_world/android/build.gradle b/examples/hello_world/android/build.gradle
index c2c4160..5df71fc 100644
--- a/examples/hello_world/android/build.gradle
+++ b/examples/hello_world/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/examples/hello_world/android/gradle.properties b/examples/hello_world/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/hello_world/android/gradle.properties
+++ b/examples/hello_world/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties b/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/examples/image_list/android/app/build.gradle b/examples/image_list/android/app/build.gradle
index df205c3..447218a 100644
--- a/examples/image_list/android/app/build.gradle
+++ b/examples/image_list/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.image_list"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/examples/image_list/android/build.gradle b/examples/image_list/android/build.gradle
index c2c4160..7e89070 100644
--- a/examples/image_list/android/build.gradle
+++ b/examples/image_list/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.1'
     }
 }
 
diff --git a/examples/image_list/android/gradle.properties b/examples/image_list/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/image_list/android/gradle.properties
+++ b/examples/image_list/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/layers/android/app/build.gradle b/examples/layers/android/app/build.gradle
index 597bf40..44f6f29 100644
--- a/examples/layers/android/app/build.gradle
+++ b/examples/layers/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.layers"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/examples/layers/android/build.gradle b/examples/layers/android/build.gradle
index c2c4160..5df71fc 100644
--- a/examples/layers/android/build.gradle
+++ b/examples/layers/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/examples/layers/android/gradle.properties b/examples/layers/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/layers/android/gradle.properties
+++ b/examples/layers/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/layers/android/gradle/wrapper/gradle-wrapper.properties b/examples/layers/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/examples/layers/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/layers/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/examples/platform_channel/android/app/build.gradle b/examples/platform_channel/android/app/build.gradle
index b46a1e0..91fa03a 100644
--- a/examples/platform_channel/android/app/build.gradle
+++ b/examples/platform_channel/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.platform_channel"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/examples/platform_channel/android/build.gradle b/examples/platform_channel/android/build.gradle
index c2c4160..5df71fc 100644
--- a/examples/platform_channel/android/build.gradle
+++ b/examples/platform_channel/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/examples/platform_channel/android/gradle.properties b/examples/platform_channel/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/platform_channel/android/gradle.properties
+++ b/examples/platform_channel/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties b/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/examples/platform_view/android/app/build.gradle b/examples/platform_view/android/app/build.gradle
index fb88ce8..9b501f3 100644
--- a/examples/platform_view/android/app/build.gradle
+++ b/examples/platform_view/android/app/build.gradle
@@ -29,12 +29,16 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         applicationId "io.flutter.examples.platform_view"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/examples/platform_view/android/build.gradle b/examples/platform_view/android/build.gradle
index c2c4160..5df71fc 100644
--- a/examples/platform_view/android/build.gradle
+++ b/examples/platform_view/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/examples/platform_view/android/gradle.properties b/examples/platform_view/android/gradle.properties
index 94adc3a..a673820 100644
--- a/examples/platform_view/android/gradle.properties
+++ b/examples/platform_view/android/gradle.properties
@@ -1,3 +1,4 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableR8=true
diff --git a/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties b/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle
index 3b71065..1ca71d7 100644
--- a/packages/flutter_tools/gradle/flutter.gradle
+++ b/packages/flutter_tools/gradle/flutter.gradle
@@ -27,7 +27,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
@@ -101,8 +101,7 @@
         this.project = project
 
         project.extensions.create("flutter", FlutterExtension)
-        this.addFlutterTasks(project)
-
+        project.afterEvaluate this.&addFlutterTasks
         // By default, assembling APKs generates fat APKs if multiple platforms are passed.
         // Configuring split per ABI allows to generate separate APKs for each abi.
         // This is a noop when building a bundle.
@@ -159,23 +158,24 @@
             }
         }
 
-        String flutterProguardRules = Paths.get(flutterRoot.absolutePath, "packages", "flutter_tools",
-                "gradle", "flutter_proguard_rules.pro")
-        project.android.buildTypes {
-            release {
-                // Enables code shrinking, obfuscation, and optimization for only
-                // your project's release build type.
-                minifyEnabled true
-                // Enables resource shrinking, which is performed by the
-                // Android Gradle plugin.
-                // NOTE: The resource shrinker can't be used for libraries.
-                shrinkResources isBuiltAsApp(project)
-                // Fallback to `android/app/proguard-rules.pro`.
-                // This way, custom Proguard rules can be configured as needed.
-                proguardFiles project.android.getDefaultProguardFile("proguard-android.txt"), flutterProguardRules, "proguard-rules.pro"
+        if (shouldShrinkResources(project)) {
+            String flutterProguardRules = Paths.get(flutterRoot.absolutePath, "packages", "flutter_tools",
+                    "gradle", "flutter_proguard_rules.pro")
+            project.android.buildTypes {
+                release {
+                    // Enables code shrinking, obfuscation, and optimization for only
+                    // your project's release build type.
+                    minifyEnabled true
+                    // Enables resource shrinking, which is performed by the
+                    // Android Gradle plugin.
+                    // NOTE: The resource shrinker can't be used for libraries.
+                    shrinkResources isBuiltAsApp(project)
+                    // Fallback to `android/app/proguard-rules.pro`.
+                    // This way, custom Proguard rules can be configured as needed.
+                    proguardFiles project.android.getDefaultProguardFile("proguard-android.txt"), flutterProguardRules, "proguard-rules.pro"
+                }
             }
         }
-
         if (useLocalEngine()) {
             // This is required to pass the local engine to flutter build aot.
             String engineOutPath = project.property('local-engine-out')
@@ -322,13 +322,13 @@
             )
         }
         pluginProject.afterEvaluate {
-          pluginProject.android.buildTypes {
-              profile {
-                  initWith debug
-              }
-          }
-          pluginProject.android.buildTypes.each addEmbeddingCompileOnlyDependency
-          pluginProject.android.buildTypes.whenObjectAdded addEmbeddingCompileOnlyDependency
+            pluginProject.android.buildTypes {
+                profile {
+                    initWith debug
+                }
+            }
+            pluginProject.android.buildTypes.each addEmbeddingCompileOnlyDependency
+            pluginProject.android.buildTypes.whenObjectAdded addEmbeddingCompileOnlyDependency
         }
     }
 
@@ -490,6 +490,14 @@
         return false
     }
 
+
+    private static Boolean shouldShrinkResources(Project project) {
+        if (project.hasProperty("shrink")) {
+            return project.property("shrink").toBoolean()
+        }
+        return false
+    }
+
     private static Boolean isBuiltAsApp(Project project) {
         // Projects are built as applications when the they use the `com.android.application`
         // plugin.
@@ -562,21 +570,13 @@
         return "${targetArch}-release"
     }
 
-    /**
-     * Gets the directory that contains the Flutter source code.
-     * This is the the directory containing the `android/` directory.
-     */
-    private File getFlutterSourceDirectory() {
+    private void addFlutterTasks(Project project) {
+        if (project.state.failure) {
+            return
+        }
         if (project.flutter.source == null) {
             throw new GradleException("Must provide Flutter source directory")
         }
-        return project.file(project.flutter.source)
-    }
-
-    /**
-     * Gets the target file. This is typically `lib/main.dart`.
-     */
-    private String getFlutterTarget() {
         String target = project.flutter.target
         if (target == null) {
             target = 'lib/main.dart'
@@ -584,66 +584,6 @@
         if (project.hasProperty('target')) {
             target = project.property('target')
         }
-        return target
-    }
-
-    // In AGP 4.0, the Android linter task depends on the JAR tasks that generate `libapp.so`.
-    // When building APKs, this causes an issue where building release requires the debug JAR,
-    // but Gradle won't build debug.
-    //
-    // To workaround this issue, only configure the JAR task that is required given the task
-    // from the command line.
-    //
-    // The AGP team said that this issue is fixed in Gradle 7.0, which isn't released at the
-    // time of adding this code. Once released, this can be removed.
-    //
-    // Tested cases:
-    // * `./gradlew assembleRelease`
-    // * `./gradlew app:assembleRelease.`
-    // * `./gradlew assemble{flavorName}Release`
-    // * `./gradlew app:assemble{flavorName}Release`
-    // * `./gradlew assemble.`
-    // * `./gradlew app:assemble.`
-    // * `./gradlew bundle.`
-    // * `./gradlew bundleRelease.`
-    // * `./gradlew app:bundleRelease.`
-    //
-    // Related issues:
-    // https://issuetracker.google.com/issues/158060799
-    // https://issuetracker.google.com/issues/158753935
-    private boolean shouldConfigureFlutterTask(Task assembleTask) {
-        def cliTasksNames = project.gradle.startParameter.taskNames
-        if (cliTasksNames.size() != 1 || !cliTasksNames.first().contains("assemble")) {
-            return true
-        }
-        def taskName = cliTasksNames.first().split(":").last()
-        if (taskName == "assemble") {
-            return true
-        }
-        if (taskName == assembleTask.name) {
-            return true
-        }
-        if (taskName.endsWith("Release") && assembleTask.name.endsWith("Release")) {
-            return true
-        }
-        if (taskName.endsWith("Debug") && assembleTask.name.endsWith("Debug")) {
-            return true
-        }
-        if (taskName.endsWith("Profile") && assembleTask.name.endsWith("Profile")) {
-            return true
-        }
-        return false
-    }
-
-    private Task getAssembleTask(variant) {
-        // `assemble` became `assembleProvider` in AGP 3.3.0.
-        return variant.hasProperty("assembleProvider") ? variant.assembleProvider.get() : variant.assemble
-    }
-
-    private void addFlutterTasks(Project project) {
-        if (project.state.failure) {
-            return
-        }
         String[] fileSystemRootsValue = null
         if (project.hasProperty('filesystem-roots')) {
             fileSystemRootsValue = project.property('filesystem-roots').split('\\|')
@@ -715,14 +655,14 @@
                 buildMode variantBuildMode
                 localEngine this.localEngine
                 localEngineSrcPath this.localEngineSrcPath
-                targetPath getFlutterTarget()
+                targetPath target
                 verbose isVerbose()
                 fastStart isFastStart()
                 fileSystemRoots fileSystemRootsValue
                 fileSystemScheme fileSystemSchemeValue
                 trackWidgetCreation trackWidgetCreationValue
                 targetPlatformValues = targetPlatforms
-                sourceDir getFlutterSourceDirectory()
+                sourceDir project.file(project.flutter.source)
                 intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter/${variant.name}/")
                 extraFrontEndOptions extraFrontEndOptionsValue
                 extraGenSnapshotOptions extraGenSnapshotOptionsValue
@@ -794,22 +734,48 @@
                 def processResources = variantOutput.hasProperty("processResourcesProvider") ?
                     variantOutput.processResourcesProvider.get() : variantOutput.processResources
                 processResources.dependsOn(copyFlutterAssetsTask)
+                return
             }
-            return copyFlutterAssetsTask
-        }
-        boolean isFlutterAppProject = project.android.hasProperty("applicationVariants")
-        if (isFlutterAppProject) {
-            project.android.applicationVariants.all { variant ->
-                Task assembleTask = getAssembleTask(variant)
-                if (!shouldConfigureFlutterTask(assembleTask)) {
-                  return
+            // Flutter module included as a subproject in add to app.
+            String hostAppProjectName = project.rootProject.hasProperty('flutter.hostAppProjectName') ? project.rootProject.property('flutter.hostAppProjectName')  : "app"
+            Project appProject = project.rootProject.findProject(":${hostAppProjectName}")
+            assert appProject != null : "Project :${hostAppProjectName} doesn't exist. To custom the host app project name, set `org.gradle.project.flutter.hostAppProjectName=<project-name>` in gradle.properties."
+            appProject.afterEvaluate {
+                assert appProject.android != null
+                appProject.android.applicationVariants.all { appProjectVariant ->
+                    // Find a compatible application variant in the host app.
+                    //
+                    // For example, consider a host app that defines the following variants:
+                    // | ----------------- | ----------------------------- |
+                    // |   Build Variant   |   Flutter Equivalent Variant  |
+                    // | ----------------- | ----------------------------- |
+                    // |   freeRelease     |   relese                      |
+                    // |   freeDebug       |   debug                       |
+                    // |   freeDevelop     |   debug                       |
+                    // |   profile         |   profile                     |
+                    // | ----------------- | ----------------------------- |
+                    //
+                    // This mapping is based on the following rules:
+                    // 1. If the host app build variant name is `profile` then the equivalent
+                    //    Flutter variant is `profile`.
+                    // 2. If the host app build variant is debuggable
+                    //    (e.g. `buildType.debuggable = true`), then the equivalent Flutter
+                    //    variant is `debug`.
+                    // 3. Otherwise, the equivalent Flutter variant is `release`.
+                    if (buildModeFor(appProjectVariant.buildType) != variantBuildMode) {
+                        return
+                    }
+                    Task mergeAssets = project
+                        .tasks
+                        .findByPath(":${hostAppProjectName}:merge${appProjectVariant.name.capitalize()}Assets")
+                    assert mergeAssets
+                    mergeAssets.dependsOn(copyFlutterAssetsTask)
                 }
-                Task copyFlutterAssetsTask = addFlutterDeps(variant)
-                def variantOutput = variant.outputs.first()
-                def processResources = variantOutput.hasProperty("processResourcesProvider") ?
-                    variantOutput.processResourcesProvider.get() : variantOutput.processResources
-                processResources.dependsOn(copyFlutterAssetsTask)
-
+            }
+        }
+        if (project.android.hasProperty("applicationVariants")) {
+            project.android.applicationVariants.all { variant ->
+                addFlutterDeps(variant)
                 // Copy the output APKs into a known location, so `flutter run` or `flutter build apk`
                 // can discover them. By default, this is `<app-dir>/build/app/outputs/flutter-apk/<filename>.apk`.
                 //
@@ -819,6 +785,10 @@
                 //   * `flavor-name` is the flavor used to build the app in lower case if the assemble task is called.
                 //   * `build-mode` can be `release|debug|profile`.
                 variant.outputs.all { output ->
+                    // `assemble` became `assembleProvider` in AGP 3.3.0.
+                    def assembleTask = variant.hasProperty("assembleProvider")
+                        ? variant.assembleProvider.get()
+                        : variant.assemble
                     assembleTask.doLast {
                         // `packageApplication` became `packageApplicationProvider` in AGP 3.3.0.
                         def outputDirectory = variant.hasProperty("packageApplicationProvider")
@@ -847,56 +817,8 @@
                     }
                 }
             }
-            configurePlugins()
-            return
-        }
-        // Flutter host module project (Add-to-app).
-        String hostAppProjectName = project.rootProject.hasProperty('flutter.hostAppProjectName') ? project.rootProject.property('flutter.hostAppProjectName') : "app"
-        Project appProject = project.rootProject.findProject(":${hostAppProjectName}")
-        assert appProject != null : "Project :${hostAppProjectName} doesn't exist. To custom the host app project name, set `org.gradle.project.flutter.hostAppProjectName=<project-name>` in gradle.properties."
-        // Wait for the host app project configuration.
-        appProject.afterEvaluate {
-            assert appProject.android != null
-            project.android.libraryVariants.all { libraryVariant ->
-                Task copyFlutterAssetsTask
-                appProject.android.applicationVariants.all { appProjectVariant ->
-                    Task appAssembleTask = getAssembleTask(appProjectVariant)
-                    if (!shouldConfigureFlutterTask(appAssembleTask)) {
-                        return
-                    }
-                    // Find a compatible application variant in the host app.
-                    //
-                    // For example, consider a host app that defines the following variants:
-                    // | ----------------- | ----------------------------- |
-                    // |   Build Variant   |   Flutter Equivalent Variant  |
-                    // | ----------------- | ----------------------------- |
-                    // |   freeRelease     |   relese                      |
-                    // |   freeDebug       |   debug                       |
-                    // |   freeDevelop     |   debug                       |
-                    // |   profile         |   profile                     |
-                    // | ----------------- | ----------------------------- |
-                    //
-                    // This mapping is based on the following rules:
-                    // 1. If the host app build variant name is `profile` then the equivalent
-                    //    Flutter variant is `profile`.
-                    // 2. If the host app build variant is debuggable
-                    //    (e.g. `buildType.debuggable = true`), then the equivalent Flutter
-                    //    variant is `debug`.
-                    // 3. Otherwise, the equivalent Flutter variant is `release`.
-                    String variantBuildMode = buildModeFor(libraryVariant.buildType)
-                    if (buildModeFor(appProjectVariant.buildType) != variantBuildMode) {
-                        return
-                    }
-                    if (copyFlutterAssetsTask == null) {
-                        copyFlutterAssetsTask = addFlutterDeps(libraryVariant)
-                    }
-                    Task mergeAssets = project
-                        .tasks
-                        .findByPath(":${hostAppProjectName}:merge${appProjectVariant.name.capitalize()}Assets")
-                    assert mergeAssets
-                    mergeAssets.dependsOn(copyFlutterAssetsTask)
-                }
-            }
+        } else {
+            project.android.libraryVariants.all addFlutterDeps
         }
         configurePlugins()
     }
diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart
index 17584a8..b1846b6 100644
--- a/packages/flutter_tools/lib/src/android/gradle.dart
+++ b/packages/flutter_tools/lib/src/android/gradle.dart
@@ -324,6 +324,9 @@
   if (androidBuildInfo.splitPerAbi) {
     command.add('-Psplit-per-abi=true');
   }
+  if (androidBuildInfo.shrink) {
+    command.add('-Pshrink=true');
+  }
   if (androidBuildInfo.buildInfo.dartDefines?.isNotEmpty ?? false) {
     command.add('-Pdart-defines=${encodeDartDefines(androidBuildInfo.buildInfo.dartDefines)}');
   }
diff --git a/packages/flutter_tools/lib/src/android/gradle_errors.dart b/packages/flutter_tools/lib/src/android/gradle_errors.dart
index 82acc21..5b7010d 100644
--- a/packages/flutter_tools/lib/src/android/gradle_errors.dart
+++ b/packages/flutter_tools/lib/src/android/gradle_errors.dart
@@ -228,7 +228,7 @@
     }
     if (hasPlugins && usesAndroidX && !shouldBuildPluginAsAar) {
       globals.printStatus(
-        'The build failed likely due to AndroidX incompatibilities in a plugin. '
+        'The built failed likely due to AndroidX incompatibilities in a plugin. '
         'The tool is about to try using Jetfier to solve the incompatibility.'
       );
       BuildEvent(
diff --git a/packages/flutter_tools/lib/src/android/gradle_utils.dart b/packages/flutter_tools/lib/src/android/gradle_utils.dart
index 84cd3fa..ab493f9 100644
--- a/packages/flutter_tools/lib/src/android/gradle_utils.dart
+++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart
@@ -40,6 +40,9 @@
   /// This is the `gradlew` or `gradlew.bat` script in the `android/` directory.
   String getExecutable(FlutterProject project) {
     final Directory androidDir = project.android.hostAppGradleRoot;
+    // Update the project if needed.
+    // TODO(egarciad): https://github.com/flutter/flutter/issues/40460
+    gradleUtils.migrateToR8(androidDir);
     gradleUtils.injectGradleWrapperIfNeeded(androidDir);
 
     final File gradle = androidDir.childFile(
@@ -59,6 +62,37 @@
     return null;
   }
 
+  /// Migrates the Android's [directory] to R8.
+  /// https://developer.android.com/studio/build/shrink-code
+  @visibleForTesting
+  void migrateToR8(Directory directory) {
+    final File gradleProperties = directory.childFile('gradle.properties');
+    if (!gradleProperties.existsSync()) {
+      throwToolExit(
+        'Expected file ${gradleProperties.path}. '
+        'Please ensure that this file exists or that ${gradleProperties.dirname} can be read.'
+      );
+    }
+    final String propertiesContent = gradleProperties.readAsStringSync();
+    if (propertiesContent.contains('android.enableR8')) {
+      globals.printTrace('gradle.properties already sets `android.enableR8`');
+      return;
+    }
+    globals.printTrace('set `android.enableR8=true` in gradle.properties');
+    try {
+      if (propertiesContent.isNotEmpty && !propertiesContent.endsWith('\n')) {
+        // Add a new line if the file doesn't end with a new line.
+        gradleProperties.writeAsStringSync('\n', mode: FileMode.append);
+      }
+      gradleProperties.writeAsStringSync('android.enableR8=true\n', mode: FileMode.append);
+    } on FileSystemException {
+      throwToolExit(
+        'The tool failed to add `android.enableR8=true` to ${gradleProperties.path}. '
+        'Please update the file manually and try this command again.'
+      );
+    }
+  }
+
   /// Injects the Gradle wrapper files if any of these files don't exist in [directory].
   void injectGradleWrapperIfNeeded(Directory directory) {
     globals.fsUtils.copyDirectorySync(
@@ -92,7 +126,7 @@
     }
   }
 }
-const String _defaultGradleVersion = '6.7';
+const String _defaultGradleVersion = '5.6.2';
 
 final RegExp _androidPluginRegExp = RegExp(r'com\.android\.tools\.build:gradle:\(\d+\.\d+\.\d+\)');
 
@@ -191,9 +225,6 @@
   if (_isWithinVersionRange(androidPluginVersion, min: '3.4.0', max: '3.5.0')) {
     return '5.6.2';
   }
-  if (_isWithinVersionRange(androidPluginVersion, min: '4.0.0', max: '4.1.0')) {
-    return '6.7';
-  }
   throwToolExit('Unsupported Android Plugin version: $androidPluginVersion.');
   return '';
 }
diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart
index 87ab174..3100f2b 100644
--- a/packages/flutter_tools/lib/src/build_info.dart
+++ b/packages/flutter_tools/lib/src/build_info.dart
@@ -222,6 +222,7 @@
       AndroidArch.x86_64,
     ],
     this.splitPerAbi = false,
+    this.shrink = false,
     this.fastStart = false,
   });
 
@@ -235,6 +236,9 @@
   /// will be produced.
   final bool splitPerAbi;
 
+  /// Whether to enable code shrinking on release mode.
+  final bool shrink;
+
   /// The target platforms for the build.
   final Iterable<AndroidArch> targetArchs;
 
diff --git a/packages/flutter_tools/lib/src/commands/build_apk.dart b/packages/flutter_tools/lib/src/commands/build_apk.dart
index 85091a2..a3d1266 100644
--- a/packages/flutter_tools/lib/src/commands/build_apk.dart
+++ b/packages/flutter_tools/lib/src/commands/build_apk.dart
@@ -95,6 +95,7 @@
       buildInfo,
       splitPerAbi: boolArg('split-per-abi'),
       targetArchs: stringsArg('target-platform').map<AndroidArch>(getAndroidArchForName),
+      shrink: boolArg('shrink'),
     );
     validateBuild(androidBuildInfo);
 
diff --git a/packages/flutter_tools/lib/src/commands/build_appbundle.dart b/packages/flutter_tools/lib/src/commands/build_appbundle.dart
index 4e2d284..f4ed666 100644
--- a/packages/flutter_tools/lib/src/commands/build_appbundle.dart
+++ b/packages/flutter_tools/lib/src/commands/build_appbundle.dart
@@ -84,6 +84,7 @@
     }
     final AndroidBuildInfo androidBuildInfo = AndroidBuildInfo(await getBuildInfo(),
       targetArchs: stringsArg('target-platform').map<AndroidArch>(getAndroidArchForName),
+      shrink: boolArg('shrink'),
     );
     validateBuild(androidBuildInfo);
     await androidBuilder.buildAab(
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index e2d2e35..635b6f2 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -587,10 +587,14 @@
   void addShrinkingFlag() {
     argParser.addFlag('shrink',
       negatable: true,
-      hide: true,
-      help: 'This flag is deprecated. Code shrinking is always enabled in release builds. '
-            'To learn more, see: https://developer.android.com/studio/build/shrink-code'
-    );
+      defaultsTo: true,
+      help: 'Whether to enable code shrinking on release mode. '
+            'When enabling shrinking, you also benefit from obfuscation, '
+            'which shortens the names of your app’s classes and members, '
+            'and optimization, which applies more aggressive strategies to '
+            'further reduce the size of your app. '
+            'To learn more, see: https://developer.android.com/studio/build/shrink-code',
+      );
   }
 
   void addNullSafetyModeOptions({ @required bool hide }) {
diff --git a/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.tmpl
index feb41cd..7a7cea0 100644
--- a/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.tmpl
@@ -25,13 +25,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "{{androidIdentifier}}"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle b/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle
index c9e3db0..e0d7ae2 100644
--- a/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle
+++ b/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.tmpl
index 9879eb5..84fc9f1 100644
--- a/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.tmpl
@@ -26,17 +26,21 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "{{androidIdentifier}}"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle b/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle
index c505a86..3100ad2 100644
--- a/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle
+++ b/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
diff --git a/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties b/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..296b146 100644
--- a/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl b/packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl
index 2316d6f..9a17202 100644
--- a/packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl
+++ b/packages/flutter_tools/templates/module/android/gradle/build.gradle.copy.tmpl
@@ -7,7 +7,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
diff --git a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl
index 13f1f82..bcb525b 100644
--- a/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl
@@ -3,7 +3,7 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     compileOptions {
         sourceCompatibility 1.8
@@ -13,7 +13,7 @@
     defaultConfig {
         applicationId "{{androidIdentifier}}.host"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode 1
         versionName "1.0"
     }
diff --git a/packages/flutter_tools/templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl
index 7d3e6b3..7608518 100644
--- a/packages/flutter_tools/templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl
@@ -30,11 +30,11 @@
 version '1.0'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
diff --git a/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
index 14c45ed..415716b 100644
--- a/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
@@ -8,7 +8,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
     }
 }
 
@@ -22,9 +22,12 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     defaultConfig {
         minSdkVersion 16
     }
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 }
diff --git a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
index 5e5da7e..35b015d 100644
--- a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.5.0'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
     }
 }
@@ -25,7 +25,7 @@
 apply plugin: 'kotlin-android'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
@@ -33,6 +33,9 @@
     defaultConfig {
         minSdkVersion 16
     }
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 }
 
 dependencies {
diff --git a/packages/flutter_tools/templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties b/packages/flutter_tools/templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties
index 3c9d085..01a286e 100644
--- a/packages/flutter_tools/templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/flutter_tools/templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
index 2750d67..e449704 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_apk_test.dart
@@ -237,6 +237,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           '-Ptree-shake-icons=true',
           'assembleRelease',
         ],
@@ -265,6 +266,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           '-Psplit-debug-info=${tempDir.path}',
           '-Ptree-shake-icons=true',
           'assembleRelease',
@@ -298,6 +300,7 @@
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
           '-Pextra-front-end-options=foo,bar',
+          '-Pshrink=true',
           '-Ptree-shake-icons=true',
           'assembleRelease',
         ],
@@ -353,6 +356,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           '-Ptree-shake-icons=true',
           'assembleRelease',
         ],
@@ -420,6 +424,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           '-Ptree-shake-icons=true',
           'assembleRelease',
         ],
@@ -476,6 +481,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           '-Ptree-shake-icons=true',
           'assembleRelease',
         ],
diff --git a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
index e11dd8d..2376dfb 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/build_appbundle_test.dart
@@ -207,6 +207,131 @@
       });
     });
 
+    testUsingContext('shrinking is enabled by default on release mode', () async {
+      final String projectPath = await createProject(
+          tempDir,
+          arguments: <String>['--no-pub', '--template=app'],
+        );
+
+      await expectLater(() async {
+        await runBuildAppBundleCommand(projectPath);
+      }, throwsToolExit(message: 'Gradle task bundleRelease failed with exit code 1'));
+
+      verify(mockProcessManager.start(
+        <String>[
+          gradlew,
+          '-q',
+          '-Ptarget-platform=android-arm,android-arm64,android-x64',
+          '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
+          '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
+          '-Ptree-shake-icons=true',
+          'bundleRelease',
+        ],
+        workingDirectory: anyNamed('workingDirectory'),
+        environment: anyNamed('environment'),
+      )).called(1);
+    },
+    overrides: <Type, Generator>{
+      AndroidSdk: () => mockAndroidSdk,
+      FlutterProjectFactory: () => FakeFlutterProjectFactory(tempDir),
+      ProcessManager: () => mockProcessManager,
+    });
+
+    testUsingContext('shrinking is disabled when --no-shrink is passed', () async {
+      final String projectPath = await createProject(
+          tempDir,
+          arguments: <String>['--no-pub', '--template=app'],
+        );
+
+      await expectLater(() async {
+        await runBuildAppBundleCommand(
+          projectPath,
+          arguments: <String>['--no-shrink'],
+        );
+      }, throwsToolExit(message: 'Gradle task bundleRelease failed with exit code 1'));
+
+      verify(mockProcessManager.start(
+        <String>[
+          gradlew,
+          '-q',
+          '-Ptarget-platform=android-arm,android-arm64,android-x64',
+          '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
+          '-Ptrack-widget-creation=true',
+          '-Ptree-shake-icons=true',
+          'bundleRelease',
+        ],
+        workingDirectory: anyNamed('workingDirectory'),
+        environment: anyNamed('environment'),
+      )).called(1);
+    },
+    overrides: <Type, Generator>{
+      AndroidSdk: () => mockAndroidSdk,
+      FlutterProjectFactory: () => FakeFlutterProjectFactory(tempDir),
+      ProcessManager: () => mockProcessManager,
+    });
+
+    testUsingContext('guides the user when the shrinker fails', () async {
+      final String projectPath = await createProject(tempDir,
+          arguments: <String>['--no-pub', '--template=app']);
+      when(mockProcessManager.start(
+        <String>[
+          gradlew,
+          '-q',
+          '-Ptarget-platform=android-arm,android-arm64,android-x64',
+          '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
+          '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
+          '-Ptree-shake-icons=true',
+          'bundleRelease',
+        ],
+        workingDirectory: anyNamed('workingDirectory'),
+        environment: anyNamed('environment'),
+      )).thenAnswer((_) {
+        const String r8StdoutWarning =
+            "Execution failed for task ':app:transformClassesAndResourcesWithR8ForStageInternal'.\n"
+            '> com.android.tools.r8.CompilationFailedException: Compilation failed to complete';
+        return Future<Process>.value(
+          createMockProcess(
+            exitCode: 1,
+            stdout: r8StdoutWarning,
+          ),
+        );
+      });
+
+      await expectLater(() async {
+        await runBuildAppBundleCommand(
+          projectPath,
+        );
+      }, throwsToolExit(message: 'Gradle task bundleRelease failed with exit code 1'));
+
+      expect(
+        testLogger.statusText,
+        containsIgnoringWhitespace('The shrinker may have failed to optimize the Java bytecode.'),
+      );
+      expect(
+        testLogger.statusText,
+        containsIgnoringWhitespace('To disable the shrinker, pass the `--no-shrink` flag to this command.'),
+      );
+      expect(
+        testLogger.statusText,
+        containsIgnoringWhitespace('To learn more, see: https://developer.android.com/studio/build/shrink-code'),
+      );
+
+      verify(mockUsage.sendEvent(
+        'build',
+        'appbundle',
+        label: 'gradle-r8-failure',
+        parameters: anyNamed('parameters'),
+      )).called(1);
+    },
+    overrides: <Type, Generator>{
+      AndroidSdk: () => mockAndroidSdk,
+      FlutterProjectFactory: () => FakeFlutterProjectFactory(tempDir),
+      ProcessManager: () => mockProcessManager,
+      Usage: () => mockUsage,
+    });
+
     testUsingContext("reports when the app isn't using AndroidX", () async {
       final String projectPath = await createProject(tempDir,
           arguments: <String>['--no-pub', '--template=app']);
@@ -224,6 +349,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           'assembleRelease',
         ],
         workingDirectory: anyNamed('workingDirectory'),
@@ -279,6 +405,7 @@
           '-Ptarget-platform=android-arm,android-arm64,android-x64',
           '-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
           '-Ptrack-widget-creation=true',
+          '-Pshrink=true',
           'assembleRelease',
         ],
         workingDirectory: anyNamed('workingDirectory'),
diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
index d7bcda8..6dd75a0 100755
--- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
@@ -2115,7 +2115,7 @@
     expect(env['flutter'].allows(Version(1, 19, 0)), false);
   });
 
-  testUsingContext('default app uses Android SDK 30', () async {
+  testUsingContext('default app uses Android sdk 29', () async {
     Cache.flutterRoot = '../..';
     when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision);
     when(mockFlutterVersion.channel).thenReturn(frameworkChannel);
@@ -2129,8 +2129,8 @@
 
     final String buildContent = await globals.fs.file(projectDir.path + '/android/app/build.gradle').readAsString();
 
-    expect(buildContent.contains('compileSdkVersion 30'), true);
-    expect(buildContent.contains('targetSdkVersion 30'), true);
+    expect(buildContent.contains('compileSdkVersion 29'), true);
+    expect(buildContent.contains('targetSdkVersion 29'), true);
   });
 
   testUsingContext('Linux plugins handle partially camel-case project names correctly', () async {
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
index b7e4084..07e7a3d 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart
@@ -441,7 +441,7 @@
 
       expect(testLogger.statusText,
         contains(
-          'The build failed likely due to AndroidX incompatibilities in a plugin. '
+          'The built failed likely due to AndroidX incompatibilities in a plugin. '
           'The tool is about to try using Jetfier to solve the incompatibility.'
         )
       );
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
index 44b00de..19f38b1 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -316,7 +316,7 @@
           any,
           label: 'gradle-expected-file-not-found',
           parameters: const <String, String> {
-            'cd37': 'androidGradlePluginVersion: 6.7, fileExtension: .aab',
+            'cd37': 'androidGradlePluginVersion: 5.6.2, fileExtension: .aab',
           },
         ),
       ).called(1);
@@ -771,9 +771,6 @@
 
       expect(getGradleVersionFor('3.4.0'), '5.6.2');
       expect(getGradleVersionFor('3.5.0'), '5.6.2');
-
-      expect(getGradleVersionFor('4.0.0'), '6.7');
-      expect(getGradleVersionFor('4.1.0'), '6.7');
     });
 
     testWithoutContext('throws on unsupported versions', () {
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
index 54a47ec..cd850b1 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart
@@ -70,7 +70,7 @@
             'distributionPath=wrapper/dists\n'
             'zipStoreBase=GRADLE_USER_HOME\n'
             'zipStorePath=wrapper/dists\n'
-            'distributionUrl=https\\://services.gradle.org/distributions/gradle-6.7-all.zip\n');
+            'distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip\n');
     }, overrides: <Type, Generator>{
       Cache: () => Cache.test(rootOverride: tempDir, fileSystem: memoryFileSystem),
       FileSystem: () => memoryFileSystem,
@@ -111,7 +111,7 @@
           'distributionPath=wrapper/dists\n'
           'zipStoreBase=GRADLE_USER_HOME\n'
           'zipStorePath=wrapper/dists\n'
-          'distributionUrl=https\\://services.gradle.org/distributions/gradle-6.7-all.zip\n');
+          'distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip\n');
     }, overrides: <Type, Generator>{
       Cache: () => Cache.test(rootOverride: tempDir, fileSystem: memoryFileSystem),
       FileSystem: () => memoryFileSystem,
@@ -119,6 +119,108 @@
     });
   });
 
+
+  group('migrateToR8', () {
+    MemoryFileSystem memoryFileSystem;
+
+    setUp(() {
+      memoryFileSystem = MemoryFileSystem.test();
+    });
+
+    testUsingContext("throws ToolExit if gradle.properties doesn't exist", () {
+      final Directory sampleAppAndroid = globals.fs.directory('/sample-app/android');
+      sampleAppAndroid.createSync(recursive: true);
+
+      expect(() {
+        gradleUtils.migrateToR8(sampleAppAndroid);
+      }, throwsToolExit(message: 'Expected file ${sampleAppAndroid.path}'));
+
+    }, overrides: <Type, Generator>{
+      FileSystem: () => memoryFileSystem,
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('throws ToolExit if it cannot write gradle.properties', () {
+      final MockDirectory sampleAppAndroid = MockDirectory();
+      final MockFile gradleProperties = MockFile();
+
+      when(gradleProperties.path).thenReturn('foo/gradle.properties');
+      when(gradleProperties.existsSync()).thenReturn(true);
+      when(gradleProperties.readAsStringSync()).thenReturn('');
+      when(gradleProperties.writeAsStringSync('android.enableR8=true\n', mode: FileMode.append))
+        .thenThrow(const FileSystemException());
+
+      when(sampleAppAndroid.childFile('gradle.properties'))
+        .thenReturn(gradleProperties);
+
+      expect(() {
+        gradleUtils.migrateToR8(sampleAppAndroid);
+      },
+      throwsToolExit(message:
+        'The tool failed to add `android.enableR8=true` to foo/gradle.properties. '
+        'Please update the file manually and try this command again.'));
+    });
+
+    testUsingContext('does not update gradle.properties if it already uses R8', () {
+      final Directory sampleAppAndroid = globals.fs.directory('/sample-app/android');
+      sampleAppAndroid.createSync(recursive: true);
+      sampleAppAndroid.childFile('gradle.properties')
+        .writeAsStringSync('android.enableR8=true');
+
+      gradleUtils.migrateToR8(sampleAppAndroid);
+
+      expect(testLogger.traceText,
+        contains('gradle.properties already sets `android.enableR8`'));
+      expect(sampleAppAndroid.childFile('gradle.properties').readAsStringSync(),
+        equals('android.enableR8=true'));
+    }, overrides: <Type, Generator>{
+      FileSystem: () => memoryFileSystem,
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('sets android.enableR8=true', () {
+      final Directory sampleAppAndroid = globals.fs.directory('/sample-app/android');
+      sampleAppAndroid.createSync(recursive: true);
+      sampleAppAndroid.childFile('gradle.properties')
+        .writeAsStringSync('org.gradle.jvmargs=-Xmx1536M\n');
+
+      gradleUtils.migrateToR8(sampleAppAndroid);
+
+      expect(testLogger.traceText, contains('set `android.enableR8=true` in gradle.properties'));
+      expect(
+        sampleAppAndroid.childFile('gradle.properties').readAsStringSync(),
+        equals(
+          'org.gradle.jvmargs=-Xmx1536M\n'
+          'android.enableR8=true\n'
+        ),
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => memoryFileSystem,
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('appends android.enableR8=true to the new line', () {
+      final Directory sampleAppAndroid = globals.fs.directory('/sample-app/android');
+      sampleAppAndroid.createSync(recursive: true);
+      sampleAppAndroid.childFile('gradle.properties')
+        .writeAsStringSync('org.gradle.jvmargs=-Xmx1536M');
+
+      gradleUtils.migrateToR8(sampleAppAndroid);
+
+      expect(testLogger.traceText, contains('set `android.enableR8=true` in gradle.properties'));
+      expect(
+        sampleAppAndroid.childFile('gradle.properties').readAsStringSync(),
+        equals(
+          'org.gradle.jvmargs=-Xmx1536M\n'
+          'android.enableR8=true\n'
+        ),
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => memoryFileSystem,
+      ProcessManager: () => FakeProcessManager.any()
+    });
+  });
+
   group('GradleUtils.getExecutable', () {
     final String gradlewFilename = globals.platform.isWindows ? 'gradlew.bat' : 'gradlew';
 
@@ -139,6 +241,7 @@
       androidDirectory.childFile('gradle.properties').createSync();
 
       when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null);
+      when(gradleUtils.migrateToR8(any)).thenReturn(null);
 
       expect(
         GradleUtils().getExecutable(FlutterProject.current()),
@@ -170,6 +273,7 @@
       when(androidProject.hostAppGradleRoot).thenReturn(androidDirectory);
 
       when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null);
+      when(gradleUtils.migrateToR8(any)).thenReturn(null);
 
       GradleUtils().getExecutable(flutterProject);
 
@@ -200,6 +304,7 @@
       when(androidProject.hostAppGradleRoot).thenReturn(androidDirectory);
 
       when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null);
+      when(gradleUtils.migrateToR8(any)).thenReturn(null);
 
       GradleUtils().getExecutable(flutterProject);
 
@@ -230,6 +335,7 @@
       when(androidProject.hostAppGradleRoot).thenReturn(androidDirectory);
 
       when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null);
+      when(gradleUtils.migrateToR8(any)).thenReturn(null);
 
       GradleUtils().getExecutable(flutterProject);
 
diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart
index d8d83dc..ae223e1 100644
--- a/packages/flutter_tools/test/general.shard/project_test.dart
+++ b/packages/flutter_tools/test/general.shard/project_test.dart
@@ -919,7 +919,7 @@
   return '''
 apply plugin: 'com.android.application'
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     defaultConfig {
         applicationId '$id'
@@ -936,7 +936,7 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 }
 ''';
 }
diff --git a/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart b/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart
index 24ed02b..e5c3064 100644
--- a/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart
+++ b/packages/flutter_tools/test/integration.shard/deprecated_gradle_settings_test.dart
@@ -22,6 +22,7 @@
       'apk',
       '--debug',
       '--target-platform', 'android-arm',
+      '--no-shrink',
       '--verbose',
     ], workingDirectory: woringDirectory);
     print(result.stdout);
diff --git a/packages/integration_test/android/build.gradle b/packages/integration_test/android/build.gradle
index a0a6506..2318d33 100644
--- a/packages/integration_test/android/build.gradle
+++ b/packages/integration_test/android/build.gradle
@@ -12,7 +12,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.6.3'
     }
 }
 
@@ -26,13 +26,15 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
 
     defaultConfig {
         minSdkVersion 16
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
-
+    lintOptions {
+        disable 'InvalidPackage'
+    }
     dependencies {
         api 'junit:junit:4.12'
 
diff --git a/packages/integration_test/example/android/app/build.gradle b/packages/integration_test/example/android/app/build.gradle
index eadb1b5..bd9c7c4 100644
--- a/packages/integration_test/example/android/app/build.gradle
+++ b/packages/integration_test/example/android/app/build.gradle
@@ -29,13 +29,17 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 29
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.integration_test_example"
         minSdkVersion 16
-        targetSdkVersion 30
+        targetSdkVersion 28
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/packages/integration_test/example/android/build.gradle b/packages/integration_test/example/android/build.gradle
index c2c4160..3605b5c 100644
--- a/packages/integration_test/example/android/build.gradle
+++ b/packages/integration_test/example/android/build.gradle
@@ -9,7 +9,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
+        classpath 'com.android.tools.build:gradle:3.6.3'
     }
 }
 
diff --git a/packages/integration_test/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/integration_test/example/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..bc24dcf 100644
--- a/packages/integration_test/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/integration_test/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip