From 3af92299097d7eab47d51c0e73285c30872c4af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 1 Sep 2026 12:12:29 +0800 Subject: [PATCH 1/7] feat: upgrade android SDK to 7.1.0 and iOS sdk to 10.10.1 --- android/build.gradle.kts | 2 +- example/android/gradle.properties | 4 ++++ ios/google_driver_flutter/Package.swift | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 06a4c28..7467dfe 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -115,7 +115,7 @@ project.extensions.configure(org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjec } dependencies { - implementation("com.google.android.libraries.mapsplatform.transportation:transportation-driver:7.0.0") + implementation("com.google.android.libraries.mapsplatform.transportation:transportation-driver:7.1.0") implementation("androidx.startup:startup-runtime:1.2.0") testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("io.mockk:mockk:1.13.9") diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 0e4b7e6..ef42b25 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -3,3 +3,7 @@ android.useAndroidX=true android.enableJetifier=true android.nonTransitiveRClass=false android.nonFinalResIds=false +# This builtInKotlin flag was added automatically by Flutter migrator +android.builtInKotlin=false +# This newDsl flag was added automatically by Flutter migrator +android.newDsl=false diff --git a/ios/google_driver_flutter/Package.swift b/ios/google_driver_flutter/Package.swift index 21307f5..918be5e 100644 --- a/ios/google_driver_flutter/Package.swift +++ b/ios/google_driver_flutter/Package.swift @@ -28,7 +28,7 @@ let package = Package( dependencies: [ .package( url: "https://github.com/googlemaps/ios-driver-sdk", - exact: "10.10.0" + exact: "10.10.1" ) // .package( // url: "https://github.com/googlemaps/flutter-navigation-sdk/tree/main/ios/google_navigation_flutter", From 2039b7b4765f130bd6147fc57fb802e59ab09606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 1 Sep 2026 16:56:50 +0800 Subject: [PATCH 2/7] feat!: upgrade Navigation Flutter SDK to 0.10.0 and add SwiftPM integration and raise flutter min to 3.44 --- .github/workflows/analyze.yaml | 4 ++-- .github/workflows/build.yaml | 10 +++++----- .github/workflows/licence-check.yaml | 2 +- example/pubspec.yaml | 4 ++-- ios/google_driver_flutter/Package.swift | 22 ++++++++++++---------- pubspec.yaml | 4 ++-- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/.github/workflows/analyze.yaml b/.github/workflows/analyze.yaml index 25ac4ca..eb3aa3a 100644 --- a/.github/workflows/analyze.yaml +++ b/.github/workflows/analyze.yaml @@ -33,7 +33,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos @@ -58,7 +58,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2ce068e..b14a240 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -47,7 +47,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos @@ -74,7 +74,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos @@ -98,7 +98,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos @@ -141,7 +141,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Setup melos @@ -165,7 +165,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true architecture: x64 diff --git a/.github/workflows/licence-check.yaml b/.github/workflows/licence-check.yaml index e61709a..922a6c1 100644 --- a/.github/workflows/licence-check.yaml +++ b/.github/workflows/licence-check.yaml @@ -41,7 +41,7 @@ jobs: - name: Install Flutter uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 with: - flutter-version: "3.38.x" + flutter-version: "3.44.x" channel: "stable" cache: true - name: Install Melos diff --git a/example/pubspec.yaml b/example/pubspec.yaml index a02a286..88a256d 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: "none" environment: sdk: ^3.8.0 - flutter: ">=3.32.0" + flutter: ">=3.44.0" dependencies: cupertino_icons: ^1.0.8 @@ -26,7 +26,7 @@ dependencies: sdk: flutter google_driver_flutter: path: ../ - google_navigation_flutter: ^0.9.1 + google_navigation_flutter: 0.10.0 http: ^1.1.2 meta: ^1.17.0 permission_handler: ^11.3.1 diff --git a/ios/google_driver_flutter/Package.swift b/ios/google_driver_flutter/Package.swift index 918be5e..161abfd 100644 --- a/ios/google_driver_flutter/Package.swift +++ b/ios/google_driver_flutter/Package.swift @@ -26,27 +26,29 @@ let package = Package( .library(name: "google-driver-flutter", targets: ["google_driver_flutter"]) ], dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), .package( url: "https://github.com/googlemaps/ios-driver-sdk", exact: "10.10.1" - ) - // .package( - // url: "https://github.com/googlemaps/flutter-navigation-sdk/tree/main/ios/google_navigation_flutter", - // exact: "0.8.0" - // ), + ), + .package( + name: "google_navigation_flutter", + path: "../google_navigation_flutter-0.10.0" + ), ], targets: [ .target( name: "google_driver_flutter", dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), .product( name: "GoogleRidesharingDriver", package: "ios-driver-sdk" - ) - // .product( - // name: "google-navigation-flutter", - // package: "google_navigation_flutter" - // ), + ), + .product( + name: "google-navigation-flutter", + package: "google_navigation_flutter" + ), ], resources: [ .process("PrivacyInfo.xcprivacy") diff --git a/pubspec.yaml b/pubspec.yaml index 117ad87..d7f4753 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,12 +19,12 @@ publish_to: none environment: sdk: ^3.8.0 - flutter: ">=3.32.0" + flutter: ">=3.44.0" dependencies: flutter: sdk: flutter - google_navigation_flutter: ^0.9.1 + google_navigation_flutter: 0.10.0 dev_dependencies: build_runner: ^2.4.6 From f51be057e7b21387833898813c82b08dedad34a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Wed, 2 Sep 2026 16:40:30 +0800 Subject: [PATCH 3/7] feat!: migrate to Swift Package Manager and remove CocoaPods integration --- .gitignore | 3 - README.md | 4 +- example/README.md | 7 - example/ios/.gitignore | 2 - example/ios/Flutter/Debug.xcconfig | 1 - example/ios/Flutter/Release.xcconfig | 1 - example/ios/Podfile | 105 ---------- example/ios/Runner.xcodeproj/project.pbxproj | 193 ------------------ .../contents.xcworkspacedata | 3 - example/pubspec.yaml | 2 +- ios/google_driver_flutter.podspec | 27 --- melos.yaml | 2 - 12 files changed, 4 insertions(+), 346 deletions(-) delete mode 100644 example/ios/Podfile delete mode 100644 ios/google_driver_flutter.podspec diff --git a/.gitignore b/.gitignore index cb84d7c..a4707d5 100644 --- a/.gitignore +++ b/.gitignore @@ -34,11 +34,8 @@ build/ **/doc/api/ # iOS -Podfile.lock -Pods/ .symlinks/ **/Flutter/ephemeral/ -**/Flutter/Flutter.podspec **/Flutter/App.framework/ **/Flutter/Flutter.framework/ **/Flutter/Generated.xcconfig diff --git a/README.md b/README.md index 9699264..85fa471 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,9 @@ This repository contains a Flutter plugin that allows users to use the [Google M url: git@github.com:googlemaps/flutter-driver-sdk.git ``` -2. Follow the instructions at the `google_navigation_flutter` plugin Readme to add your API key to the appropriate files in your Flutter project. +2. On iOS, this plugin requires Swift Package Manager; CocoaPods is not supported. Enable SwiftPM by following Flutter's [Swift Package Manager guide for app developers](https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-app-developers). + +3. Follow the instructions at the `google_navigation_flutter` plugin Readme to add your API key to the appropriate files in your Flutter project. [Google Maps Navigation Installation](https://github.com/googlemaps/flutter-navigation-sdk/blob/main/README.md#installation) diff --git a/example/README.md b/example/README.md index dca3505..120dcd0 100644 --- a/example/README.md +++ b/example/README.md @@ -107,13 +107,6 @@ To run the example app, follow these steps: ``` If you want to run the example app with a specific API key, see the [Setting up API Keys](#setting-up-api-keys) section. -> [!TIP](Pod-related issues on iOS) -> If you encounter pod-related issues when running the example code on iOS, you can try running the following commands from the `example/ios` folder: -> - pod repo update -> - pod install -> -> These commands will update and install the required pod files specifically for iOS. - ### Dart defines Supported dart define values and their default values: diff --git a/example/ios/.gitignore b/example/ios/.gitignore index 7a7f987..9ae4008 100644 --- a/example/ios/.gitignore +++ b/example/ios/.gitignore @@ -10,14 +10,12 @@ **/.vagrant/ **/DerivedData/ Icon? -**/Pods/ **/.symlinks/ profile xcuserdata **/.generated/ Flutter/App.framework Flutter/Flutter.framework -Flutter/Flutter.podspec Flutter/Generated.xcconfig Flutter/ephemeral/ Flutter/app.flx diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig index ec97fc6..592ceee 100644 --- a/example/ios/Flutter/Debug.xcconfig +++ b/example/ios/Flutter/Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig index c4855bf..592ceee 100644 --- a/example/ios/Flutter/Release.xcconfig +++ b/example/ios/Flutter/Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Podfile b/example/ios/Podfile deleted file mode 100644 index 477b3bf..0000000 --- a/example/ios/Podfile +++ /dev/null @@ -1,105 +0,0 @@ -# Uncomment this line to define a global platform for your project -platform :ios, '16.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup -source "https://github.com/CocoaPods/Specs.git" - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end - target 'RunnerUITests' do - inherit! :complete - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - # Start of the permission_handler configuration - target.build_configurations.each do |config| - - # You can enable the permissions needed here. For example to enable camera - # permission, just remove the `#` character in front so it looks like this: - # - # ## dart: PermissionGroup.camera - # 'PERMISSION_CAMERA=1' - # - # Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ - '$(inherited)', - - ## dart: PermissionGroup.calendar - # 'PERMISSION_EVENTS=1', - - ## dart: PermissionGroup.reminders - # 'PERMISSION_REMINDERS=1', - - ## dart: PermissionGroup.contacts - # 'PERMISSION_CONTACTS=1', - - ## dart: PermissionGroup.camera - # 'PERMISSION_CAMERA=1', - - ## dart: PermissionGroup.microphone - # 'PERMISSION_MICROPHONE=1', - - ## dart: PermissionGroup.speech - # 'PERMISSION_SPEECH_RECOGNIZER=1', - - ## dart: PermissionGroup.photos - # 'PERMISSION_PHOTOS=1', - - ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] - 'PERMISSION_LOCATION=1', - - ## dart: PermissionGroup.notification - 'PERMISSION_NOTIFICATIONS=1', - - ## dart: PermissionGroup.mediaLibrary - # 'PERMISSION_MEDIA_LIBRARY=1', - - ## dart: PermissionGroup.sensors - # 'PERMISSION_SENSORS=1', - - ## dart: PermissionGroup.bluetooth - # 'PERMISSION_BLUETOOTH=1', - - ## dart: PermissionGroup.appTrackingTransparency - # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1', - - ## dart: PermissionGroup.criticalAlerts - # 'PERMISSION_CRITICAL_ALERTS=1' - ] - end - # End of the permission_handler configuration - end -end diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index eb1f786..0582f49 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,11 +7,8 @@ objects = { /* Begin PBXBuildFile section */ - 0DFB118139416DCD3C397C02 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE26F098781BCF9127578AE5 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1E6161CABCC775054152A0B2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4581BB4223717512581AE06 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 609E4FF9FA708BA0CE6D0AC9 /* Pods_Runner_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C55A57535D169AB9ACA2BB3E /* Pods_Runner_RunnerUITests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -52,16 +49,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0ED45893518E9315323AE99B /* Pods-Runner-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release.xcconfig"; sourceTree = ""; }; - 13835D818635F94A4336BABC /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3E98A0EBED5105075C7B0084 /* Pods-Runner-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; - 3EC5125115E4D41F2919EFA5 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 49FACF45D62B41F841469FC6 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 4E5EFAE0C80246046D390C49 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; @@ -73,15 +64,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99F5715026EC616AD1702FFA /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; C452657A2B6D7C440048CA35 /* ConvertTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConvertTests.swift; sourceTree = ""; }; - C4581BB4223717512581AE06 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C55A57535D169AB9ACA2BB3E /* Pods_Runner_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C9FA8D632B28F632000BE7BA /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; C9FA8D652B28F632000BE7BA /* RunnerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerUITests.m; sourceTree = ""; }; - CE26F098781BCF9127578AE5 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E47379614476E0B75506E185 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - E58CFEAAF613A41CF2C03AE3 /* Pods-Runner-RunnerUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -89,7 +74,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0DFB118139416DCD3C397C02 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -98,7 +82,6 @@ buildActionMask = 2147483647; files = ( 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, - 1E6161CABCC775054152A0B2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -106,39 +89,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 609E4FF9FA708BA0CE6D0AC9 /* Pods_Runner_RunnerUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 24386DE9456EDB3E5CDB0B23 /* Pods */ = { - isa = PBXGroup; - children = ( - 49FACF45D62B41F841469FC6 /* Pods-Runner.debug.xcconfig */, - E47379614476E0B75506E185 /* Pods-Runner.release.xcconfig */, - 4E5EFAE0C80246046D390C49 /* Pods-Runner.profile.xcconfig */, - 99F5715026EC616AD1702FFA /* Pods-RunnerTests.debug.xcconfig */, - 13835D818635F94A4336BABC /* Pods-RunnerTests.release.xcconfig */, - 3EC5125115E4D41F2919EFA5 /* Pods-RunnerTests.profile.xcconfig */, - 3E98A0EBED5105075C7B0084 /* Pods-Runner-RunnerUITests.debug.xcconfig */, - 0ED45893518E9315323AE99B /* Pods-Runner-RunnerUITests.release.xcconfig */, - E58CFEAAF613A41CF2C03AE3 /* Pods-Runner-RunnerUITests.profile.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; - 27D46090FA46F1702AFB1D5C /* Frameworks */ = { - isa = PBXGroup; - children = ( - C4581BB4223717512581AE06 /* Pods_Runner.framework */, - C55A57535D169AB9ACA2BB3E /* Pods_Runner_RunnerUITests.framework */, - CE26F098781BCF9127578AE5 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -167,8 +123,6 @@ C9FA8D642B28F632000BE7BA /* RunnerUITests */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 24386DE9456EDB3E5CDB0B23 /* Pods */, - 27D46090FA46F1702AFB1D5C /* Frameworks */, ); sourceTree = ""; }; @@ -212,7 +166,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 85AA382F2651DA92FA5B60F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 09DFD6DAE663257FEF031BA2 /* Frameworks */, @@ -231,15 +184,12 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - CD2716F0C8608E2B5CD92A91 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 3D369216ADA507D3E72354C4 /* [CP] Copy Pods Resources */, - 1DA65B622BC19B113CDA673D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -257,14 +207,11 @@ isa = PBXNativeTarget; buildConfigurationList = C9FA8D6E2B28F632000BE7BA /* Build configuration list for PBXNativeTarget "RunnerUITests" */; buildPhases = ( - FB43509515A31C1AB2FFCC85 /* [CP] Check Pods Manifest.lock */, C9FA8D5F2B28F632000BE7BA /* Sources */, C9FA8D602B28F632000BE7BA /* Frameworks */, C9FA8D612B28F632000BE7BA /* Resources */, - 561C8B18DFA5C6B569042432 /* [CP] Copy Pods Resources */, C9FA8D712B28FB7A000BE7BA /* xcode_backend build */, C9FA8D722B28FB8D000BE7BA /* xcode_backend embed_and_thin */, - DC8C739AF51A682D9F7E2201 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -353,23 +300,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 1DA65B622BC19B113CDA673D /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -386,62 +316,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3D369216ADA507D3E72354C4 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 561C8B18DFA5C6B569042432 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 85AA382F2651DA92FA5B60F3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -493,67 +367,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n\n"; }; - CD2716F0C8608E2B5CD92A91 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - DC8C739AF51A682D9F7E2201 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - FB43509515A31C1AB2FFCC85 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-RunnerUITests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -693,7 +506,6 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99F5715026EC616AD1702FFA /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; @@ -713,7 +525,6 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 13835D818635F94A4336BABC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; @@ -731,7 +542,6 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EC5125115E4D41F2919EFA5 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; @@ -906,7 +716,6 @@ }; C9FA8D6B2B28F632000BE7BA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3E98A0EBED5105075C7B0084 /* Pods-Runner-RunnerUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -936,7 +745,6 @@ }; C9FA8D6C2B28F632000BE7BA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0ED45893518E9315323AE99B /* Pods-Runner-RunnerUITests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -965,7 +773,6 @@ }; C9FA8D6D2B28F632000BE7BA /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E58CFEAAF613A41CF2C03AE3 /* Pods-Runner-RunnerUITests.profile.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata index 21a3cc1..1d526a1 100644 --- a/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,7 +4,4 @@ - - diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 88a256d..1840785 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -37,7 +37,7 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter - patrol: 4.6.1 + patrol: 4.9.0 pub_semver: ^2.1.4 test_api: any diff --git a/ios/google_driver_flutter.podspec b/ios/google_driver_flutter.podspec deleted file mode 100644 index 1829aab..0000000 --- a/ios/google_driver_flutter.podspec +++ /dev/null @@ -1,27 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint google_driver_flutter.podspec` to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'google_driver_flutter' - s.version = '0.0.1' - s.summary = 'A Google Maps Driver Flutter plugin.' - s.description = <<-DESC -A Google Maps Driver Flutter plugin. - DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } - s.source_files = 'google_driver_flutter/Sources/google_driver_flutter/**/*.swift' - s.dependency 'Flutter' - s.dependency 'GoogleRidesharingDriver', '~> 10.10.0' - s.dependency 'google_navigation_flutter' - s.platform = :ios, '16.0' - s.static_framework = true - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } - s.swift_version = '5.0' - s.resource_bundles = {'google_driver_flutter_privacy_info' => ['google_driver_flutter/Sources/google_driver_flutter/PrivacyInfo.xcprivacy']} -end \ No newline at end of file diff --git a/melos.yaml b/melos.yaml index faa18f9..4cf1860 100644 --- a/melos.yaml +++ b/melos.yaml @@ -168,7 +168,6 @@ scripts: # "check-license-header". run: | addlicense -f header_template.txt \ - --ignore "**/Pods/**" \ --ignore "**/.dart_tool/**" \ --ignore "**/example/build/**" \ --ignore "**/example/patrol_test/test_bundle.dart" \ @@ -190,7 +189,6 @@ scripts: run: | addlicense -f header_template.txt \ --check \ - --ignore "**/Pods/**" \ --ignore "**/.dart_tool/**" \ --ignore "**/example/build/**" \ --ignore "**/example/patrol_test/test_bundle.dart" \ From 40e7c5a22fca987c2757b9680f9345b3948ebcc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 15 Sep 2026 12:48:16 +0800 Subject: [PATCH 4/7] fix: android build fix --- README.md | 31 +++++++++++++++++++++++++++- example/android/app/build.gradle.kts | 2 +- example/android/settings.gradle.kts | 2 +- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 85fa471..728db3f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ This repository contains a Flutter plugin that allows users to use the [Google M | **Minimum mobile OS supported** | SDK 26+ | iOS 16.0+ | | **Compile/Target SDK** | SDK 36+ | - | -* A Flutter project +* A Flutter project using Flutter 3.44 or later * A Google Cloud project with the [Navigation SDK enabled](https://developers.google.com/maps/documentation/navigation/android-sdk/set-up-project), the [Maps SDK for iOS enabled](https://developers.google.com/maps/documentation/navigation/ios-sdk/config) and the [Local Rides and Deliveries API enabled](https://console.developers.google.com/apis/library/fleetengine.googleapis.com) * A Google Maps API key from the project above * Project ID for the project above @@ -29,6 +29,35 @@ This repository contains a Flutter plugin that allows users to use the [Google M > [!IMPORTANT] > Project ID need to be allowlisted before using this plugin. Please contact your Google representative to get your Project ID allowlisted. +### Android build requirements + +The Android Navigation SDK used by `google_navigation_flutter` 0.10.0 requires: + +* Android Gradle Plugin (AGP) 8.13.2 or newer. +* Core library desugaring enabled, using `com.android.tools:desugar_jdk_libs_nio:2.1.5` or newer. + +Update the existing AGP declaration in `android/settings.gradle.kts`: + +```kotlin +plugins { + id("com.android.application") version "8.13.2" apply false +} +``` + +Enable desugaring and update its dependency in `android/app/build.gradle.kts`, retaining your other build settings: + +```kotlin +android { + compileOptions { + isCoreLibraryDesugaringEnabled = true + } +} + +dependencies { + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs_nio:2.1.5") +} +``` + ## Installation 1. This repository is currently private. You will need to add the package dependency using [Git with SSH](https://docs.flutter.dev/packages-and-plugins/using-packages#dependencies-on-unpublished-packages) in the app's `pubspec.yaml` file. See [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) for instructions on how to provide SSH keys. diff --git a/example/android/app/build.gradle.kts b/example/android/app/build.gradle.kts index 1b2ba28..3a5dbe6 100644 --- a/example/android/app/build.gradle.kts +++ b/example/android/app/build.gradle.kts @@ -114,7 +114,7 @@ flutter { } dependencies { - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs_nio:2.0.4") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs_nio:2.1.5") androidTestUtil("androidx.test:orchestrator:1.5.1") } diff --git a/example/android/settings.gradle.kts b/example/android/settings.gradle.kts index bf3e0ca..9501199 100644 --- a/example/android/settings.gradle.kts +++ b/example/android/settings.gradle.kts @@ -32,7 +32,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.13.0" apply false + id("com.android.application") version "8.13.2" apply false id("org.jetbrains.kotlin.android") version "2.3.20" apply false id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false } From 4252aa8bba6a9ddb74082fe2af37ac1ae38f587a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 15 Sep 2026 14:15:51 +0800 Subject: [PATCH 5/7] fix: review fixes to tests and spm --- CONTRIBUTING.md | 4 +++- example/ios/Runner.xcodeproj/project.pbxproj | 12 ++++++++++++ ios/google_driver_flutter/Package.swift | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d5fd456..d239b63 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -132,9 +132,11 @@ Specify the device you want to run the tests on with the DEVICE env variable. Integration tests are responsible for ensuring that the plugin works against the native Driver SDK for both Android and iOS platforms. Patrol is used for the integration tests to simplify interactions with native elements. To use patrol, you first need to activate the patrol_cli. ```bash -flutter pub global activate patrol_cli 4.4.0 +flutter pub global activate patrol_cli 4.7.0 ``` +Patrol 4.9.0 requires Patrol CLI 4.7.0 or later, which supports this project's Swift Package Manager setup. See the [Patrol compatibility table](https://patrol.leancode.co/documentation/compatibility-table) when updating either dependency. + To ensure that all necessary dependencies for patrol are properly set up, run the following command: ```bash diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 0582f49..eb16c3c 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + B28900010000000000000001 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = B28900010000000000000002 /* FlutterGeneratedPluginSwiftPackage */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; @@ -89,6 +90,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B28900010000000000000001 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -219,6 +221,9 @@ C9FA8D6A2B28F632000BE7BA /* PBXTargetDependency */, ); name = RunnerUITests; + packageProductDependencies = ( + B28900010000000000000002 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = RunnerUITests; productReference = C9FA8D632B28F632000BE7BA /* RunnerUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; @@ -716,6 +721,7 @@ }; C9FA8D6B2B28F632000BE7BA /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -745,6 +751,7 @@ }; C9FA8D6C2B28F632000BE7BA /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -773,6 +780,7 @@ }; C9FA8D6D2B28F632000BE7BA /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -852,6 +860,10 @@ /* End XCLocalSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + B28900010000000000000002 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { isa = XCSwiftPackageProductDependency; productName = FlutterGeneratedPluginSwiftPackage; diff --git a/ios/google_driver_flutter/Package.swift b/ios/google_driver_flutter/Package.swift index 161abfd..65783f7 100644 --- a/ios/google_driver_flutter/Package.swift +++ b/ios/google_driver_flutter/Package.swift @@ -33,7 +33,7 @@ let package = Package( ), .package( name: "google_navigation_flutter", - path: "../google_navigation_flutter-0.10.0" + path: "../google_navigation_flutter" ), ], targets: [ From c7cffe756247d28cf24aed5a2cc0ffc7461e73d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 15 Sep 2026 16:14:56 +0800 Subject: [PATCH 6/7] chore: pin gitHub actions to commit SHAs --- .github/workflows/analyze.yaml | 6 +++--- .github/workflows/build.yaml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analyze.yaml b/.github/workflows/analyze.yaml index eb3aa3a..fff92d2 100644 --- a/.github/workflows/analyze.yaml +++ b/.github/workflows/analyze.yaml @@ -50,7 +50,7 @@ jobs: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 with: distribution: "temurin" java-version: "17" @@ -66,7 +66,7 @@ jobs: with: melos-version: "6.3.2" - name: Restore Cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: cache with: path: /home/linuxbrew/.linuxbrew @@ -78,7 +78,7 @@ jobs: export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install swift-format - name: Save Cache - uses: actions/cache/save@v4 + uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 if: steps.cache.outputs.cache-hit != 'true' with: path: /home/linuxbrew/.linuxbrew diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b14a240..1ab2d11 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -39,7 +39,7 @@ jobs: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 with: distribution: "temurin" java-version: "17" @@ -66,7 +66,7 @@ jobs: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 with: distribution: "temurin" java-version: "17" @@ -106,7 +106,7 @@ jobs: with: melos-version: "6.3.2" - name: Cache podfiles - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: "**/Pods" key: ${{ runner.os }}-pods-${{ hashFiles('**/*.podspec') }} @@ -133,7 +133,7 @@ jobs: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 with: distribution: "temurin" java-version: "17" @@ -174,7 +174,7 @@ jobs: with: melos-version: "6.3.2" - name: Cache podfiles - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: "**/Pods" key: ${{ runner.os }}-pods-${{ hashFiles('**/*.podspec') }} From 9a3a73018895376acf10b679705d9531736cbd61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Tue, 15 Sep 2026 16:21:47 +0800 Subject: [PATCH 7/7] fix: restrict workflow token permissions to contents read --- .github/workflows/analyze.yaml | 3 +++ .github/workflows/build.yaml | 3 +++ .github/workflows/licence-check.yaml | 3 +++ 3 files changed, 9 insertions(+) diff --git a/.github/workflows/analyze.yaml b/.github/workflows/analyze.yaml index fff92d2..a676740 100644 --- a/.github/workflows/analyze.yaml +++ b/.github/workflows/analyze.yaml @@ -19,6 +19,9 @@ on: branches: - main +permissions: + contents: read + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1ab2d11..b9f34ba 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -25,6 +25,9 @@ on: branches: - main +permissions: + contents: read + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true diff --git a/.github/workflows/licence-check.yaml b/.github/workflows/licence-check.yaml index 922a6c1..d334939 100644 --- a/.github/workflows/licence-check.yaml +++ b/.github/workflows/licence-check.yaml @@ -19,6 +19,9 @@ on: branches: - main +permissions: + contents: read + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true