diff --git a/dev/benchmarks/complex_layout/android/app/build.gradle b/dev/benchmarks/complex_layout/android/app/build.gradle index fd4944e650..3ee631d552 100644 --- a/dev/benchmarks/complex_layout/android/app/build.gradle +++ b/dev/benchmarks/complex_layout/android/app/build.gradle @@ -19,11 +19,15 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/benchmarks/complex_layout/android/build.gradle +++ b/dev/benchmarks/complex_layout/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 057fe581de..1080f42bd2 100644 --- a/dev/benchmarks/macrobenchmarks/android/app/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/benchmarks/macrobenchmarks/android/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 fd4944e650..3ee631d552 100644 --- a/dev/benchmarks/microbenchmarks/android/app/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/app/build.gradle @@ -19,11 +19,15 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/benchmarks/microbenchmarks/android/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 fd4944e650..3ee631d552 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/benchmarks/platform_views_layout/android/build.gradle +++ b/dev/benchmarks/platform_views_layout/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 fd4944e650..3ee631d552 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 162e0ed2f1..7717a4047b 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/benchmarks/test_apps/stocks/android/build.gradle +++ b/dev/benchmarks/test_apps/stocks/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 20b2b4157d..f33e133e19 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 @@ Future main() async { 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 @@ Future main() async { 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 63b11d05c4..d0f73f3b63 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 plugin: 'kotlin-android' 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 @@ android { // 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 4b2ffebed5..1c2d2db3e0 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 @@ buildscript { } 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 08f2b5f91b..d2032bce8b 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 bc6a58afdd..9ec7236c63 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 @@ distributionBase=GRADLE_USER_HOME 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 c408582468..a320b982e0 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 @@ android { 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 40d23f362c..fdd798e8aa 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 @@ buildscript { 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 74b453cbe7..f6c8f50ffd 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 @@ distributionBase=GRADLE_USER_HOME 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 65d0f8f0a6..8579aa839a 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 plugin: 'kotlin-android' 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 4b2ffebed5..1c2d2db3e0 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 @@ buildscript { } 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 94adc3a3f9..38c8d4544f 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 d3d66909ff..1a102db3ed 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 @@ android { 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 40d23f362c..fdd798e8aa 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 @@ buildscript { 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 74b453cbe7..f6c8f50ffd 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 @@ distributionBase=GRADLE_USER_HOME 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 a2f4fa827e..682e7ffa5e 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 5bbbdf1790..0f0ba57265 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 plugin: 'com.android.application' 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 c2c4160adf..7e89070e49 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 1b21eb358c..6556ef5f4d 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 plugin: 'com.android.application' 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 c2c4160adf..7e89070e49 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 03dcb8ec55..f8c1c69d3a 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 plugin: 'com.android.application' 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 c2c4160adf..7e89070e49 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 d85ff893eb..eed0bcb9b7 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/android_views/android/build.gradle +++ b/dev/integration_tests/android_views/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 a2f4fa827e..682e7ffa5e 100644 --- a/dev/integration_tests/channels/android/app/build.gradle +++ b/dev/integration_tests/channels/android/app/build.gradle @@ -19,11 +19,15 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/channels/android/build.gradle +++ b/dev/integration_tests/channels/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 9880899d50..7171f2b866 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/external_ui/android/build.gradle +++ b/dev/integration_tests/external_ui/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 d54de5f780..9a04242f94 100644 --- a/dev/integration_tests/flavors/android/app/build.gradle +++ b/dev/integration_tests/flavors/android/app/build.gradle @@ -19,12 +19,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/flavors/android/build.gradle +++ b/dev/integration_tests/flavors/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 08378dcdf9..8c12664b58 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 plugin: 'kotlin-android' 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 4b2ffebed5..1c2d2db3e0 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 @@ buildscript { } 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 94adc3a3f9..38c8d4544f 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 68ea4afd9f..6476fe6bae 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 plugin: 'com.android.application' 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 ae150cd300..7adce49861 100644 --- a/dev/integration_tests/flutter_gallery/android/build.gradle +++ b/dev/integration_tests/flutter_gallery/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 13f7a3f8c1..a66c2b2d39 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 plugin: 'com.android.application' 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 24f93ca13d..7e6d4fe711 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 @@ package com.yourcompany.flavors; 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 @@ public class MainActivity extends FlutterActivity { 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 c2c4160adf..5df71fcf8b 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 @@ buildscript { } 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 4d3226abc2..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 d85ff893eb..eed0bcb9b7 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 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 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 a2f4fa827e..682e7ffa5e 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 plugin: 'com.android.application' 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 a2f4fa827e..682e7ffa5e 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/image_loading/android/build.gradle +++ b/dev/integration_tests/image_loading/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 4b21d20dae..52826054cc 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 @@ android { 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 40d23f362c..afef97c049 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 @@ buildscript { 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 74b453cbe7..f6c8f50ffd 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 @@ distributionBase=GRADLE_USER_HOME 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 88705de03b..c6d21501a3 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 plugin: 'kotlin-android' 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 4b2ffebed5..1c2d2db3e0 100644 --- a/dev/integration_tests/non_nullable/android/build.gradle +++ b/dev/integration_tests/non_nullable/android/build.gradle @@ -10,7 +10,7 @@ buildscript { } 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 94adc3a3f9..38c8d4544f 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 a2f4fa827e..682e7ffa5e 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/platform_interaction/android/build.gradle +++ b/dev/integration_tests/platform_interaction/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 ed4df287a1..03b459e452 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 plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 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 @@ buildscript { } 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 d1ab454e54..b1e161accd 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 bc6a58afdd..9ec7236c63 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 @@ distributionBase=GRADLE_USER_HOME 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 a1849afc0a..77ae3e7814 100644 --- a/dev/integration_tests/ui/android/app/build.gradle +++ b/dev/integration_tests/ui/android/app/build.gradle @@ -19,11 +19,15 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/dev/integration_tests/ui/android/build.gradle +++ b/dev/integration_tests/ui/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 6b4f3fd225..ec0821345e 100644 --- a/dev/manual_tests/android/app/build.gradle +++ b/dev/manual_tests/android/app/build.gradle @@ -30,7 +30,7 @@ apply plugin: 'kotlin-android' 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 @@ android { // 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 4b2ffebed5..1c2d2db3e0 100644 --- a/dev/manual_tests/android/build.gradle +++ b/dev/manual_tests/android/build.gradle @@ -10,7 +10,7 @@ buildscript { } 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 94adc3a3f9..38c8d4544f 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 364d054fea..98ae98adf5 100644 --- a/examples/flutter_view/android/app/build.gradle +++ b/examples/flutter_view/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/examples/flutter_view/android/build.gradle +++ b/examples/flutter_view/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 9741e1cbc7..45d8d41415 100644 --- a/examples/hello_world/android/app/build.gradle +++ b/examples/hello_world/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/examples/hello_world/android/build.gradle +++ b/examples/hello_world/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 df205c3821..447218a3ef 100644 --- a/examples/image_list/android/app/build.gradle +++ b/examples/image_list/android/app/build.gradle @@ -29,13 +29,17 @@ apply plugin: 'com.android.application' 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 c2c4160adf..7e89070e49 100644 --- a/examples/image_list/android/build.gradle +++ b/examples/image_list/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 597bf40fad..44f6f29e4b 100644 --- a/examples/layers/android/app/build.gradle +++ b/examples/layers/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/examples/layers/android/build.gradle +++ b/examples/layers/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 100644 --- a/examples/layers/android/gradle/wrapper/gradle-wrapper.properties +++ b/examples/layers/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME 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 b46a1e0979..91fa03af6d 100644 --- a/examples/platform_channel/android/app/build.gradle +++ b/examples/platform_channel/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/examples/platform_channel/android/build.gradle +++ b/examples/platform_channel/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 fb88ce858e..9b501f3d6d 100644 --- a/examples/platform_view/android/app/build.gradle +++ b/examples/platform_view/android/app/build.gradle @@ -29,12 +29,16 @@ apply plugin: 'com.android.application' 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 c2c4160adf..5df71fcf8b 100644 --- a/examples/platform_view/android/build.gradle +++ b/examples/platform_view/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 94adc3a3f9..a6738207fd 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 3b71065f62..1ca71d7fc9 100644 --- a/packages/flutter_tools/gradle/flutter.gradle +++ b/packages/flutter_tools/gradle/flutter.gradle @@ -27,7 +27,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:3.5.0' } } @@ -101,8 +101,7 @@ class FlutterPlugin implements Plugin { 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 @@ class FlutterPlugin implements Plugin { } } - 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 @@ class FlutterPlugin implements Plugin { ) } 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 @@ class FlutterPlugin implements Plugin { 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 @@ class FlutterPlugin implements Plugin { 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 @@ class FlutterPlugin implements Plugin { 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 @@ class FlutterPlugin implements Plugin { 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 @@ class FlutterPlugin implements Plugin { 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=` 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 `/build/app/outputs/flutter-apk/.apk`. // @@ -819,6 +785,10 @@ class FlutterPlugin implements Plugin { // * `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 @@ class FlutterPlugin implements Plugin { } } } - 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=` 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 17584a8bd8..b1846b61f7 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -324,6 +324,9 @@ Future buildGradleApp({ 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 82acc21580..5b7010dcb2 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 @@ final GradleHandledError androidXFailureHandler = GradleHandledError( } 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 84cd3fa565..ab493f9bc3 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 @@ class GradleUtils { /// 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 @@ class GradleUtils { 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 @@ distributionUrl=https\\://services.gradle.org/distributions/gradle-$gradleVersio } } } -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 @@ String getGradleVersionFor(String androidPluginVersion) { 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 87ab174031..3100f2bb33 100644 --- a/packages/flutter_tools/lib/src/build_info.dart +++ b/packages/flutter_tools/lib/src/build_info.dart @@ -222,6 +222,7 @@ class AndroidBuildInfo { AndroidArch.x86_64, ], this.splitPerAbi = false, + this.shrink = false, this.fastStart = false, }); @@ -235,6 +236,9 @@ class AndroidBuildInfo { /// 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 targetArchs; diff --git a/packages/flutter_tools/lib/src/commands/build_apk.dart b/packages/flutter_tools/lib/src/commands/build_apk.dart index 85091a247c..a3d1266d94 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 @@ class BuildApkCommand extends BuildSubCommand { buildInfo, splitPerAbi: boolArg('split-per-abi'), targetArchs: stringsArg('target-platform').map(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 4e2d2843eb..f4ed666135 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 @@ class BuildAppBundleCommand extends BuildSubCommand { } final AndroidBuildInfo androidBuildInfo = AndroidBuildInfo(await getBuildInfo(), targetArchs: stringsArg('target-platform').map(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 e2d2e35e0d..635b6f2f7f 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 @@ abstract class FlutterCommand extends Command { 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 feb41cdba2..7a7cea0172 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 plugin: 'com.android.application' 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 c9e3db0a0f..e0d7ae2c11 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 @@ buildscript { } 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 9879eb5f60..84fc9f153c 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 plugin: 'kotlin-android' 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 c505a86352..3100ad2d55 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 @@ buildscript { } 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 bc6a58afdd..296b146b73 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 @@ distributionBase=GRADLE_USER_HOME 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 2316d6f033..9a17202836 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 @@ buildscript { } 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 13f1f8200b..bcb525b203 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 @@ def flutterPluginVersion = 'managed' apply plugin: 'com.android.application' android { - compileSdkVersion 30 + compileSdkVersion 29 compileOptions { sourceCompatibility 1.8 @@ -13,7 +13,7 @@ android { 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 7d3e6b30ca..7608518c86 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 @@ group '{{androidIdentifier}}' 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 14c45ede2a..415716bdf3 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 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:3.5.0' } } @@ -22,9 +22,12 @@ rootProject.allprojects { 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 5e5da7ecd0..35b015d876 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 @@ buildscript { } 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: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 30 + compileSdkVersion 29 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -33,6 +33,9 @@ android { 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 3c9d0852bf..01a286e96a 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 @@ distributionBase=GRADLE_USER_HOME 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 2750d67d39..e449704e89 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 @@ void main() { '-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 @@ void main() { '-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 @@ void main() { '-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 @@ void main() { '-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 @@ void main() { '-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 @@ void main() { '-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 e11dd8df7c..2376dfbff8 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 @@ void main() { }); }); + testUsingContext('shrinking is enabled by default on release mode', () async { + final String projectPath = await createProject( + tempDir, + arguments: ['--no-pub', '--template=app'], + ); + + await expectLater(() async { + await runBuildAppBundleCommand(projectPath); + }, throwsToolExit(message: 'Gradle task bundleRelease failed with exit code 1')); + + verify(mockProcessManager.start( + [ + 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: { + AndroidSdk: () => mockAndroidSdk, + FlutterProjectFactory: () => FakeFlutterProjectFactory(tempDir), + ProcessManager: () => mockProcessManager, + }); + + testUsingContext('shrinking is disabled when --no-shrink is passed', () async { + final String projectPath = await createProject( + tempDir, + arguments: ['--no-pub', '--template=app'], + ); + + await expectLater(() async { + await runBuildAppBundleCommand( + projectPath, + arguments: ['--no-shrink'], + ); + }, throwsToolExit(message: 'Gradle task bundleRelease failed with exit code 1')); + + verify(mockProcessManager.start( + [ + 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: { + AndroidSdk: () => mockAndroidSdk, + FlutterProjectFactory: () => FakeFlutterProjectFactory(tempDir), + ProcessManager: () => mockProcessManager, + }); + + testUsingContext('guides the user when the shrinker fails', () async { + final String projectPath = await createProject(tempDir, + arguments: ['--no-pub', '--template=app']); + when(mockProcessManager.start( + [ + 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.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: { + 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: ['--no-pub', '--template=app']); @@ -224,6 +349,7 @@ void main() { '-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 @@ void main() { '-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 d7bcda8b86..6dd75a07fe 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 @@ void main() { 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 @@ void main() { 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 b7e4084b42..07e7a3d67d 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 @@ Command: /home/android/gradlew assembleRelease 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 44b00de343..19f38b1a21 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 @@ void main() { any, label: 'gradle-expected-file-not-found', parameters: const { - 'cd37': 'androidGradlePluginVersion: 6.7, fileExtension: .aab', + 'cd37': 'androidGradlePluginVersion: 5.6.2, fileExtension: .aab', }, ), ).called(1); @@ -771,9 +771,6 @@ flutter: 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 54a47ec671..cd850b1078 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 @@ void main() { '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: { Cache: () => Cache.test(rootOverride: tempDir, fileSystem: memoryFileSystem), FileSystem: () => memoryFileSystem, @@ -111,7 +111,7 @@ void main() { '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: { Cache: () => Cache.test(rootOverride: tempDir, fileSystem: memoryFileSystem), FileSystem: () => memoryFileSystem, @@ -119,6 +119,108 @@ void main() { }); }); + + 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: { + 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: { + 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: { + 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: { + FileSystem: () => memoryFileSystem, + ProcessManager: () => FakeProcessManager.any() + }); + }); + group('GradleUtils.getExecutable', () { final String gradlewFilename = globals.platform.isWindows ? 'gradlew.bat' : 'gradlew'; @@ -139,6 +241,7 @@ void main() { 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 @@ void main() { when(androidProject.hostAppGradleRoot).thenReturn(androidDirectory); when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null); + when(gradleUtils.migrateToR8(any)).thenReturn(null); GradleUtils().getExecutable(flutterProject); @@ -200,6 +304,7 @@ void main() { when(androidProject.hostAppGradleRoot).thenReturn(androidDirectory); when(gradleUtils.injectGradleWrapperIfNeeded(any)).thenReturn(null); + when(gradleUtils.migrateToR8(any)).thenReturn(null); GradleUtils().getExecutable(flutterProject); @@ -230,6 +335,7 @@ void main() { 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 d8d83dc95a..ae223e152f 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 @@ String gradleFileWithApplicationId(String id) { return ''' apply plugin: 'com.android.application' android { - compileSdkVersion 30 + compileSdkVersion 29 defaultConfig { applicationId '$id' @@ -936,7 +936,7 @@ version '1.0-SNAPSHOT' 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 24ed02bebc..e5c30641a6 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 @@ void main() { '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 a0a6506215..2318d33b15 100644 --- a/packages/integration_test/android/build.gradle +++ b/packages/integration_test/android/build.gradle @@ -12,7 +12,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:3.6.3' } } @@ -26,13 +26,15 @@ rootProject.allprojects { 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 eadb1b5718..bd9c7c4e90 100644 --- a/packages/integration_test/example/android/app/build.gradle +++ b/packages/integration_test/example/android/app/build.gradle @@ -29,13 +29,17 @@ apply plugin: 'com.android.application' 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 c2c4160adf..3605b5c5f3 100644 --- a/packages/integration_test/example/android/build.gradle +++ b/packages/integration_test/example/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } 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 bc6a58afdd..bc24dcf039 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 @@ distributionBase=GRADLE_USER_HOME 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