Android 为什么当我从play store下载我的应用程序时google地图不显示? 我开发了一个与GooglePlaces相关的小应用程序 当我直接将应用程序从PC运行到手机时,地图显示正常,一切正常,但当我将同一应用程序上传到play store的个人帐户时,当我下载时,地图不显示。 -问题是与SH1指纹有关还是与地图密钥有关

Android 为什么当我从play store下载我的应用程序时google地图不显示? 我开发了一个与GooglePlaces相关的小应用程序 当我直接将应用程序从PC运行到手机时,地图显示正常,一切正常,但当我将同一应用程序上传到play store的个人帐户时,当我下载时,地图不显示。 -问题是与SH1指纹有关还是与地图密钥有关,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,请帮助我的朋友,因为我还没有找到任何解决方案,虽然我输入了正确的关键字在谷歌搜索 先谢谢你 我的清单文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.maps" android:versionCode="1" android:version

请帮助我的朋友,因为我还没有找到任何解决方案,虽然我输入了正确的关键字在谷歌搜索

  • 先谢谢你

  • 我的清单文件:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.maps"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="21" />
    
        <permission
            android:name="com.example.maps.permission.MAPS_RECEIVE"
            android:protectionLevel="signature" />
    
        <uses-permission android:name="com.example.maps.permission.MAPS_RECEIVE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <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-feature
            android:glEsVersion="0x00020000"
            android:required="true" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/logo"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
               android:name="com.example.maps.CurrentLocationMainActivity"
                android:label="@string/app_name"
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
    
    
            <meta-data
                android:name="com.google.android.maps.v2.API_KEY"
                android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-jbt0" />
            <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
        </application>
    
    </manifest>
    
    
    
    您必须使用谷歌地图的ReleaeKey来发布应用程序,否则它将在地图上显示空白页面,因为您使用的是调试键,当您直接从PC调试应用程序时,调试键正在运行。 所以使用释放键

    这样做:

               C:\Program Files\Java\jdk1.6.0_45\bin>keytool -genkey -v -keystore "C:\Users\cp
     01\.android\releasekey.ketstore" -alias release_alias -keyalg RSA -keysize 2048
    -validity 10000
     Enter keystore password:
     Re-enter new password:
     What is your first and last name?
    [Unknown]:
    What is the name of your organizational unit?
    [Unknown]:
    What is the name of your organization?
    [Unknown]:
       What is the name of your City or Locality?
    [Unknown]:
    What is the name of your State or Province?
    [Unknown]:
    What is the two-letter country code for this unit?
    [Unknown]:
    Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
    [no]:  yes
    
       Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) wit
     a validity of 10,000 days
        for: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknow
    
      Enter key password for <release_alias>
        (RETURN if same as keystore password):
     Re-enter new password:
     [Storing C:\Users\cpc01\.android\releasekey.ketstore]
    
    
    
      C:\Program Files\Java\jdk1.6.0_45\bin>keytool -list -alias release_alias -keyst
      re c:\Users\cpc01\.android\releasekey.ketstore
     Enter keystore password:
     release_alias, Jul 25, 2013, PrivateKeyEntry,
     Certificate fingerprint (MD5): 6A:CA:68:3D:E9:9F:B9:15:22:2A:AB:01:30:82:CC:2A
    
     C:\Program Files\Java\jdk1.6.0_45\bin>keytool -list -v -alias release_alias -ke
     store c:\Users\cpc01\.android\releasekey.ketstore
    Enter keystore password:
    Alias name: release_alias
    Creation date: Jul 25, 2013
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
     Owner: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
     Issuer: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    Serial number: 51f0c02c
     Valid from: Thu Jul 25 11:35:32 IST 2013 until: Mon Dec 10 11:35:32 IST 2040
     Certificate fingerprints:
         MD5:  6A:CA:68:3D:E9:9F:B9:15:22:2A:AB:01:30:82:CC:2A
         SHA1: 0F:8A:3C:6A:8F:41:CD:B4:F5:12:85:0D:B6:01:D9:30:E6:5D:28:64
         Signature algorithm name: SHA1withRSA
         Version: 3
    
    C:\ProgramFiles\Java\jdk1.6.0\u 45\bin>keytool-genkey-v-keystore“C:\Users\cp
    01\.android\releasekey.ketstore“-alias release\u alias-keyalg RSA-keysize 2048
    -有效期10000
    输入密钥库密码:
    重新输入新密码:
    你的名字和姓氏是什么?
    [未知]:
    您的组织单位名称是什么?
    [未知]:
    你的组织名称是什么?
    [未知]:
    你所在的城市或地区叫什么名字?
    [未知]:
    你所在的州或省叫什么名字?
    [未知]:
    这个单位的两个字母的国家代码是什么?
    [未知]:
    CN=未知、OU=未知、O=未知、L=未知、ST=未知、C=未知是否正确?
    [否]:是的
    生成2048位RSA密钥对和自签名证书(SHA1 WithRSA)
    有效期为10000天
    for:CN=Unknown,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknow
    输入的密钥密码
    (如果与密钥库密码相同,则返回):
    重新输入新密码:
    [存储C:\Users\cpc01\.android\releasekey.ketstore]
    C:\ProgramFiles\Java\jdk1.6.0\u 45\bin>keytool-list-alias release\u alias-keyst
    re c:\Users\cpc01\.android\releasekey.ketstore
    输入密钥库密码:
    2013年7月25日发布,PrivateKeyEntry,
    证书指纹(MD5):6A:CA:68:3D:E9:9F:B9:15:22:2A:AB:01:30:82:CC:2A
    C:\ProgramFiles\Java\jdk1.6.0\u 45\bin>keytool-list-v-alias release\u alias-ke
    商店c:\Users\cpc01\.android\releasekey.ketstore
    输入密钥库密码:
    别名:release\u别名
    创建日期:2013年7月25日
    条目类型:PrivateKeyEntry
    证书链长度:1
    证书[1]:
    所有者:CN=未知,OU=未知,O=未知,L=未知,ST=未知,C=未知
    发卡机构:CN=未知,OU=未知,O=未知,L=未知,ST=未知,C=未知
    序列号:51f0c02c
    有效期:2013年7月25日星期四11:35:32 IST至:2040年12月10日星期一11:35:32 IST
    证书指纹:
    MD5:6A:CA:68:3D:E9:9F:B9:15:22:2A:AB:01:30:82:CC:2A
    SHA1:0F:8A:3C:6A:8F:41:CD:B4:F5:12:85:0D:B6:01:D9:30:E6:5D:28:64
    签名算法名称:SHA1 WithRSA
    版本:3
    
    这是制作发布密钥库和生成SHA1 fingreprint的完整过程,现在将此SHA1代码添加到Google API控制台上的注册应用程序


    如果发现有用,接受并投票回答,谢谢。

    *当我们上传一个apk到游戏商店时,我们应该要求签署apk,在签署apk后,sha1指纹将发生变化,在google map v2中,我们需要一个从google控制台获取的密钥,我们需要sha1指纹,所以你应该通过新的sha1指纹再次创建google map密钥。通过以下过程获取新的sha1

    1.签署了apk

    2.再次进行相同的过程,您将看到新的sha1

    3.现在创建一个新键并粘贴到项目中

    4.不要再签名了

    5.最后上传

    见下文我上传所有的图片在续集看到新的sga1*


    您是否使用发布密钥库创建了API密钥?它是从Google API控制台还是其他地方提供的?