谷歌地图Android API v2授权失败

谷歌地图Android API v2授权失败,android,google-maps,android-maps,google-maps-android-api-2,Android,Google Maps,Android Maps,Google Maps Android Api 2,我的步骤: 从debug.keystore获取SHA1代码 在谷歌API控制台中创建应用程序 启用谷歌地图api v2 输入SHA1;我的.package.name 获取API密钥 已创建AndroidManifest文件: 之后,我将布局更改为: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

我的步骤:

  • 从debug.keystore获取SHA1代码
  • 在谷歌API控制台中创建应用程序
  • 启用谷歌地图api v2
  • 输入SHA1;我的.package.name
  • 获取API密钥
  • 已创建AndroidManifest文件:

    之后,我将布局更改为:

    <?xml version="1.0" encoding="utf-8"?>
    
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@+id/map"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent" />
    
    结果,应用程序启动了,但我没有看到地图

    控制台日志:

    ERROR/Google Maps Android API(10369): Authorization failure.
    

    您需要使用位于以下位置的库项目: ANDROID-SDK-DIRECTORY/extras/google/google\u play\u services/libproject

    这将解决您的第一个问题


    我不确定你的第二个,但这可能是第一个的副作用。我仍在尝试让地图在我自己的应用程序中运行:)

    步骤

    • 确保设备具有Google Play服务APK
    • 安装谷歌播放服务版本。超过2个

    • 在以下位置创建项目:
    • 启用“谷歌地图Android API v2”
    • 要在项目中注册SHA1(现在,您需要在API控制台中编写SHA1;your.app.package.name)并获取API密钥
    • 将目录ANDROID_SDK_DIR/extras/google/google_play_services/libproject/google-play-services_lib复制到项目的根目录
    • 将下一行添加到您的\u项目/PROJECT.properties
    android.library.reference.1=google-play-services\u lib

    • 将下一行添加到
      YOUR_PROJECT/proguard PROJECT.txt

    现在,您可以使用Android版谷歌地图API V2创建自己的谷歌地图应用程序了

    如果使用min SDK=8创建应用程序,请使用android支持库v4+SupportMapFragment而不是MapFragment。

    “java.lang.NoClassDefFoundError:com.google.android.gms.R$styleable”

    A也有此错误,您需要: 文件->导入->现有Android代码到工作区->浏览->Android SDK->附加->谷歌->谷歌播放服务->库项目->谷歌播放服务库,然后确定。检查项目并完成


    该项目将转到包资源管理器。现在转到您的项目(有错误)->properties->Android并在库中单击Add。。。谷歌游戏服务库应该在那里!添加并重试:)

    由于我刚刚浪费了很多时间让API正常工作,我将尝试对Map API v2进行逐步验证:

    步骤1:申请API密钥

    如果您不熟悉GoogleAPI控制台,请阅读上面Rusfearuth的非常好的答案

    步骤2:检查SHA哈希值(在本例中,我使用eclipse的调试键):

    在Windows计算机上,通过命令提示符访问您的用户目录:

    C:\Users\you>keytool -list -alias androiddebugkey -keystore .android\debug.keyst
    ore -storepass android -keypass android
    
    您将得到如下结果:

    androiddebugkey, 15.10.2012, PrivateKeyEntry,
    Zertifikat-Fingerprint (SHA1): 66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6
    
    然后查看映射活动的包名称,例如。 com.example.mypackagename

    您可以将其与Google API控制台中的设置结合起来检查:

    66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6;com.example.mypackagename
    
    从何处获取API密钥:

    AZzaSyDhkhNotUseFullKey49ylKD2bw1HM
    
    第3步。清单元数据

    检查元数据是否存在并包含正确的键。如果你发布你的应用程序,你需要一个不同的密钥

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AZzaSyDhkhNotUseFullKey49ylKD2bw1HM" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    
    对于地图:要使用的条目包括

    xmlns:map="http://schemas.android.com/apk/res-auto"
    
    在活动布局中(例如线性布局)

    在我的情况下,我必须清理项目,每次我改变布局的东西。似乎是一只虫子

    步骤8:使用Eclipse-Project-Clean。


    享受吧

    我遇到了完全相同的问题,我只需要将MapsApiV2库项目的SDK设置为Android 2.3.3(API lvl 10)

    只需将其添加到清单文件中:

    **<uses-library android:name="com.google.android.maps" />**
    
    android:name="com.google.android.maps.v2.API_KEY
    
    ****
    
    例如

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <uses-library android:name="com.google.android.maps" />
    
        <activity
            android:name=".California"
            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>
    
    
    

    请更新你的google play服务库…进入窗口->Android sdk管理器->更新google play服务…安装它..删除旧的并保留这个。从ANDROID-SDK-DIRECTORY/extras/google/google\u play\u服务获取此信息/


    谢谢..请投赞成票

    也请查看此帖子:,如果你完全确定你做了正确的步骤,然后按照第二个答案,身份验证会缓存在某个地方,尝试手动卸载应用程序(就像你对普通应用程序所做的那样),然后再次“运行”项目

    我也遇到了同样的问题。经过大约两个小时的谷歌搜索、重试、多次重新生成API密钥等,我发现我在谷歌API控制台中启用了错误的服务。 我启用了谷歌地图API v2服务,但对于Android应用程序,您必须使用谷歌地图Android API v2
    启用正确的服务后,所有功能都开始工作。

    我正在从谷歌地图的V1迁移到V2。我试图通过Eclipse运行应用程序时遇到了这个失败。对我来说,根本原因是使用了我的发布证书密钥库,而不是通过Eclipse运行时使用的Android调试密钥库。以下命令(OSX/Linux)将获取调试密钥库的SHA1密钥:

    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    
    如果改用Windows 7,则应使用以下命令:

    keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
    

    在尝试使用新密钥之前,最好从设备上完全卸载应用程序,因为Android会缓存安全凭据

    您的ECLIPSE可能更改了SHA1密钥,因此您必须在此处使用新的SHA1密钥重新生成您的google密钥: 之后,将新密钥复制到清单中,并多次重新加载此google页面,您的密钥将被更新,重建您的项目,它将正常工作。
    P/S:由于我的错误,我删除了.android文件夹,因此eclipse regen SHA1。

    我遵循了Google文档中提供的相同步骤,但我得到了相同的错误。后来我意识到我正在用app.keystore对我的应用程序进行签名,我用来生成API密钥的SHA密钥就是调试密钥

    因此,我只是从by
    build.gradle
    文件中删除了
    signingConfig signingConfig.generic
    ,我的映射开始正常工作

    希望这对你有所帮助
    <permission
        android:name="com.example.yourpackage.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.example.yourpackage.permission.MAPS_RECEIVE" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <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"/>
    
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="47.621120"
        map:cameraTargetLng="-122.349594"
        map:cameraZoom="15" />
    
    import android.support.v4.app.FragmentActivity;
    
    xmlns:map="http://schemas.android.com/apk/res-auto"
    
    **<uses-library android:name="com.google.android.maps" />**
    
    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <uses-library android:name="com.google.android.maps" />
    
        <activity
            android:name=".California"
            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>
    
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    
    keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
    
    com.app.triapp
    
     defaultConfig {
    
            applicationId "com.app.live"
        }
    
    android:name="com.google.android.maps.v2.API_KEY
    
    android:name="com.google.android.geo.API_KEY"