cordova安卓定位


安卓定位

cordova官方提供的插件cordova plugin add cordova-plugin-geolocation不支持安卓定位,支持ios定位。

參考項目

* 方案一百度地圖定位

  • 注意在你沒有獲得百度提供的密鑰之前不要去安裝百度地圖插件,因為在你輸入安裝命令行的時候,需要輸入密鑰參數,如果不輸入就無法安裝,如果亂輸入,最后調用插件的時候就不會成功,成功也是不穩定的。

* 申請密鑰

使用百度方案,需要獲取百度提供的密鑰,才能定位。
密鑰申請,需先創建應用
有兩個問題需要解決:

* 必填項發布版SHA1

在你打包的apk后,必須要對apk進行簽名操作,如果apk未經過簽名,是無法在安卓設備上進行安裝的。這樣設計的我聽說是未了維護開發者的權益,所以才加上這個步驟的。

  • 在這里需要區分好發布版SHA1和開發版SHA1

開發板SHA1:
在cordova的打包中,最后生成的debug.apk會被自動簽名,而要想知道debug.pak的簽名信息,默認會在C:\Users\.android關鍵實在.android文件夾里(本人的目錄位置C:\Users\.android)的debug.keystore文件里。
要想查看里面的信息需要打開cmd切換到debug.keystore文件的目錄里:
然后輸入:keytool -list -v -keystore debug.keystore
這是需要輸入密鑰,默認的密鑰是:android

發布版SHA1:
發布版的SHA1獲取,
1.首先需要我們先創建一個簽名文件,打開cmd直接輸入:

keytool -genkey -v -keystore D:\CordovaTest\MyTest\platforms\android\mytest-release.keystore -alias mytest -keyalg RSA -validity 20000

keytool -genkey -v -keystore [存放簽名文件的路徑(自己決定)]\[簽名文件名] -alias [別名] -keyalg RSA -validity [證書有效的天數]

D:\CordovaTest\MyApp\mytest.keystore:表示生成的證書及其存放路徑,如果直接寫文件名則默認生成在用戶主目錄下;
-alias mytest :表示證書的別名是mytest;
-keyalg RSA:表示采用的RSA算法;
-validity 20000:表示證書的有效期是20000天。

2.確認后,接下來需要輸入設置密鑰,輸入過程密碼是不可見的,自己記住就好。接下來就是一波填寫了,看個人情況,后面的都是可選項。后面會有一項讓你確認以上信息是否正確,填n會返回到密鑰設置那一步,重新填寫。填y確認到下一步,再回車確認。

這時候你就會發現你的存放簽名文件的目錄多了一個mytest-release.keystore文件,證明你已經成功的創建了一個簽名文件。
查看里面的信息同debug的一樣keytool -list -v -keystore mytest-release.keystore,只是改個名字。輸入剛剛自己設置的密鑰

現在你已經有了一個自己的簽名,接下來你需要將你的簽名綁定到你的apk里面,我們綁定的簽名當然是要綁定到發布版上,默認cordova打包好的release是不自動綁定簽名的。廢話不多說,記下來綁定簽名。

3.綁定簽名
首先打包出release版的apk,在cordova的項目目錄輸入:cordova build android --release,打包好后在MyTest\platforms\android\app\build\outputs\apk\release目錄下查看有一個app-release-unsigned.apk文件

將你之前創建的簽名文件mytest-release.keystore放到MyTest\platforms\android\app\build\outputs\apk\release目錄下

檢查apk是否已經簽名:
jarsigner -verify app-release-unsigned.apk
app-release-unsigned.apk: 需要檢測的apk名

將創建好的簽名文件,綁定到apk上:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore mytest-release.keystore -storepass abcdefg -signedjar ling.apk app-release-unsigned.apk mytest

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore [你的keystore] -storepass [keystore的密碼] -signedjar [簽名后的apk] [未簽名的apk] [keystore的別名]
  • 包名:
    在你創建cordova項目的時候已經定義了
    如:cordova create hello com.example.hello HelloWorld
    com.example.hello HelloWorld:就是你的包名
    hello:項目名
    如果你是這樣創建cordova項目的cordova create hello默認的包名會是io.cordova.hellocordova,如果你不確定,可以在D:\CordovaTest\MyApp\platforms\android\app\build\intermediates\manifests\full\debug目錄下的AndroidManifest.xml文件進行查看。
    或者在D:\CordovaTest\MyApp\platforms\android\app\build\intermediates\manifests\full\release目錄下查看AndroidManifest.xml文件查看package的值。

至此我們的開發板SHA1,發布版SHA1,和包名已經搞定了。

* 安裝插件

官方介紹地址

官方代碼:
cordova plugin add cordova-plugin-baidumaplocation --variable ANDROID_KEY="<API_KEY_ANDROID>" --variable IOS_KEY="<API_KEY_IOS>"
注釋:
cordova plugin add cordova-plugin-baidumaplocation --variable ANDROID_KEY="安卓密鑰值" --variable IOS_KEY="ios密鑰值"
本人實例:
cordova plugin add cordova-plugin-baidumaplocation --variable ANDROID_KEY="lrICUgCWeCCafgoGO7tGohrP6kOtE3BaT6fc" --variable IOS_KEY="lrICUgCWeCCafgoGO7tGohrP6kOtE3BaT6fc"

注意:IOS_KEY這一項你就算沒有也要填上,不然無法安裝。

  • 使用方法
baidumap_location.getCurrentPosition(function (result) {
    console.log(JSON.stringify(result, null, 4));
}, function (error) {
 
});

移除插件:cordova plugin rm cordova-plugin-baidumaplocation

* 方案二高德地圖定位

高德定位介紹地址

高德地圖獲取密鑰的過程基本和百度的一樣,這里就省略了。

安裝

cordova plugin add https://github.com/DaiHuaXieHuaKai/GaoDeLocation.git --variable API_KEY="12594614f5cdf06ceffd3c5493d25e5b"

使用方法:

// 進行定位
GaoDe.getCurrentPosition(successCallback, failedCallback);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM