unity-接入百度地图定位-android篇(AndroidStudio)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangxuan0261/article/details/84396212

title: unity-接入百度地图定位-android篇(AndroidStudio)
categories: Unity3d
tags: [unity, android, jni, 交互, 百度地图定位]
date: 2018-11-22 17:39:18
comments: false


前置物料

  1. 先准备好keystore的sha1值. 参考 [安卓提取 sha1](#安卓提取 sha1)
  2. 上百度开放平台申请 ak. 填入 开发版 和 发行版 的 sha1 及 应用的报名 (必须和unity中的一致)

使用 android studio 打包 unity 使用的插件jar


接入百度地图

在上面打包jar插件的基础上, 增加几步就ok

  1. 将使用到的百度地图的相关 lib (jar, so动态库) 和 打包出的jar 都拷贝到 Unity 的 Assets\Plugins\Android\libs 目录下

  2. 修改一下 Assets\Plugins\Android 下的 AndroidManifest.xml 文件.

    1. 加入相关的权限. 可以参考官方demo 或者官方文档

    2. 填入申请好的 ak 值

       <!-- AK鉴权 -->
              <meta-data
                  android:name="com.baidu.lbsapi.API_KEY"
                  android:value="EHvsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf" />
      
  3. 然后就可以打包测试了.


安卓提取 sha1

方法一 (推荐)

其实主要就是签名文件 keystore 文件里的信息, 可以直接找到 debug版本(在 %USER%.android 目录下) 和 release版本(自己生成) 的 keystore文件 拿出来查看一下就行.

>keytool -list -v -keystore debug.keystore
证书指纹:
         MD5: 20:06:20aaaaaaaaaaaaaaaaaaaaa
         SHA1: 11:E3:F8:aaaaaaaaaaaaaaaaaaa

方法二

安卓apk 包用 压缩工具打开, 找到 META-INF/ANDROIDD.RSA 文件, 提取出来, 然后使用java工具 keytool.exe (在%JDK%/bin 目录下) 打开,

> keytool -printcert -file ANDROIDD.RSA

参考: http://www.voidcn.com/article/p-gpujntey-ps.html


android studio 如何修改包名

参考: https://www.jianshu.com/p/557e1906db1a


查看 keystore 信息

  • 命令:

    >keytool -list -v -keystore aaa.keystore
    证书指纹:
             MD5: 08:D2:FA:87:aaaaaaaaaaaaaaaaaaaaaa
             SHA1: D8:18:67:Caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    

百度定位踩坑

  • 报错: NetWork location failed because baidu location service check the key is unlegal, please check the key in AndroidManifest.xml

    • 包名不对. android studio 修改包名 (refactor -> rename) 后还得修改 build.gradle(Module) 中的包名 applicationId "com.its.ares"AndroidManifest.xml 中的包名 package="com.its.ares"

    • ak 不对. 必须是百度开放平台申请的

      然后配到 AndroidManifest.xml

      <!-- AK鉴权 -->
      <meta-data
                 android:name="com.baidu.lbsapi.API_KEY"
                 android:value="EHvasdasdasdasdasdasdasd" />
      
    • 相关参考: https://alphagao.com/2017/02/23/get-location-in-service-with-baidu-map/



jar构建踩坑

  • android studio 报错: The ANDROID_DAILY_OVERRIDE value is outdated. Please set the ANDROID_DAILY_OVERRIDE environment variable to "21c0aef24ab2b18140facf573fe8f4f258301e2a"

    将 project 的 gradle 的工具改成其他版本, 不要用 alpha版本

        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.0'
    
  • aapt.exe 意外停止. 报错: com.android.ide.common.process.ProcessException: Failed to execute aapt

    原因:在build.gradle文件中,

    compileSdkVersion 和buildToolsVersion 不匹配
    
  • 报错: Failed to resolve:com.android.support:appcompat-v7

    build.gradle 文件中的这个值改成已有的

    dependencies {
    	...
        compile 'com.android.support:appcompat-v7:26.+'
    
  • 构建 gradle 报错: Execution failed for task ':app:lint'

  • 构建gradle报错: Could not get unknown property 'jniLibs' for source set 'main' of type

    字段 sourceSets 放错位置, 应该在 android 标签内

    参考: https://blog.csdn.net/changcsw/article/details/80020851

  • 构建gradle报错: Error converting bytecode to dex xxx

    Edit First Clean and then Make Project also works.

    参考: https://stackoverflow.com/questions/34352591/android-error-converting-byte-to-dex


猜你喜欢

转载自blog.csdn.net/yangxuan0261/article/details/84396212
今日推荐