在Android项目中(百度地图),报错:key验证出错,请在AndroidManifest.xml文件中检查key设置
2016-12-19 23:47
831 查看
在Android项目中(百度地图),报错:key验证出错,请在AndroidManifest.xml文件中检查key设置
首先,了解下什么是230错误:
为增强移动APP对百度开发SDK/API服务访问的控制,也避免恶意开发者对百度地图服务进行攻击,我们对Mobile类型(Android/IOS)的服务请求进行了安全码校验;所谓安全码即开发者在API控制台申请AK(AK和APP一一对应)时提供的APP签名的SHA1+”;”+包名
(具体可参考http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)。
请求服务必须要携带该安全码作为参数,不携带或者携带不一致的安全码给服务端,均会返回230错误。
一般的解决方式:
查看一下APP当前签名的SHA1值(注意不是MD5)和包名,然后去API控制台把查看该AK对应配置的安全码是否和
APP实际的一致
如果检查后数字签名、包名、API_KEY没错的话,就是下面说的第二种问题了。
总结下:
出现
baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg:
APP Scode码校验失败
的可能有两种
【1】AK错误 :那么就检查你的数字签名和包名有没有弄错
(我的检验后证明不是第一种错误)
【2】签名文件没有打包到程序
菜单栏选择 file -> project structure,选择应用的modules
改以下三处:
1. signing选项卡,新增一个 config , 加完后填入你的key file的alias(别名)、 password(密码)、存储文件的位置等信息。
2.flavors选项卡,里面的 signing config 选择你刚新加的 config
3.build types选项卡,里面的 debug 或 release, 都将 Signing Config 选择位新增加的config
这样每次debug出来的apk,就自带签名了
还有下面错误的:
还是不能解决或许这一种方法可以救你!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/7f2ac45e1ba34871e96faf3ed86b869b)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/00a24b1bd09cf579f922505ed538a2e8)
(初始化失败也有可能是开发者平台中的配置没配置好(SHA1值和应用包名))
[b][b][b]★解决:查看libs-armeabi-v7a文件夹中是否含有文件,[b]armeabi-v7a中的文件有可能 会对百度导航sdk冲突,删除该文件[/b][/b][/b][/b]
(另:
导航如果没有语音:
1.确认是否注册白名单http://app.navi.baidu.com/ttsregister/appinfo
2.确认asserts文件中是否含有BaiduNaviSDK_Resource_2.0.png和channel两个文件
[b][b][b][b]3.确认[b]libs-armeabi中是否含有libbd_etts.so文件,可到http://lbsyun.baidu.com/sdk/download下载;[/b][/b][/b][/b][/b]
项目集合时,百度地图各个功能的库冲突:
解决:到http://lbsyun.baidu.com/sdk/download下载整合后的库
实在不行进 最后一波详细的教你注册获取key 这样也许就可以了。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
申请密钥
Android SDK
http://developer.baidu.com/map/index.php?title=androidsdk/guide/key#.E7.94.B3.E8.AF.B7.E6.AD.A5.E9.AA.A4
1:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/43d093d41514c10c26e055c98791f87e)
2.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/bc43a3f80c5ee8e2921c40918fd97fc0)
3.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/c2bbebc98fabab2dcd248c13738d4530)
4.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/884a7be99ca827a2b29c958b1ff74f51)
5.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/7f8ffce17f957f43178f6315614f00cc)
6.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/50d26a2fb52e9a39faee6ff655c45810)
7.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/14ed3133fc2f1ff04ecc2974c41e3647)
8.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/4d1d5082986f2b78a7c4a0c762c9052b)
9.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/220136cf636ae845405b1468f7675db8)
10.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/5f5a3d6cecb34b8974b9f2e4e94e1ee4)
11.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/1e3ae09b9ab72f01ec8e110fd16dfa23)
12.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/9d783fad92e6719e66e8c4750556387d)
13.
首先,了解下什么是230错误:
为增强移动APP对百度开发SDK/API服务访问的控制,也避免恶意开发者对百度地图服务进行攻击,我们对Mobile类型(Android/IOS)的服务请求进行了安全码校验;所谓安全码即开发者在API控制台申请AK(AK和APP一一对应)时提供的APP签名的SHA1+”;”+包名
(具体可参考http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)。
请求服务必须要携带该安全码作为参数,不携带或者携带不一致的安全码给服务端,均会返回230错误。
一般的解决方式:
查看一下APP当前签名的SHA1值(注意不是MD5)和包名,然后去API控制台把查看该AK对应配置的安全码是否和
APP实际的一致
如果检查后数字签名、包名、API_KEY没错的话,就是下面说的第二种问题了。
总结下:
出现
baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg:
APP Scode码校验失败
的可能有两种
【1】AK错误 :那么就检查你的数字签名和包名有没有弄错
(我的检验后证明不是第一种错误)
【2】签名文件没有打包到程序
菜单栏选择 file -> project structure,选择应用的modules
改以下三处:
1. signing选项卡,新增一个 config , 加完后填入你的key file的alias(别名)、 password(密码)、存储文件的位置等信息。
2.flavors选项卡,里面的 signing config 选择你刚新加的 config
3.build types选项卡,里面的 debug 或 release, 都将 Signing Config 选择位新增加的config
这样每次debug出来的apk,就自带签名了
还有下面错误的:
[align=left]以下列举目前反馈较多的一些问题[/align] [align=left]1. 同样的key和key的配置,同一个打包的app,有的手机上key验证成功,有的手机上key验证失败?[/align] [align=left]说明:只要存在key验证成功的情况,key和key的相关配置都是正确的,不要再更换key或者修改key的配置,请从手机系统或者网络环境上检查原因。[/align] [align=left]推荐解决方法:[/align] [align=left] A. key验证依赖当前系统日期和时间,确认手机系统日期和时间是否正确。请先将日期时间调整为当前时间或者设置为自动网络获取。[/align] [align=left] B. key验证依赖网络通信,确认网络是否可用。请先在手机上使用浏览器访问网页测试网络是否连通。[/align] [align=left] [/align] [align=left][/align] [align=left]2. 正常打包后安装app,app中key验证成功,调试app的时候,key验证失败?[/align] [align=left]说明:同样的app已经验证成功,说明此app的key是正确的,不要再更换key或者修改key的配置,问题出在调试环境上,请从调试环境上检查原因。[/align] [align=left]推荐解决方法:[/align] [align=left] A. key验证依赖于https方式的网络通信,确认app的调试环境中是否有破坏https环境的因素。比如很多开发者在调试过程中,同时打开http或者https的抓包工具(Fiddler等),这种抓包工具会引起https的证书验证等一系列验证问题,导致key验证中网络交互失败,这种情况下,请关闭抓包工具后调试。[/align] [align=left][/align] [align=left]3. 直接连2/3/4G移动网络时key验证成功,连接wifi时key验证失败?[/align] [align=left]说明:key的验证需要通过https://api.map.baidu.com访问百度服务器。[/align] [align=left]推荐解决方法:[/align] [align=left] A. 如果wifi使用了网络代理服务器,请确认代理服务器支持https通信,并且确认能够通过域名api.map.baidu.com访问。[/align] [align=left] [/align] [align=left][/align] [align=left]4. 是否支持完全离线的key验证?[/align] [align=left]说明:key验证必须联网验证,不支持离线验证,联网服务器为https://api.map.baidu.com。[/align] [align=left]推荐解决方法:[/align] [align=left] A. 如果是使用限定的定向域名访问网络,请将api.map.baidu.com域名加入网络访问的白名单。[/align] [align=left]5. 定位SDK中可能出现第一次定位成功,后续均返回505错误。[/align] [align=left]说明:为了保证定位效率,定位和key验证是同时进行的,很有可能定位先处理完,所以在key验证错误的消息还未收到时已经显示定位成功了。此时说明key的配置肯定是错误的,所以请正确配置key。[/align] [align=left]推荐解决方法:[/align] [align=left] A. 按照官方配置文档,仔细检查key的配置。[/align] 6. 定位SDK并只使用GPS模式(不联网)定位返回505错误。 说明:定位SDK需要联网进行key验证,如果使用定位SDK而不使用网络定位(或者不开启网络),仅使用GPS定位的话,使用系统的定位接口即可 还是不知道怎么做请看下面: 常见问题解决方法汇总?请参考:key验证常见问题总结 如何获取SHA1?详细的方法请参考:Android Studio 和 Eclipse 中获取SHA1详解 如何获取AK或者key?详细的方法请参考:官方教程 鉴于Android版SDK中出现的大量key验证失败问题,基本上都是在API控制台申请AK的时候填写的 包名或者SHA1不正确导致的(包名或者SHA1的获取详见官方教程)。搜索log,若出现"Authentic ation Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败",则认真阅读下面的内 容。 如果想快速解决验证问题,可以使用下面提供的安全码校对工具获取APP正确的包名和SHA1值,并将这两个值更新到API控制台对应的AK上即可。安全码校对工具: ![]() MCodeCheck.zip (363.22 KB, 下载次数: 4152)。 打开应用后,找到自己开发的APP(默认最新安装的APP排在最上面),点击后会弹出对话框显示包名和 SHA1值。 ![]() 打开API控制台,将上面显示的包名和SHA1值更新到对应的ak中即可(注意:在填入SHA1和包名的时候不能带有空格)。 ![]() 特别注意:已经上线发布的APP中使用的AK不要轻易更新,否则可能会导致已 发布的APP鉴权失败。 详细的获取SHA1方法参考:Android Studio 和 Eclipse 中获取SHA1详解 区分debug版和release版签名文件打包的开发者特别注意: 很多开发者都有debug版和release版签名文件分别进行apk打包,如果你此刻安装的app是debug版签名 文件打包的,此处获取到的就是debug版的SHA1;相反如果你安装的app是release版签名文件打包的, 此处获取到的就是release版的SHA1。API控制台中,debug版签名文件对应的SHA1值填入"开发版SHA 1"中;同理,release版签名文件对应的SHA1值填入"发布版SHA1"中,这样能保证开发和测试的时候使 用同一个AK即可。 debug版签名文件:是指在开发过程中从Android Studio或者Eclipse中直接调试运行的apk使用的签名文件,一般是开发工具自动处理的。 release版签名文件:是指在提交测试或发布时候,选择指定的签名文件进行打包的签名文件,一般同一个APP使用一个统一的签名文件。 进一步解析什么师230错误:让大家明白点: 1.什么是230错误 为增强移动APP对百度开发SDK/API服务访问的控制,也避免恶意开发者对百度地图服务进行攻击,我们对Mobile类型(Android/IOS)的服务请求进行了安全码校验;所谓安全码即开发者在API控制台申请AK(AK和APP一一对应)时提供的APP签名的SHA1+”;”+包名(具体可参考http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)。 请求服务必须要携带该安全码作为参数,不携带或者携带不一致的安全码给服务端,均会返回230错误。 ![]() 2.如何解决230错误 目前我们发现主要是Android类型的APP存在该参与错误,安全码是sdk自动从APP配置中获取的,开发者无需自己填写。当出现230错误时,请开发者先查看一下APP当前签名的SHA1值(注意不是MD5)和包名,然后去API控制台把查看该AK对应配置的安全码是否和APP实际的一致,如果不一致请去API控制台手动修改一致即可~~ 再说一下出现这些的原因是是什么? 原因一:AK错误 仔细检查一下你的应用中使用的AK是否正确,和生成该AK的数字签名(SHA1)、包名是否跟你当前的程序一致。 如图是我获取的用来测试的AK: 生成该AK的数字签名和包名如下: 如果不正确就重新申请AK,我仔细检查了一下,我的AK是正确的,那么就有可能是第二个原因了。 原因二:签名文件没有打包到程序中 因为我调试的时候直接使用run来进行编译与执行,但这时并没有把key file打包进去,所以会出现错误。 如我的 签名文件的位置是:C:\Users\yu.android\debug.keystore 密码是:android 步骤如下: 菜单栏选择 file -> project structure,选择应用的modules(如果当前只有一个应用那么只会显示app),修改以下三处: 1. signing选项卡,新增一个 config , 加完后填入你的key file的alias(别名)、 password(密码)、存储文件的位置等信息。如图 2.flavors选项卡,里面的 signing config 选择你刚新加的 config 3.build types选项卡,里面的 debug 或 release, 都将 Signing Config 选择位新增加的config 这样每次debug出来的apk,就自带签名了 还有一些其他的小原因,如 : 1)检查你的网络连接是否正常, 2)AndroidManifest文件是否进行权限的申请, 3)AK是否有正确进行了配置 <application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="8w*******bGy3xz6h6Y7C" /> </application>1 2 3 4 5 1 2 3 4 5 承上所述,我的问题是这样解决的,不知道是否能帮(wu)到(dao)各位看官。 之前在搜索这个问题的时候,对某贴吧中有个人提出的几个点表示非常赞同 1)、在Android studio中,so文件应该放在src/main/jniLibs/armeabi/或者armeabi-v7a等中,而不是src/main/jniLibs/里(百度开发者中心的文档上介绍的时候是放置在jniLibs里的); 2)、百度地图操作中心点的类是MapStatus,不再是MapController; 3)、定位图标应绘制在定位图层上,而不是标注图层(标注图层上的mark点在移动地图的时候有飘移现象); 4)、android sutio在直接run的时候,安装在手机里的是debug版本,所以在测试的时候不能用release版的SHA1。 |
问题出现场景
1,按照官方文档提示,进行环境搭建,在虚拟机上试跑。程序界面报错:“key验证出错!错误码230;...”
解决方案
1,把C:\Users\XXXX(看自己机器具体情况)\.android文件夹下的debug.keystore文件复制到项目中。 2,具体复制到:项目/app文件夹下。(Project视图下)如果提示已有,就覆写。 3,运行。成功。
(初始化失败也有可能是开发者平台中的配置没配置好(SHA1值和应用包名))
[b][b][b]★解决:查看libs-armeabi-v7a文件夹中是否含有文件,[b]armeabi-v7a中的文件有可能 会对百度导航sdk冲突,删除该文件[/b][/b][/b][/b]
(另:
导航如果没有语音:
1.确认是否注册白名单http://app.navi.baidu.com/ttsregister/appinfo
2.确认asserts文件中是否含有BaiduNaviSDK_Resource_2.0.png和channel两个文件
[b][b][b][b]3.确认[b]libs-armeabi中是否含有libbd_etts.so文件,可到http://lbsyun.baidu.com/sdk/download下载;[/b][/b][/b][/b][/b]
项目集合时,百度地图各个功能的库冲突:
解决:到http://lbsyun.baidu.com/sdk/download下载整合后的库
实在不行进 最后一波详细的教你注册获取key 这样也许就可以了。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
申请密钥
Android SDK
http://developer.baidu.com/map/index.php?title=androidsdk/guide/key#.E7.94.B3.E8.AF.B7.E6.AD.A5.E9.AA.A4
1:
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
相关文章推荐
- 在Android项目中(百度地图),报错:key验证出错,请在AndroidManifest.xml文件中检查key设置
- 百度度地图总是提示key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置解决办法
- 百度度地图总是提示key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置解决办法
- 百度度地图总是提示key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置解决办法
- 验证出错,错误码:230,请AndroidManifest.xml文件中检查 kye 设置。
- 验证出错,错误码:230,请AndroidManifest.xml文件中检查 kye 设置
- AndroidManifest.xml文件--权限设置
- Android下HelloWorld项目的AndroidManifest.xml文件介绍
- eclipse导入已存在的android工程时遇到AndroidManifest.xml文件出错的问题(红叉)
- eclipse导入已存在的android工程时遇到AndroidManifest.xml文件出错的问题(红叉)
- Android中项目的AndroidManifest.xml文件的作用及改文件中相关属性的具体介绍
- 在android AndroidManifest.xml文件中怎样设置访问网络的权限
- 在AndroidManifest.xml文件中设置Android程序的启动界面方法
- AndroidManifest.xml文件设置各种常用权限
- android4.0 中设置网络出错com.android.settings.WirelessSettings没有在AndroidManifest.xml中声明
- android4.0 中设置网络出错com.android.settings.WirelessSettings没有在AndroidManifest.xml中声明
- Android 游戏项目中Manifest文件中的4个重要设置
- 使用make编译android项目时,修改了文件xml文件名称,导致编译出错的问题原因
- 安卓在AndroidManifest.xml文件中设置Android程序的启动界面方法
- Android上进程闪退,读取Manifest.xml配置文件出错