谷歌地图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
该项目将转到包资源管理器。现在转到您的项目(有错误)->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
然后查看映射活动的包名称,例如。 com.example.mypackagename 您可以将其与Google API控制台中的设置结合起来检查: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
从何处获取API密钥:66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6;com.example.mypackagename
第3步。清单元数据 检查元数据是否存在并包含正确的键。如果你发布你的应用程序,你需要一个不同的密钥AZzaSyDhkhNotUseFullKey49ylKD2bw1HM
对于地图:要使用的条目包括<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" />
在活动布局中(例如线性布局) 在我的情况下,我必须清理项目,每次我改变布局的东西。似乎是一只虫子 步骤8:使用Eclipse-Project-Clean。xmlns:map="http://schemas.android.com/apk/res-auto"
享受吧 我遇到了完全相同的问题,我只需要将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密钥:
如果改用Windows 7,则应使用以下命令: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
在尝试使用新密钥之前,最好从设备上完全卸载应用程序,因为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"