【BaiduMapSDK系列】baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode碼校驗失敗
上一篇解說了怎麼解決Couldn't load BaiduMapSDK_v3_1_0這個問題,然而在這個問題解決後,仍有一個問題:
跑起來的demo顯示的只是網格,沒有具體的地圖展示
仔細看logcat,可以看到這樣一句:
baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode碼校驗失敗
看到這樣的errorcode,第一反應應該就是直接百度、google吧,但是本人很不走運,網上幾乎又是千篇一律的說是
安全碼不匹配的問題--建立應用時候 安全碼 填入有錯(簽名或者包名字錯了),或者說,和專案不對應
通過各種驗證,我的數字簽名,包名都沒有弄錯。
【最後證明其實是簽名檔案沒有打包到程式(module)中】
(android studio的簽名檔案沒設定,然後它預設的簽名和eclipse的簽名是不一樣的,給他設定一下和申請key的數字簽名一樣的簽名檔案就可以了)
首先,瞭解下什麼是230錯誤:
為增強移動APP對百度開發SDK/API服務訪問的控制,也避免惡意開發者對百度地圖服務進行攻擊,我們對Mobile型別(Android/IOS)的服務請求進行了安全碼校驗;所謂安全碼即開發者在API控制檯申請AK(AK和APP一一對應)時提供的APP簽名的SHA1+”;”+包名
(具體可參考http://developer.baidu.com/map/index.php?title=androidsdk/guide/key)。
請求服務必須要攜帶該安全碼作為引數,不攜帶或者攜帶不一致的安全碼給服務端,均會返回230錯誤。
一般的解決方式:
檢視一下APP當前簽名的SHA1值(注意不是MD5)和包名,然後去API控制檯把檢視該AK對應配置的安全碼是否和 APP實際的一致
如果檢查後數字簽名、包名、API_KEY沒錯的話,就是下面說的第二種問題了。
總結下:
出現
baidumapsdk:
Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode碼校驗失敗
的可能有兩種
【1】AK錯誤 :那麼就檢查你的數字簽名和包名有沒有弄錯
(我的檢驗後證明不是第一種錯誤)
【2】簽名檔案沒有打包到程式
選單欄選擇 file -> project structure,選擇應用的modules
改以下三處:
1. signing選項卡,新增一個 config , 加完後填入你的key file的alias(別名)、 password(密碼)、儲存檔案的位置等資訊。
2.flavors選項卡,裡面的 signing config 選擇你剛新加的 config
3.build types選項卡,裡面的 debug 或 release, 都將 Signing Config 選擇位新增加的config
這樣每次debug出來的apk,就自帶簽名了
現在執行在手機的地圖demo可以正常顯示百度地圖了,但是還沒定位的功能
定位功能--下一篇見曉吧
ps:
1.這個解決方案得感謝:方法提供者