'google_maps_flutter only works on IOS. I'm having a problem when it comes to Android

Edit :

We decided to use OpenStreetMap instead of Google Maps. Actually, we were thinking of returning to OpenStreetMap in the future, but we did not want to spoil what was written. We made this decision because the fix would be too costly. Thanks for yours helps.




IOS and Android ScreenShots

The project in use will be added to the project to add extra features. After adding maps that work smoothly on IOS, when it comes to Android, I get the error "Unexpected response code 503 for https://clients4.google.com/glm/mmap/api" in the Debug Console section. The full error is below...


enter image description here

what did i check

  • api key connection
  • Android Emulator (Creating a different project containing Google Maps. It worked with the android emulator without any problem, but the screen does not appear in the project where I got the error.)
  • dependencies update
  • Emulator has google play services

Full Error Code

Unexpected response code 503 for https://clients4.google.com/glm/mmap/api 
   
W/MobStoreFlagStore(26335): java.util.concurrent.ExecutionException: java.lang.SecurityException: GoogleCertificatesRslt: not allowed: pkg=com.dotdotdot.dotdot_dotdot, sha256=[de6158b2bcbe47a9e13cccf90dc960571efc28ca09f89e29840e87729f126466], atk=false, ver=221514037.true (go/gsrlt)
    W/MobStoreFlagStore(26335):     at agw.s(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150400-0):3)
    W/MobStoreFlagStore(26335):     at agw.get(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150400-0):2)
    W/MobStoreFlagStore(26335):     at aig.g(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150400-0):2)
    W/MobStoreFlagStore(26335):     at wy.c(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150400-0):1)
    W/MobStoreFlagStore(26335):     at xa.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150400-0):0)
    W/MobStoreFlagStore(26335):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
    W/MobStoreFlagStore(26335):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    W/MobStoreFlagStore(26335):     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
    W/MobStoreFlagStore(26335):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    W/MobStoreFlagStore(26335):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    W/MobStoreFlagStore(26335):     at java.lang.Thread.run(Thread.java:923)
    W/MobStoreFlagStore(26335): Caused by: java.lang.SecurityException: GoogleCertificatesRslt: not allowed: pkg=com.bilicisoft.visit_ankara, sha256=[de6158b2bcbe47a9e13cccf90dc960571efc28ca09f89e29840e87729f126466], atk=false, ver=221514037.true (go/gsrlt)
    W/MobStoreFlagStore(26335):     at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
    W/MobStoreFlagStore(26335):     at android.os.Parcel.createException(Parcel.java:2357)
    W/MobStoreFlagStore(26335):     at android.os.Parcel.readException(Parcel.java:2340)
    W/MobStoreFlagStore(26335):     at android.os.Parcel.readException(Parcel.java:2282)

Error Code ScreenShots

Error Code 1 Error Code 2


Dependencies

environment:
  sdk: ">=2.16.2 <3.0.0"

dependencies:
  mobx: ^2.0.1
  flutter_mobx: ^2.0.0
  mobx_codegen: ^2.0.1+3
  build_runner: ^2.0.6
  easy_localization: ^3.0.0
  shared_preferences: ^2.0.0
  dio: ^4.0.0
  google_maps_flutter: 2.1.5

Google Maps Code

(I remind you again. This code doesn't work for me on Android, but it does on iOS. I don't think there is a problem with the code.)

 Container(
                        height: 300,
                        child: googleMap.GoogleMap(
                          mapType: googleMap.MapType.normal,
                          initialCameraPosition: googleMap.CameraPosition(
                            target: googleMap.LatLng(_place?.lat ?? 0, _place?.lng ?? 0),
                            zoom: 15,
                          ),
                          onMapCreated: (googleMap.GoogleMapController controller) {
                            _controller.complete(controller);
                          },
                          markers: Set<googleMap.Marker>.of([
                            googleMap.Marker(
                                markerId: googleMap.MarkerId(_place?.title ?? ""),
                                position: googleMap.LatLng(_place?.lat ?? 0, _place?.lng ?? 0))
                          ]),
                        ),
                      ),

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dotdot.dot_dot>
    
  <queries>
    <intent>
      <action android:name="android.intent.action.VIEW" />
      <data android:scheme="https" />
    </intent>
    <intent>
      <action android:name="android.intent.action.DIAL" />
      <data android:scheme="tel" />
    </intent>
    <intent>
      <action android:name="android.intent.action.SENDTO" />
      <data android:scheme="smsto" />
    </intent>
  </queries>

   <application
        android:label="APP Name"
        android:icon="@mipmap/ic_launcher"
        android:usesCleartextTraffic="true">

        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
           
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
           
              android:name="io.flutter.embedding.android.SplashScreenDrawable"
              android:resource="@drawable/launch_background"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
         
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
        <meta-data android:name="com.google.android.geo.API_KEY"
            android:value="AIzaSyC_K9N2..........ASD_s4"/>
    </application>
</manifest>


Solution 1:[1]

trying out all the above in Summary:

  • Enabled Android and iOs SDK on Cloud Console
  • Added Secret Key to Android Manifest
  • Adding Map on my App
  • Running the command Flutter clean
  • check all config google map for android
  • Uninstall the app from your device (Phone or Emulator) then compile afresh.

Solution 2:[2]

Below permissions missing in your androidfestml file check out,

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dotdot.dot_dot>

//add this one
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

 <application
    android:label="APP Name"
    android:icon="@mipmap/ic_launcher"
    android:usesCleartextTraffic="true">

//add this too
<meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Solution 3:[3]

You can filter which events trigger the S3 notification.

There are 2 ways to trigger lambda from S3 event in general: bucket notifications and EventBridge.

Notifications: https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-filtering.html

EB: https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/

In your case, a quick search doesn't show me that you can setup a "negative" rule, so "everything which doesn't have processed prefix". But you can rework your bucket structure a bit and dump unprocessed items into unprocessed and setup filter based on that prefix only.

Solution 4:[4]

When setting up an S3 trigger for lambda function, there is the possibility, to define which kind of overarching S3-event should be listened to: Lambda S3 Trigger options

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Saitoh Akira
Solution 2 Gejaa
Solution 3 Oleksii Donoha
Solution 4