这个也是我在做uniapp混合app时遇到的问题,也是困惑了几天,网上也有很大相关文章,但是有些地方有些不清晰,让新手很困惑。
问题原因
我在项目中碰到两个问题
- 如果只需要用定位功能获取到经纬度坐标的,可以不用在manifest.json --> App SDK配置中勾选定位和地图服务(注意:部分国产Android手机可能必须勾选才能获取位置,看下图),但是项目中的地图功能却没法用
- 我在高德地图申请了key,也在manifest.json --> App SDK中填写了,但是却并没有生效,打包完连基本的经纬度都获取不到了,但是地图貌似能用,哈,这应该是大多数人遇到的问题
解决方法
解决方法就是,申请高德或者百度的key,在manifest.json --> App SDK中勾选地图和定位服务,在App模块权限配置中勾选Maps,这样我们可以获取更多的位置服务权限。
怎么在高德地图申请key
其实主要的问题是出在这里,大多数人配置完这个在app上还不生效,就是因为申请key时填的包名和云打包时填写的不一致造成的。
下面写一下申请流程
- 注册高德开放平台会员
- 创建新应用
- 在应用下创建key
这里安全码SHA1,我们可以用官方给的 BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58
在DCloud公用证书主要信息中有,如下
Alias name: hbuilder Creation date: 2014-9-29 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=DH, OU=数字天堂(北京)网络技术有限公司, O=数字天堂(北京)网络技术有限公司, L=海淀, ST=北京, C=86 Issuer: CN=DH, OU=数字天堂(北京)网络技术有限公司, O=数字天堂(北京)网络技术有限公司, L=海淀, ST=北京, C=86 Serial number: 5174dc8b Valid from: Mon Apr 22 14:45:31 CST 2013 until: Sun Aug 23 14:45:31 CST 3012 Certificate fingerprints: MD5: 59:20:1C:F6:58:92:02:CB:2C:DA:B2:67:52:47:21:12 SHA1: BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58 SHA256: D7:5C:1F:A2:B9:AE:86:7C:E6:88:A8:AD:C6:DE:AC:7C:D6:BA:96:F4:3A:75:1F:D1:0A:20:0F:A5:97:4A:C6:36 Signature algorithm name: SHA1withRSA Subject Public Key Algorithm: 1024-bit RSA key
详细请看 Android平台云端打包证书使用说明
说一下包名PackageName,大部分人会在这里出错,因为有格式限制,我们一般写这种格式:io.dcloud.hbuilder这种格式,但是不管写成什么,一定要和App云端打包时的安卓包名一致,注意,一定不要写成uniapp的appID(__UNI_FDXXXXX)
- 将生成的key填写到manifest.json --> App SDK配置中