Google地图在发布模式下不会显示在Android上

我试图释放我的应用程序,但有谷歌地图的问题。 该应用程序包含一个显示地图的活动(MapActivity)。 在debugging模式下运行时,地图工作正常。 我以发布模式签署了我的应用程序,并获得了SHA1。 我根据需要在Google控制台上创build了一个新的android键(SHA1; packageName)。 得到了API密钥

在我的应用程序中,我根据需要引用了google-play-services-lib的副本。 我正在使用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> 

唯一奇怪的是,当我使用keytool来获得SHA1时,我得到了“签名algorithm名:SHA256withRSA。这是问题吗?如果是的话,我该如何改变它?

使用keytool获取证书指纹

我有点卡在这里! 感谢您的任何帮助!

Solutions Collecting From Web of "Google地图在发布模式下不会显示在Android上"

在地图API V2中,在发行版本和debugging版本之间进行更改的唯一事情是您在此注册的密钥https://code.google.com/apis/console/

如果debugging工作,最终版本不是,这是唯一必要的更改。

所以我build议你仔细检查你的发布密钥库的哈希码,并确保它在Google API控制台上正确input。

如果您已经尝试过@Budius回答,但仍然面临此错误,可能是由以下情况造成的:

添加MapFragment时,Android Studio会创build2个文件google_maps_api.xml:一个位于src / debug / res / values文件夹内,另一个位于src / release / res / values内。

但由于某些原因,只有发布文件夹文件显示在Android Studio上。 所以,当您更改APIkey值时,仅在debugging文件夹文件中完成。

因此,只需复制google_maps_api.xml文件以释放文件夹,并确保两者都具有相同的APIKey。

这在所有其他尝试之后为我工作。

只需清除数据(设置 – >应用程序select应用程序 – 清除数据 – >卸载)并尝试。 这对我工作。 确保包名称与Google开发者控制台中的名称相同。 如果从自定义密钥库创buildSHA1代码,则在发行模式下使用相同的密码。 或者通过使用相同的密钥库进行签名来生成apk。

1-使用项目的“Android Manifest”文件中的“使用导出向导”创buildapk文件。

2-键插入完成之前,MD5和SHA1键如图所示,这是给定的pic-

3-为Android项目创build新的API Key,以便在第2点检索到新的SHA1。

4-在清单文件中使用该API密钥,如下所示

5-清理你的项目,并再次构buildAPK文件。

6-你现在可以在apk中看到谷歌地图。