uniapp安卓app打包后获取位置置信息一直转圈解决方法
首先解释一下今天的问题,本来昨天高高兴兴的测试完了所有功能准备今天上班就打包APP上线了,
结果在今天早上把APP打包之后,出现了获取定位时底下的地址一直转圈的问题。
排错的方法:
- 先是在manifest.json --> App SDK配置中检查了勾选定位和地图服务
- 我在高德地图申请了key,也在manifest.json --> App SDK中填写了,但是在真机调试的时候,是可以正常选择的,结果项目打包之后就无法选择
- 接着对比了jer生成的sha1值与高德地图申请app的sha1值,重新生成了多次签名证书测试
解决方法
在manifest.json --> App SDK中勾选地图和定位服务,在App模块权限配置中勾选Maps,这样我们可以获取更多的位置服务权限。
然后绑定高德地图的应用,注意绑定的值的对比,高德地图上的sha1值不是对应证书的sha1值,而是对应的MD5值
申请高德地图Key SHA1和PackageName
uniapp申请使用地图,需要注册高德地图开发者账号。
创建应用
首先进入控制台
进入应用管理的我都应用创建一个新的应用
在应用当中添加key
这一步就是添加高德地图的key,接下来是寻找SHA1和PackageName的值
寻找SHA1
发布版安全码SHA1
应用打包时使用证书的指纹字符串(SHA1)
HBuilderX云端打包选择“使用自有证书”或本地离线打包时,填写应用使用证书的SHA1,查看证书的信息获取指纹中SHA1值,参考:https://ask.dcloud.net.cn/article/35777#keyinfo
HBuilderX云端打包选择“公共测试证书”时,SHA1值为:BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7,详情参考:https://ask.dcloud.net.cn/article/36522
HBuilderX云端打包选择“老版本DCloud公用证书”时,SHA1值为:BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58,详情参考:https://ask.dcloud.net.cn/article/68
注意:必须添写实际打包使用证书的SHA1值,否则可能无法显示地图或无法定位
xHBuilder打包步骤
这里我们选择第一个云打包
这里的Android包名一定要记住,这个包名就是高德地图添加应用key的时候PackageName,选择使用自有证书
到这里可以先停一下去弄个签名证书以及文件
签名证书
-
先去Oracle官方下载jre安装包
-
配置jre的环境变量地址
按住Windows+S搜索环境变量打开后点击环境变量
找到系统变量的Path变量选中
然后选择编辑
再点击新建,将你安装的jre地址复制到这里
每个人安装的路径都不一样
例如我的: D:\java\bin -
生成签名证书
环境变量配置好之后按住Windows+R 输入cmd进入控制台
使用keytool -genkey命令生成证书
最好先将目录切换到一个方便查找的地址,注意主要不要包含中文路径
该地址也是证书文件的存放地址
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
回车后会提示
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]: //输入国家/地区代号(两个字母),中国为CN,输入完成回车
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: //确认上面输入的内容是否正确,输入y,回车
Enter key password for <testalias>
(RETURN if same as keystore password): //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
- 查看证书信息
可以使用这个命令查看
keytool -list -v -keystore test.keystore
Enter keystore password: //输入密码,回车
然后就会有下面这样的信息
这里会获取到sha1值,但是注意在高德地图上填写sha1值的时候,不是被填写证书里面的sha1值,而是填写MD5值
继续回到高德地图添加key值
把证书签名的md5值跳入高德的sha1值里面,PackageName填写HBudilder打包时的Android包名, 然后点击提交,注意一个key只能绑定一个app包
这里获取到key
然后再去HBuilder中的manifest.json文件中找到APP模块配置中勾选定位与地图选择高德地图的android里面填写这个key
然后再回到打包
打包APP
证书别名选择是查看签名证书上的别名
私钥密码是之前创建证书时要求你输入的密码
证书文件填入证书的路径