unity-接入百度地图定位-android篇(AndroidStudio)
- 使用的是工具是 unity2018.2.8f1,Android Studio 2.4**(后面简称 AS)
- 之前写过一篇比较旧的 [unity-与Android交互(unity5、android studio)](unity-与Android交互(unity5、android studio))
- 测试工程地质: https://github.com/yangxuan0261/UnityAndroidPlugin
- 参考文章: https://blog.csdn.net/unity_http/article/details/79929454
前置物料
- 先准备好keystore的sha1值. 参考 [安卓提取 sha1](#安卓提取 sha1)
- 上百度开放平台申请 ak. 填入 开发版 和 发行版 的 sha1 及 应用的报名 (必须和unity中的一致)
使用 android studio 打包 unity 使用的插件jar
- 参考文章: android studio 打包.jar到unity调用 - https://blog.csdn.net/unity_http/article/details/79929454
接入百度地图
在上面打包jar插件的基础上, 增加几步就ok
将使用到的百度地图的相关 lib (jar, so动态库) 和 打包出的jar 都拷贝到 Unity 的 Assets\Plugins\Android\libs 目录下
修改一下 Assets\Plugins\Android 下的 AndroidManifest.xml 文件.
加入相关的权限. 可以参考官方demo 或者官方文档
填入申请好的 ak 值
1
2
3
4<!-- AK鉴权 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="EHvsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf" />
然后就可以打包测试了.
安卓提取 sha1
方法一 (推荐)
其实主要就是签名文件 keystore 文件里的信息, 可以直接找到 debug版本(在 %USER%.android 目录下) 和 release版本(自己生成) 的 keystore文件 拿出来查看一下就行.
1 | >keytool -list -v -keystore debug.keystore |
方法二
安卓apk 包用 压缩工具打开, 找到 META-INF/ANDROIDD.RSA 文件, 提取出来, 然后使用java工具 keytool.exe (在%JDK%/bin 目录下) 打开,
1 | > keytool -printcert -file ANDROIDD.RSA |
参考: http://www.voidcn.com/article/p-gpujntey-ps.html
android studio 如何修改包名
参考: https://www.jianshu.com/p/557e1906db1a
查看 keystore 信息
命令:
1
2
3
4>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
1
2
3
4<!-- 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版本
1
2dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'aapt.exe 意外停止. 报错:
com.android.ide.common.process.ProcessException: Failed to execute aapt
原因:在build.gradle文件中,
1
compileSdkVersion 和 buildToolsVersion 不匹配
报错:
Failed to resolve:com.android.support:appcompat-v7
把 build.gradle 文件中的这个值改成已有的
1
2
3dependencies {
...
compile 'com.android.support:appcompat-v7:26.+'构建 gradle 报错:
Execution failed for task ':app:lint'
在所有模块的 build.gradle 文件中加入
1
2
3
4
5android {
lintOptions {
abortOnError false
}
}参考: https://stackoverflow.com/questions/36860021/gradle-build-execution-failed-for-task-applint
构建gradle报错:
Could not get unknown property 'jniLibs' for source set 'main' of type
字段 sourceSets 放错位置, 应该在 android 标签内
构建gradle报错:
Error converting bytecode to dex xxx
Edit First
Clean
and thenMake Project
also works.参考: https://stackoverflow.com/questions/34352591/android-error-converting-byte-to-dex