今天這篇文章會給大家介紹三個問題:
1,接入API時出現invalid_user_scode問題
首先進行第一個大問題,接入高德地圖API時出現invalid_user_scode問題
因為項目需要接入高德地圖的API,在接入其它API時會出現類似問題,在進行定位的時候出現了下列問題
運行時log信息如下
可以看到,定位失敗有兩個原因:
1,錯誤代碼為10,定位服務啟動失敗。
2,錯誤代碼為7,key錯誤。
根據高德地圖的官方使用文檔的介紹,對相關問題進行處理
問題1:服務啟動失敗:檢查清單配置文件Androidmanifest.xml,服務已經配置完成,如下
<service android:name="com.amap.api.location.APSService"/>
后來對比高德地圖給的demo才發現,是因為少加了一個jar包,如下圖中未添加藍色選中的包
添加上之后,運行程序,進行定位操作,log信息如下:
由log所打印的信息,可以看出三點:
1,定位服務啟動失敗問題已解決,現已啟動成功
2,key錯誤問題仍舊存在
3,調用定位方法時是每隔一小段時間便進行一次定位
接下來,需要解決問題2。
問題2:key錯誤,官方文檔中說,請仔細檢查key綁定sha1與簽名的apk的sha1是否一致:
在解決該問題時發現我犯了兩個不該犯的錯誤:
第一,在build.gradle文件中忘記添加代碼:
android { signingConfigs { //調試版的keystore debug { storeFile file("keystore文件所在位置") storePassword "你規定的密碼" keyAlias "在創建keystore時你所填寫的alias" keyPassword "你規定的密碼" } //發布版的keystore release { storeFile file("keystore文件所用位置") storePassword "你規定的密碼" keyAlias "在創建該keystore文件時你所寫的alias" keyPassword "你規定的密碼" } } }
第二,在申請key時,我的sha1填寫格式錯誤,錯誤示范如下:
正確的填寫格式如下:
到此,我的程序已經可以實現定位,如下圖:
2,如何創建自己的keystore,以及如何修改發布版和測試版的keystore
現在討論第二個大問題,如何創建keystore文件,以及如何去修改發布版和開發版的keystore:
以Androidstudio為例進行keystore文件的創建:
接下來:
然后,圖中紅線標注的地方,是必須要記住的 ,因為需要在程序里使用
完成以上步驟后,你的keystore文件就創建成功了,接下來,你需要在build.gradle文件中使用,文中已經交到了,不再贅述,對不同 的keystore文件做相應修改即可,但要記住當你的keystore文件修改時也就代表你程序的sha1將要發生變化,一定要記得在網上對你的應用進行配置更新
3,如何查看keystore文件的sha1安全碼
第三個大問題,有了keystroe文件后,如何去查看所謂的sha1碼呢?
需要借助cmd,(如果不知道如何打開cmd,以及jdk的配置,請自行百度,博主不再多說)
在cmd中輸入如下命令:keytool -list -keystore <keystore位置>
然后輸入密碼,得到sha1: