diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index 8e114a0055..74571fb904 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -62,7 +62,8 @@ jobs: # - .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 6cc73ab31d..fa461d5284 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 96bb197c73..af945d9d8b 100644 --- a/pkgs/cronet_http/android/build.gradle +++ b/pkgs/cronet_http/android/build.gradle @@ -50,7 +50,7 @@ android { // - .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 @@ android { } 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 1f7cd94749..dfd74270c3 100644 --- a/pkgs/cronet_http/example/android/app/build.gradle +++ b/pkgs/cronet_http/example/android/app/build.gradle @@ -44,13 +44,11 @@ android { 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 @@ flutter { } 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 aef0865ae8..16a2c0baef 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:http/http.dart' as http; 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 @@ final implementationRegExp = RegExp( ); void main(List 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 updateReadme() { 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',