[cronet_http] ⬇️ Downgrade `minSdkVersion` to 21 (#1104)

diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml
index 8e114a0..74571fb 100644
--- a/.github/workflows/cronet.yml
+++ b/.github/workflows/cronet.yml
@@ -62,7 +62,8 @@
           # - .github/workflows/cronet.yml
           # - pkgs/cronet_http/android/build.gradle
           # - pkgs/cronet_http/example/android/app/build.gradle
-          api-level: 28
-          target: ${{ matrix.package == 'cronet_http_embedded' && 'google_apis' || 'playstore' }}
+          api-level: 21
+          arch: x86_64
+          target: ${{ matrix.package == 'cronet_http_embedded' && 'default' || 'google_apis' }}
           profile: pixel
           script: cd 'pkgs/${{ matrix.package }}/example' && flutter test --timeout=1200s integration_test/
diff --git a/pkgs/cronet_http/CHANGELOG.md b/pkgs/cronet_http/CHANGELOG.md
index 6cc73ab..fa461d5 100644
--- a/pkgs/cronet_http/CHANGELOG.md
+++ b/pkgs/cronet_http/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 1.0.1-wip
 
 * Use `package:http_image_provider` in the example application.
+* Support Android API 21+.
 
 ## 1.0.0
 
diff --git a/pkgs/cronet_http/android/build.gradle b/pkgs/cronet_http/android/build.gradle
index 96bb197..af945d9 100644
--- a/pkgs/cronet_http/android/build.gradle
+++ b/pkgs/cronet_http/android/build.gradle
@@ -50,7 +50,7 @@
         // - .github/workflows/cronet.yml
         // - pkgs/cronet_http/android/build.gradle
         // - pkgs/cronet_http/example/android/app/build.gradle
-        minSdkVersion 28
+        minSdkVersion 21
     }
 
     defaultConfig {
@@ -65,6 +65,5 @@
 }
 
 dependencies {
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation "com.google.android.gms:play-services-cronet:18.0.1"
 }
diff --git a/pkgs/cronet_http/example/android/app/build.gradle b/pkgs/cronet_http/example/android/app/build.gradle
index 1f7cd94..dfd7427 100644
--- a/pkgs/cronet_http/example/android/app/build.gradle
+++ b/pkgs/cronet_http/example/android/app/build.gradle
@@ -44,13 +44,11 @@
 
     defaultConfig {
         applicationId "io.flutter.cronet_http_example"
-        // You can update the following values to match your application needs.
-        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
         // api-level/minSdkVersion should be help in sync in:
         // - .github/workflows/cronet.yml
         // - pkgs/cronet_http/android/build.gradle
         // - pkgs/cronet_http/example/android/app/build.gradle
-        minSdkVersion 28
+        minSdkVersion 21
         targetSdkVersion flutter.targetSdkVersion
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
@@ -70,7 +68,9 @@
 }
 
 dependencies {
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+    // TODO(#1112): org.jetbrains.kotlin:kotlin-bom artifact purpose is to align kotlin stdlib and related code versions.
+    // This should be removed when https://github.com/flutter/flutter/issues/125062 is fixed.
+    implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
     // ""com.google.android.gms:play-services-cronet" is only present so that
     // `jnigen` will work. Applications should not include this line.
     implementation "com.google.android.gms:play-services-cronet:18.0.1"
diff --git a/pkgs/cronet_http/tool/prepare_for_embedded.dart b/pkgs/cronet_http/tool/prepare_for_embedded.dart
index aef0865..16a2c0b 100644
--- a/pkgs/cronet_http/tool/prepare_for_embedded.dart
+++ b/pkgs/cronet_http/tool/prepare_for_embedded.dart
@@ -29,6 +29,7 @@
 import 'package:xml/xml.dart';
 import 'package:yaml_edit/yaml_edit.dart';
 
+late final String _scriptName;
 late final Directory _packageDirectory;
 
 const _gmsDependencyName = 'com.google.android.gms:play-services-cronet';
@@ -52,12 +53,14 @@
 );
 
 void main(List<String> args) async {
-  if (Directory.current.path.endsWith('tool')) {
-    _packageDirectory = Directory.current.parent;
-  } else {
-    _packageDirectory = Directory.current;
-  }
-
+  final script = Platform.script.toFilePath();
+  _scriptName = script.split(Platform.pathSeparator).last;
+  _packageDirectory = Directory(
+    Uri.directory(
+      '${script.replaceAll(_scriptName, '')}'
+      '..${Platform.pathSeparator}',
+    ).toFilePath(),
+  );
   final latestVersion = await _getLatestCronetVersion();
   updateBuildGradle(latestVersion);
   updateExampleBuildGradle();
@@ -137,7 +140,9 @@
 void updateImports() {
   print('Updating imports in Dart files');
   for (final file in _packageDirectory.listSync(recursive: true)) {
-    if (file is File && file.path.endsWith('.dart')) {
+    if (file is File &&
+        file.path.endsWith('.dart') &&
+        !file.path.contains(_scriptName)) {
       final updatedSource = file.readAsStringSync().replaceAll(
             'package:cronet_http/cronet_http.dart',
             'package:cronet_http_embedded/cronet_http_embedded.dart',