在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,就自带签名了
还有下面错误的:
以下列举目前反馈较多的一些问题
1. 同样的key和key的配置,同一个打包的app,有的手机上key验证成功,有的手机上key验证失败?
说
明
:只要存在key
验证
成功的情况,key和key的相关配置都是正确的,不要
再更换key或者修改key的配置,请从手机系统或者网络环境上检查原因。
推荐解决方法
:
A.
key
验证
依
赖
当前系
统日期和时间,
确
认
手机系
统日期和时间是否正确。请先将日期时间调整为当前时间或者设置为自动网络获取。
B.
key
验证
依
赖网络通信,确认网络是否可用。请先在手机上使用浏览器访问网页测试网络是否连通。
2. 正常打包后安装app,app中key验证成功,调试app的时候,key验证失败?
说明
:同样的app已经验证成功,说明此app的key是正确的
,不要
再更换key或者修改key的配置,
问题出在调试环境上,请从调试环境上检查原因。
推荐解决方法
:
A.
key
验证
依
赖
于
https
方式的网
络
通信,确
认app的调试环境中是否有破坏https环境的因素。比如很多开发者在调试过程中,同时打开http或者https的抓包工具(Fiddler等),这种抓包工具会引起https的证书验证等一系列验证问题,导致key验证中网络交互失败,这种情况下,请关闭抓包工具后调试。
3. 直接连2/3/4G移动网络时key验证成功,连接wifi时key验证失败?
推荐解决方法:
A.
如果wifi使用了网络代理服务器,请确认代理服务器支持https通信,并且确认能够通过域名api.map.baidu.com访问。
4. 是否支持完全离线的key验证?
推荐解决方法
:
A.
如果是使用限定的定向域名访问网络,请将api.map.baidu.com域名加入网络访问的白名单。
5. 定位SDK中可能出现第一次定位成功,后续均返回505错误。
说明:为了保证定位效率,定位和key验证是同时进行的,很有可能定位先处理完,所以在key验证错误的消息还未收到时已经显示定位成功了。此时说明key的配置肯定是错误的,所以请正确配置key
。
推荐解决方法
:
A. 按照官方配置文档,仔细检查key的配置
。
6. 定位SDK并只使用GPS模式(不联网)定位返回505错误。 说明:定位SDK需要联网进行key验证,如果使用定位SDK而不使用网络定位(或者不开启网络),仅使用GPS定位的话,使用系统的定位接口即可
还是不知道怎么做请看下面:
特别注意:已经上线发布的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错误 再说一下出现这些的原因是是什么?
原因一:AK错误 生成该AK的数字签名和包名如下: 如果不正确就重新申请AK,我仔细检查了一下,我的AK是正确的,那么就有可能是第二个原因了。 原因二:签名文件没有打包到程序中 步骤如下: 这样每次debug出来的apk,就自带签名了 还有一些其他的小原因,如 :
承上所述,我的问题是这样解决的,不知道是否能帮(wu)到(dao)各位看官。 之前在搜索这个问题的时候,对某贴吧中有个人提出的几个点表示非常赞同 |
还是不能解决或许这一种方法可以救你!
(初始化失败也有可能是开发者平台中的配置没配置好(SHA1值和应用包名))
★解决:查看libs-armeabi-v7a文件夹中是否含有文件,armeabi-v7a中的文件有可能 会对百度导航sdk冲突,删除该文件
(另:
导航如果没有语音:
1.确认是否注册白名单http://app.navi.baidu.com/ttsregister/appinfo
2.确认asserts文件中是否含有BaiduNaviSDK_Resource_2.0.png和channel两个文件
3.确认libs-armeabi中是否含有libbd_etts.so文件,可到http://lbsyun.baidu.com/sdk/download下载;
项目集合时,百度地图各个功能的库冲突:
解决:到http://lbsyun.baidu.com/sdk/download下载整合后的库
实在不行进 最后一波详细的教你注册获取key 这样也许就可以了。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
申请密钥
Android SDK
1:
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.