From 473a89283f986845fd7bf0aa70e557724c665c98 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Thu, 4 Jan 2024 10:24:33 -0800 Subject: [PATCH] Remove the "play-services-cronet" dependency in the example app when building `package:cronet_http_embedded` (#1103) --- .../tool/prepare_for_embedded.dart | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/pkgs/cronet_http/tool/prepare_for_embedded.dart b/pkgs/cronet_http/tool/prepare_for_embedded.dart index 3442bc6843..aef0865ae8 100644 --- a/pkgs/cronet_http/tool/prepare_for_embedded.dart +++ b/pkgs/cronet_http/tool/prepare_for_embedded.dart @@ -42,6 +42,14 @@ 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')) { @@ -51,7 +59,8 @@ void main(List args) async { } final latestVersion = await _getLatestCronetVersion(); - updateCronetDependency(latestVersion); + updateBuildGradle(latestVersion); + updateExampleBuildGradle(); updatePubSpec(); updateReadme(); updateLibraryName(); @@ -75,22 +84,30 @@ Future _getLatestCronetVersion() async { } /// Update android/build.gradle. -void updateCronetDependency(String latestVersion) { - final fBuildGradle = File('${_packageDirectory.path}/android/build.gradle'); - final gradleContent = fBuildGradle.readAsStringSync(); - final implementationRegExp = RegExp( - '^\\s*implementation [\'"]' - '$_gmsDependencyName' - ':\\d+.\\d+.\\d+[\'"]', - multiLine: true, - ); +void updateBuildGradle(String latestVersion) { + final buildGradle = File('${_packageDirectory.path}/android/build.gradle'); + final gradleContent = buildGradle.readAsStringSync(); final newImplementation = '$_embeddedDependencyName:$latestVersion'; - print('Patching $newImplementation'); + print('Updating ${buildGradle.path}: adding $newImplementation'); final newGradleContent = gradleContent.replaceAll( implementationRegExp, ' implementation "$newImplementation"', ); - fBuildGradle.writeAsStringSync(newGradleContent); + 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.