获取 百度地图sdk需要的 两个SHA1值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取 百度地图sdk需要的 两个SHA1值相关的知识,希望对你有一定的参考价值。

参考技术A android开发使用地图已经是很普遍的事情了, 在申请百度地图SDK的时候, 需要两个SHA1值, 如图所示: 

1. 首先需要apk打包时用的jks文件, 如果没有的话创建一个 ( 不知道怎么创建的看这里 :  android 打包创建 jks 文件的整个过程  );

2. 在 android studio 中打开 Terminal 面板, 如图:

3. 执行命令: keytool -list -v -keystore jks文件路径\jks文件名称.jks -alias jks文件别名: 将图中标红的部分换成自己的, 如图:

```

//执行命令: 放到这里复制比较简单

keytool -list -v -keystore jks文件路径\jks文件名称.jks -alias jks文件别名:

```

注意: 如果执行命令时报出: keytool 不是内部命令, 请看这里:  解决 android studio 的 Terminal 面板执行 keytool 时报错问题

4. 输入命令后回车, 显示需要数据密码, 输入你的密码即可, 如图: 

5. 输入密码后回车, 可以看到, 我们需要的信息全部打印出来, 如图:

开发版的 SHA1 值获取方式和发布版的 SHA1 值是一样的, 只是命令不同而已, 这里给出命令即可, 不在截图示意, 如有问题, 请看以上截图内容

开发版的 SHA1 值获取命令: keytool -list -v -keystore C:\Users\geaosu\.android\debug.keystore

注意: 这里的 debug.keystore 是 .android 下自动生成的, 在使用该命令时, 需要将自己的 debug.keystore 文件以及路径 写上去 ( 如果在相应的文件夹中找不到 debug.keystore 文件, 请自行解决, 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ) ;

本期内容到此结束, 感谢观看, 我是大表哥, 我们下期见;

Xamarin.Android 集成百度地图SDK

前言:趁着周六闲得没事干,赶紧搞一搞Xamarin,最近也是怪无聊的,枯燥的生活不如打几行代码带劲;好了我们进入正题

我这篇文章时参考一位大佬的博客进行改变的,当然他写的需要一定的经验才可以看得懂,我为了小白还是改编了一下,这篇文章的传送门

正文:

  1.创建SDK

  2.获取SHA1

  3.项目集成

  4.问题处理

首先呢,你要注册百度账号,我相信大家都应该有了,那么登录之后,点击控制台,其百度地图的官方地址:http://lbsyun.baidu.com/

如图所示;创建SDK是需要SHA1的,那我们如何获取呢,找到你安装Xamarin的位置,一般都是C盘Program Files\\Java 要不然就是C:\\Program Files (x86)\\Java 

获取sha1的相关步骤:

1.进去Java文件夹里面之后再进入bin文件夹,再之后你看看有没有keytool.exe文件,如何有的话就没有任何问题了。

2.找到debug.keystore文件,一般是 C:\\Users\\ **********\\AppData\\Local\\Xamarin\\Mono for Android文件夹,还是一样如果你有这个文件,那也就没有任何问题。

3.打开Cmd,最好还是通过管理员进去工具。

  首先cd进去到你的keytool所在的文件夹bin中,输入命令 keytool.exe -list -v -keystore "%LocalAppData%\\Xamarin\\Mono for Android\\debug.keystore"   输入密钥库口令: android 回车;

找到SHA1那一行复制,一定要复制成功啊,要不然还得操作一遍,关闭窗口,继续干。

 还记得刚才的页面吗,写上你的SHA1,然后点击提交,就ok了。

百度地图SDK

打开界面http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 去下载你的SDK(这个操作你需要去创建Xamarin binding 项目去生成你的dll)这个过程就是将Java的jar变成.net的dll

为简单考虑,这里就不写这个了,直接去下载生成好的dll去用吧,因为现在百度地图的sdk版本有点高,我这里实在是生成不通过,只能去用4.5版本的,如果大佬有通过5.5版本的请联系楼主!!必有重谢

附4.5版本的dll一份,将就着用吧。地址:链接:https://pan.baidu.com/s/1yb2a1dldI6DZpHTwQrARAQ 提取码:zjbz(这个链接永远有效)

把这个dll放到bin文件夹中,添加引用即可。

再之后你就需要去配置下AndroidManifest.xml文件了(这个文件放的还挺深的,在Properties文件夹中) 以下是文件初始定义:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
android:versionCode="1" 
android:versionName="1.0" 
package="App1.App1">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
</application>
</manifest>

 还记得我们刚才生成的AK吗?如果你忘记保存,请自行寻找http://lbsyun.baidu.com/apiconsole/key

1.在其中添加开发密钥

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />   
</application>

 2.添加所需权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

其完整定义如一下收缩代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
          android:versionCode="1" 
          android:versionName="1.0" 
          package="App1.App1">
  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
  <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
    <meta-data android:name="com.baidu.lbsapi.API_KEY"  android:value="xxxxxxxxx" />
  </application>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.GET_TASKS" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
</manifest>

 在Main.xaml中添加地图控件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main">

     <com.baidu.mapapi.map.MapView
      android:id="@+id/bmapView"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:clickable="true" />

</RelativeLayout>

  在MainActivity.cs中初始化sdk,那么需要注意的是在SDK各功能组件使用之前都需要调用SDKInitializer.initialize(getApplicationContext());因此我们建议该方法放在Application的初始化方法中。

创建地图Activity,管理地图生命周期;这是以下代码的定义:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Com.Baidu.Mapapi;
using Com.Baidu.Mapapi.Map;

namespace Android
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
    public class MainActivity : Activity
    {
        MapView mMapView = null;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SDKInitializer.Initialize(ApplicationContext);
            SetContentView(Resource.Layout.content_main);
            mMapView = FindViewById<MapView>(Resource.Id.bmapView);
            var s = mMapView.Map;
            s.MapType = BaiduMap.MapTypeSatellite;
        }

        protected override void OnDestroy()
        {
            base.OnDestroy();
            mMapView.OnDestroy();
        }

        protected override void OnResume()
        {
            base.OnResume();
            mMapView.OnResume();
        }

        protected override void OnPause()
        {
            base.OnPause();

            mMapView.OnPause();
        }
    }
}

  那么最后最后一个步骤就是把你的包名改变以下就欧克了

  

 这就是基本的百度地图sdk集成过程,如果你有v5版本的生成dll经验,请联系我!!这几天出支付宝和微信的sdk集成。如果觉得这篇文章还算有用的话,点推荐吧兄台!!

上图就是结果,ok~就这样!

 

以上是关于获取 百度地图sdk需要的 两个SHA1值的主要内容,如果未能解决你的问题,请参考以下文章

android studio下百度地图sdk的初体验

百度地图SDk 使用

Xamarin.Android 百度地图 应用申请 SHA1

Xamarin.Android 集成百度地图SDK

详细教程论android studio中如何申请百度地图新版Key中SHA1值

Android中调用百度地图