Google maps not showing on android in release mode
Solution 1
if you already tried @Budius answer and still facing this error, it might be caused by the following situation:
When you add your MapFragment, Android Studio create 2 files google_maps_api.xml: one inside src/debug/res/values folder and the other inside src/release/res/values.
But for some reason only the debug folder file is showed on Android Studio. So, when you change the APIkey value, it is done only at debug folder file.
So just copy the google_maps_api.xml file to release folder and assure that both are with same APIKey.
this worked for me after all other attempts.
Solution 2
in the map API V2, the ONLY thing that change between a release version and a debug version is the Key that you register here https://code.google.com/apis/console/
If debug is working and final release is not, it's the only change necessary.
So I suggest you to double check the hash code of your release keystore and make sure that it's properly input on the Google API Console.
Solution 3
I was also facing the same problem since last few days and it took me around 2-3 days to figure out the problem. You need to add your API key at 2 places one in app/src/debug/res/values/google_maps_api.xml and other in app/src/release/res/values/google_maps_api.xml.
You can find the release/google_maps_api.xml in the project mode not in the Android/application mode.
user1851212
Updated on June 05, 2022Comments
-
user1851212 about 2 years
I am trying to release my app, but having a problem with google maps. The app contains an activity (MapActivity) that displays a map. When running in debug mode, the map works fine. I signed my app in release mode, and got SHA1. I created a new android key on Google console as required (SHA1;packageName). Got the API Key
In my App, I referenced a copy of google-play-services-lib as required. I am using ADT.
map.xml
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment" />
MapActivity.java
public class MapActivity extends FragmentActivity { private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.rentalcar" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.rentalcar.MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.rentalcar.MapActivity" android:label="@string/title_activity_map" android:screenOrientation="portrait" > </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="My_Key"/> </application> </manifest>
The only weird thing is that when I use keytool to get SHA1 I get "Signature Algorithm name: SHA256withRSA. can this be the problem? If yes, how can I change it?
I am kind of stuck here! Thank you for any help!
-
user1851212 over 11 yearscan it be that the signature algorithm should be SHA1withRSA rather than SHA256withRSA?
-
Hermann Klecker about 10 yearsJust to add an aspect to this very helpful answer. You can create an API key for both at once, debug and release key. Doing so you don't have to hassle with changes to the manifest or gradle config or so. Just use the one api key that works with all your app keys.
-
Shihab Uddin almost 7 yearsthanks ... i have been working 48 hours to solve this. no i got the solution.
-
Gaurav Arora about 5 years@Tarciso. My debug apps are working fine. but release apk maps is not working. I have checked google_maps_api files well.. they all have updated key.. still not visible maps
-
Tarciso Junior about 5 years@GauravArora, did it showed something in console output ? had you checked in you google API Key if its enabled for production ?