1. 程式人生 > >【BaiduMapSDK系列】baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode碼校驗失敗

【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控制檯申請AKAKAPP一一對應)時提供的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.這個解決方案得感謝:方法提供者