前言


在使用Android Studio集成百度map SDK的过程中,出现了地图不展示等各种错误,记录下来,以帮助初学者少走点弯路,由于使用百度地图需要使用百度的AK,而AK需要SHA1值与包名组合,网上对SHA1的获取众说纷纭,但是没有一个整体的描述,导致了就算获取了SHA1并获得AK之后,地图仍然报230错误的现象,于是此文来阐释下关于SHA1与AK的简单关系;



正文


首先说明一点,真机调试和打包时候所使用的签名是不一样的,调试(debug)时使用的是C:\Users\****\.android目录下的debug.keystore,而打包则是需要自己创建一个签名,因此获取SHA1的时候要根据是调试还是打包来判断要使用的keystore文件,但是在Android Studio中自己新建的签名文件已经不是keystore后缀的文件了,而是以jks为后缀的,于是这里我们需要获取两个SHA1值,一个调试、一个release,当然如果你只是调试那只用前面一个就可以了;然后在Baidu的API控制台中创建应用的时候,创建两个,一个debug AK,一个release AK,当然也是按个人需求来创建;


下面来演示这两套的获取与创建:


(1)DEBUG:


获取debug SHA1:




debug的keystore文件一般位于:C:\Users\****\.android目录下的debug.keystore


在此目录打开命令行,使用keytool命令:keytool -v -list -keystore debug.keystore


这里会让你输入密钥库口令,这你妹的谁知道,结果查了一下,你猜是啥? android 我真去了!


参见: Android debug.keystore的密码


reactnative yarn doctor 提示找不到android studio android studio 找不到sdk_Android




这样就获取到debug的SHA1值了,这样在真机调试的时候,使用这个SHA1创建的AK就能正常的使用地图了;



(2)release


这个我使用Android Studio的Terminal来获取:




首先自己创建一个release版本的证书,Build--》Generate Signed APK...


切换到相应目录,并使用命令:keytool -v -list -keystore ***.jks 这里***换为你创建的签名的名字:




reactnative yarn doctor 提示找不到android studio android studio 找不到sdk_android studio_02




这样就获取到相应的SHA1了;




创建AK:


reactnative yarn doctor 提示找不到android studio android studio 找不到sdk_Android_03




这样使用这两个AK,分别在debug或者release时使用,就能正常的使用百度地图了