這個也是我在做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配置中