From c8b5ed9f8e74dd38db1842b5119b3a035b06b12a Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 10:16:16 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20Use=20`dart-defin?= =?UTF-8?q?e`=20to=20determine=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/android/build.gradle | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pkgs/cronet_http/android/build.gradle b/pkgs/cronet_http/android/build.gradle index 96bb197c73..1da363b97a 100644 --- a/pkgs/cronet_http/android/build.gradle +++ b/pkgs/cronet_http/android/build.gradle @@ -21,6 +21,18 @@ rootProject.allprojects { } } +def dartDefines = [ + cronetHttpNoPlay: 'false' +] +if (project.hasProperty('dart-defines')) { + dartDefines = dartDefines + project.property('dart-defines') + .split(',') + .collectEntries { entry -> + def pair = new String(entry.decodeBase64(), 'UTF-8').split('=') + [(pair.first()): pair.last()] + } +} + apply plugin: 'com.android.library' apply plugin: 'kotlin-android' @@ -66,5 +78,9 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "com.google.android.gms:play-services-cronet:18.0.1" + if (dartDefines.cronetHttpNoPlay == 'true') { + implementation 'org.chromium.net:cronet-embedded:113.5672.61' + } else { + implementation "com.google.android.gms:play-services-cronet:18.0.1" + } } From 65b92c7cf610532468807350cd27cd44c031ad6b Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 10:27:47 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=F0=9F=92=9A=20Update=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cronet.yml | 12 +- pkgs/cronet_http/README_EMBEDDED.md | 12 -- .../tool/prepare_for_embedded.dart | 157 ------------------ 3 files changed, 3 insertions(+), 178 deletions(-) delete mode 100644 pkgs/cronet_http/README_EMBEDDED.md delete mode 100644 pkgs/cronet_http/tool/prepare_for_embedded.dart diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index 8e114a0055..991f143de5 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -26,7 +26,7 @@ jobs: runs-on: macos-latest strategy: matrix: - package: ['cronet_http', 'cronet_http_embedded'] + cronetHttpNoPlay: ['false', 'true'] steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 @@ -36,12 +36,6 @@ jobs: - uses: subosito/flutter-action@v2 with: channel: 'stable' - - name: Make cronet_http_embedded copy - if: ${{ matrix.package == 'cronet_http_embedded' }} - run: | - mv pkgs/cronet_http pkgs/cronet_http_embedded - cd pkgs/cronet_http_embedded - flutter pub get && dart tool/prepare_for_embedded.dart - id: install name: Install dependencies working-directory: 'pkgs/${{ matrix.package }}' @@ -63,6 +57,6 @@ jobs: # - 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' }} + target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel - script: cd 'pkgs/${{ matrix.package }}/example' && flutter test --timeout=1200s integration_test/ + script: cd 'pkgs/${{ matrix.package }}/example' && flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ diff --git a/pkgs/cronet_http/README_EMBEDDED.md b/pkgs/cronet_http/README_EMBEDDED.md deleted file mode 100644 index ebc84ded77..0000000000 --- a/pkgs/cronet_http/README_EMBEDDED.md +++ /dev/null @@ -1,12 +0,0 @@ -An Android Flutter plugin that provides access to the -[Cronet](https://developer.android.com/guide/topics/connectivity/cronet/reference/org/chromium/net/package-summary) -HTTP client. - -This package is identical to [`package:cronet_http`](https://pub.dev/packages/cronet_http) -except that it embeds -[Cronet](https://developer.android.com/guide/topics/connectivity/cronet/reference/org/chromium/net/package-summary) -rather than using the version included with -[Google Play Services](https://developers.google.com/android/guides/overview). -This increases the uncompressed size of the application by approximately 8MB. - -See more details about cronet_http at: https://pub.dev/packages/cronet_http. diff --git a/pkgs/cronet_http/tool/prepare_for_embedded.dart b/pkgs/cronet_http/tool/prepare_for_embedded.dart deleted file mode 100644 index aef0865ae8..0000000000 --- a/pkgs/cronet_http/tool/prepare_for_embedded.dart +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -/// The cronet_http directory is used to produce two packages: -/// - `cronet_http`, which uses the Google Play Services version of Cronet. -/// - `cronet_http_embedded`, which embeds Cronet. -/// -/// The default configuration of this code is to use the -/// Google Play Services version of Cronet. -/// -/// The script transforms the configuration into one that embeds Cronet by: -/// 1. Modifying the Gradle build file to reference the embedded Cronet. -/// 2. Modifying the *name* and *description* in `pubspec.yaml`. -/// 3. Replacing `README.md` with `README_EMBEDDED.md`. -/// 4. Change the name of `cronet_http.dart` to `cronet_http_embedded.dart`. -/// 5. Update all the imports from `package:cronet_http/cronet_http.dart` to -/// `package:cronet_http_embedded/cronet_http_embedded.dart` -/// -/// After running this script, `flutter pub publish` -/// can be run to update package:cronet_http_embedded. -/// -/// NOTE: This script modifies the above files in place. -library; - -import 'dart:io'; - -import 'package:http/http.dart' as http; -import 'package:xml/xml.dart'; -import 'package:yaml_edit/yaml_edit.dart'; - -late final Directory _packageDirectory; - -const _gmsDependencyName = 'com.google.android.gms:play-services-cronet'; -const _embeddedDependencyName = 'org.chromium.net:cronet-embedded'; -const _packageName = 'cronet_http_embedded'; -const _packageDescription = 'An Android Flutter plugin that ' - 'provides access to the Cronet HTTP client. ' - 'Identical to package:cronet_http except that it embeds Cronet ' - 'rather than relying on Google Play Services.'; -final _cronetVersionUri = Uri.https( - 'dl.google.com', - 'android/maven2/org/chromium/net/group-index.xml', -); -// Finds the Google Play Services Cronet dependency line. For example: -// ' implementation "com.google.android.gms:play-services-cronet:18.0.1"' -final implementationRegExp = RegExp( - '^\\s*implementation [\'"]' - '$_gmsDependencyName' - ':\\d+.\\d+.\\d+[\'"]', - multiLine: true, -); - -void main(List args) async { - if (Directory.current.path.endsWith('tool')) { - _packageDirectory = Directory.current.parent; - } else { - _packageDirectory = Directory.current; - } - - final latestVersion = await _getLatestCronetVersion(); - updateBuildGradle(latestVersion); - updateExampleBuildGradle(); - updatePubSpec(); - updateReadme(); - updateLibraryName(); - updateImports(); -} - -Future _getLatestCronetVersion() async { - final response = await http.get(_cronetVersionUri); - final parsedXml = XmlDocument.parse(response.body); - final embeddedNode = parsedXml.children - .singleWhere((e) => e is XmlElement) - .children - .singleWhere((e) => e is XmlElement && e.name.local == 'cronet-embedded'); - final stableVersionReg = RegExp(r'^\d+.\d+.\d+$'); - final versions = embeddedNode.attributes - .singleWhere((e) => e.name.local == 'versions') - .value - .split(',') - .where((e) => stableVersionReg.stringMatch(e) == e); - return versions.last; -} - -/// Update android/build.gradle. -void updateBuildGradle(String latestVersion) { - final buildGradle = File('${_packageDirectory.path}/android/build.gradle'); - final gradleContent = buildGradle.readAsStringSync(); - final newImplementation = '$_embeddedDependencyName:$latestVersion'; - print('Updating ${buildGradle.path}: adding $newImplementation'); - final newGradleContent = gradleContent.replaceAll( - implementationRegExp, - ' implementation "$newImplementation"', - ); - buildGradle.writeAsStringSync(newGradleContent); -} - -/// Remove the cronet reference from ./example/android/app/build.gradle. -void updateExampleBuildGradle() { - final buildGradle = - File('${_packageDirectory.path}/example/android/app/build.gradle'); - final gradleContent = buildGradle.readAsStringSync(); - - print('Updating ${buildGradle.path}: removing cronet reference'); - final newGradleContent = gradleContent.replaceAll( - implementationRegExp, - ' // NOTE: removed in package:cronet_http_embedded', - ); - buildGradle.writeAsStringSync(newGradleContent); -} - -/// Update pubspec.yaml and example/pubspec.yaml. -void updatePubSpec() { - print('Updating pubspec.yaml'); - final fPubspec = File('${_packageDirectory.path}/pubspec.yaml'); - final yamlEditor = YamlEditor(fPubspec.readAsStringSync()) - ..update(['name'], _packageName) - ..update(['description'], _packageDescription); - fPubspec.writeAsStringSync(yamlEditor.toString()); - print('Updating example/pubspec.yaml'); - final examplePubspec = File('${_packageDirectory.path}/example/pubspec.yaml'); - final replaced = examplePubspec - .readAsStringSync() - .replaceAll('cronet_http:', 'cronet_http_embedded:'); - examplePubspec.writeAsStringSync(replaced); -} - -/// Move README_EMBEDDED.md to replace README.md. -void updateReadme() { - print('Updating README.md from README_EMBEDDED.md'); - File('${_packageDirectory.path}/README.md').deleteSync(); - File('${_packageDirectory.path}/README_EMBEDDED.md') - .renameSync('${_packageDirectory.path}/README.md'); -} - -void updateImports() { - print('Updating imports in Dart files'); - for (final file in _packageDirectory.listSync(recursive: true)) { - if (file is File && file.path.endsWith('.dart')) { - final updatedSource = file.readAsStringSync().replaceAll( - 'package:cronet_http/cronet_http.dart', - 'package:cronet_http_embedded/cronet_http_embedded.dart', - ); - file.writeAsStringSync(updatedSource); - } - } -} - -void updateLibraryName() { - print('Renaming cronet_http.dart to cronet_http_embedded.dart'); - File( - '${_packageDirectory.path}/lib/cronet_http.dart', - ).renameSync( - '${_packageDirectory.path}/lib/cronet_http_embedded.dart', - ); -} From 43a59aedf93a1cee1a02f5a63b1da33828511365 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 10:28:43 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=F0=9F=92=9A=20--?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cronet.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index 991f143de5..c2833ef3cb 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -27,6 +27,9 @@ jobs: strategy: matrix: cronetHttpNoPlay: ['false', 'true'] + defaults: + run: + working-directory: pkgs/cronet_http steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 @@ -38,14 +41,11 @@ jobs: channel: 'stable' - id: install name: Install dependencies - working-directory: 'pkgs/${{ matrix.package }}' run: flutter pub get - name: Check formatting - working-directory: 'pkgs/${{ matrix.package }}' run: dart format --output=none --set-exit-if-changed . if: always() && steps.install.outcome == 'success' - name: Analyze code - working-directory: 'pkgs/${{ matrix.package }}' run: flutter analyze --fatal-infos if: always() && steps.install.outcome == 'success' - name: Run tests @@ -59,4 +59,4 @@ jobs: api-level: 28 target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel - script: cd 'pkgs/${{ matrix.package }}/example' && flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ + script: flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ From e524a7a8e118425ad14ec17f0525d081f380e2a4 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 10:43:21 +0800 Subject: [PATCH 04/13] Update cronet.yml --- .github/workflows/cronet.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index c2833ef3cb..62c266108e 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -59,4 +59,7 @@ jobs: api-level: 28 target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel - script: flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ + script: | + cd example + flutter pub get + flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ From 208a6475cd0d95a929607d8d5106d0c1a09231cd Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 10:58:24 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=F0=9F=94=8A=20++?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cronet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index 62c266108e..df6e6466fb 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -60,6 +60,7 @@ jobs: target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel script: | + pwd && ls -al cd example flutter pub get flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ From cabf835c3aab8017b196ae764521a181a8cecd20 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 11:11:58 +0800 Subject: [PATCH 06/13] Update cronet.yml --- .github/workflows/cronet.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index df6e6466fb..5104184e1c 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -60,7 +60,6 @@ jobs: target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel script: | - pwd && ls -al - cd example + cd pkgs/cronet_http/example flutter pub get flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ From 5d525f541ac4cae348c5a4d5dda7dc9e8cff5777 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 11:22:12 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=F0=9F=92=9A=20--?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cronet.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/cronet.yml b/.github/workflows/cronet.yml index 5104184e1c..dfce306c29 100644 --- a/.github/workflows/cronet.yml +++ b/.github/workflows/cronet.yml @@ -59,7 +59,4 @@ jobs: api-level: 28 target: ${{ matrix.cronetHttpNoPlay == 'true' && 'default' || 'google_apis' }} profile: pixel - script: | - cd pkgs/cronet_http/example - flutter pub get - flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ + script: cd pkgs/cronet_http/example && flutter test --dart-define=cronetHttpNoPlay=${{ matrix.cronetHttpNoPlay }} --timeout=1200s integration_test/ From df4033f1dac95882287055547c6bb73b12c91d41 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 11:44:42 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E2=9C=85=20--?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/android/build.gradle | 1 - pkgs/cronet_http/example/android/app/build.gradle | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/cronet_http/android/build.gradle b/pkgs/cronet_http/android/build.gradle index 1da363b97a..01bd0094fe 100644 --- a/pkgs/cronet_http/android/build.gradle +++ b/pkgs/cronet_http/android/build.gradle @@ -77,7 +77,6 @@ android { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" if (dartDefines.cronetHttpNoPlay == 'true') { implementation 'org.chromium.net:cronet-embedded:113.5672.61' } else { diff --git a/pkgs/cronet_http/example/android/app/build.gradle b/pkgs/cronet_http/example/android/app/build.gradle index 1f7cd94749..73a3b13891 100644 --- a/pkgs/cronet_http/example/android/app/build.gradle +++ b/pkgs/cronet_http/example/android/app/build.gradle @@ -70,7 +70,7 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + 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" From 32e2801de70c1071f04f474943cd774dbcbb4177 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 13:21:19 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=F0=9F=8E=A8=20Format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/android/build.gradle | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pkgs/cronet_http/android/build.gradle b/pkgs/cronet_http/android/build.gradle index 01bd0094fe..7c00f231eb 100644 --- a/pkgs/cronet_http/android/build.gradle +++ b/pkgs/cronet_http/android/build.gradle @@ -25,12 +25,11 @@ def dartDefines = [ cronetHttpNoPlay: 'false' ] if (project.hasProperty('dart-defines')) { - dartDefines = dartDefines + project.property('dart-defines') - .split(',') - .collectEntries { entry -> - def pair = new String(entry.decodeBase64(), 'UTF-8').split('=') - [(pair.first()): pair.last()] - } + def defines = project.property('dart-defines').split(',').collectEntries { entry -> + def pair = new String(entry.decodeBase64(), 'UTF-8').split('=') + [(pair.first()): pair.last()] + } + dartDefines = dartDefines + defines } apply plugin: 'com.android.library' From 1339348defd18349a0c3b9c0de36c2cfcab7c2c0 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 10 Jan 2024 13:39:11 +0800 Subject: [PATCH 10/13] Update README.md --- pkgs/cronet_http/README.md | 55 ++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/pkgs/cronet_http/README.md b/pkgs/cronet_http/README.md index 47ebd8bac1..210366aacf 100644 --- a/pkgs/cronet_http/README.md +++ b/pkgs/cronet_http/README.md @@ -2,22 +2,20 @@ [![package publisher](https://img.shields.io/pub/publisher/cronet_http.svg)](https://pub.dev/packages/cronet_http/publisher) An Android Flutter plugin that provides access to the -[Cronet][] -HTTP client. +[Cronet][] HTTP client. -Cronet is available as part of -[Google Play Services][]. +Cronet is available as part of [Google Play Services][] +and as [a standalone embedded library][]. -This package depends on [Google Play Services][] for its [Cronet][] -implementation. -[`package:cronet_http_embedded`](https://pub.dev/packages/cronet_http_embedded) -is functionally identical to this package but embeds [Cronet][] directly -instead of relying on [Google Play Services][]. +This package depends on [Google Play Services][] +for its [Cronet][] implementation. +To use the embedded version of [Cronet][] without [Google Play Services][], +see [Use embedded Cronet](#use-embedded-cronet). ## Motivation -Using [Cronet][], rather than the socket-based [dart:io HttpClient][] -implemententation, has several advantages: +Using [Cronet][], rather than the socket-based +[dart:io HttpClient][] implementation, has several advantages: 1. It automatically supports Android platform features such as HTTP proxies. 2. It supports configurable caching. @@ -40,22 +38,45 @@ void main() async { final Client httpClient; if (Platform.isAndroid) { final engine = CronetEngine.build( - cacheMode: CacheMode.memory, - cacheMaxSize: 2 * 1024 * 1024, - userAgent: 'Book Agent'); + cacheMode: CacheMode.memory, + cacheMaxSize: 2 * 1024 * 1024, + userAgent: 'Book Agent', + ); httpClient = CronetClient.fromCronetEngine(engine); } else { httpClient = IOClient(HttpClient()..userAgent = 'Book Agent'); } - final response = await client.get(Uri.https( + final response = await client.get( + Uri.https( 'www.googleapis.com', '/books/v1/volumes', - {'q': 'HTTP', 'maxResults': '40', 'printType': 'books'})); + {'q': 'HTTP', 'maxResults': '40', 'printType': 'books'}, + ), + ); } ``` +### Use embedded Cronet + +The embedded [Cronet][] is provided as `org.chromium.net:cronet-embedded` +which does not require to use the [Google Play Services][]. +The library uses `dart-define` to switch to the embedded implementation +when `cronetHttpNoPlay` is set to `true`. +For example: + +``` +flutter run --dart-define=cronetHttpNoPlay=true +``` + +To use the embedded version in `flutter test`: + +``` +flutter test --dart-define=cronetHttpNoPlay=true +``` + [Cronet]: https://developer.android.com/guide/topics/connectivity/cronet/reference/org/chromium/net/package-summary -[dart:io HttpClient]: https://api.dart.dev/stable/dart-io/HttpClient-class.html [Google Play Services]: https://developers.google.com/android/guides/overview +[a standalone embedded library]: https://mvnrepository.com/artifact/org.chromium.net/cronet-embedded +[dart:io HttpClient]: https://api.dart.dev/stable/dart-io/HttpClient-class.html [package:http Client]: https://pub.dev/documentation/http/latest/http/Client-class.html From 4c000c3d4ed7f675afba0fe0e9d5aeca77e84817 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Fri, 23 Feb 2024 09:49:31 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=F0=9F=93=9D=20Update=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/cronet_http/README.md b/pkgs/cronet_http/README.md index 2a1e1fb369..ed9271f3f4 100644 --- a/pkgs/cronet_http/README.md +++ b/pkgs/cronet_http/README.md @@ -60,10 +60,10 @@ void main() async { ### Use embedded Cronet -The embedded [Cronet][] is provided as `org.chromium.net:cronet-embedded` -which does not require to use the [Google Play Services][]. -The library uses `dart-define` to switch to the embedded implementation -when `cronetHttpNoPlay` is set to `true`. +If you want your application to work without [Google Play Services][], +you can instead depend on the `org.chromium.net:cronet-embedded` package +by using `dart-define` to set `cronetHttpNoPlay` is set to `true`. + For example: ``` From e1df37cca77c02ca08caf0dce2c76cbca81fd046 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Fri, 23 Feb 2024 09:54:21 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=F0=9F=94=96=201.2.0-wip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/CHANGELOG.md | 4 ++++ pkgs/cronet_http/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/cronet_http/CHANGELOG.md b/pkgs/cronet_http/CHANGELOG.md index f8b134047d..30979ca249 100644 --- a/pkgs/cronet_http/CHANGELOG.md +++ b/pkgs/cronet_http/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.0-wip + +* Support the Cronet embedding dependency with `--dart-define=cronetHttpNoPlay=true`. + ## 1.1.1 * Make it possible to construct `CronetClient` with custom a `CronetEngine` diff --git a/pkgs/cronet_http/pubspec.yaml b/pkgs/cronet_http/pubspec.yaml index f3cb350ebe..d398f32560 100644 --- a/pkgs/cronet_http/pubspec.yaml +++ b/pkgs/cronet_http/pubspec.yaml @@ -1,5 +1,5 @@ name: cronet_http -version: 1.1.1 +version: 1.2.0-wip description: >- An Android Flutter plugin that provides access to the Cronet HTTP client. repository: https://github.com/dart-lang/http/tree/master/pkgs/cronet_http From d623b3da6339703928084ded78bf046c44659727 Mon Sep 17 00:00:00 2001 From: Alex Li Date: Sat, 24 Feb 2024 01:37:41 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=F0=9F=8E=A8=20--?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/cronet_http/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/cronet_http/README.md b/pkgs/cronet_http/README.md index ed9271f3f4..e1ff6d2f15 100644 --- a/pkgs/cronet_http/README.md +++ b/pkgs/cronet_http/README.md @@ -40,7 +40,7 @@ void main() async { final engine = CronetEngine.build( cacheMode: CacheMode.memory, cacheMaxSize: 2 * 1024 * 1024, - userAgent: 'Book Agent', + userAgent: 'Book Agent', ); httpClient = CronetClient.fromCronetEngine(engine, isOwned: true); } else {