Android6.0百度地图导入UnsatisfiedLinkError的问题
来源:互联网 发布:html json解析工具 编辑:程序博客网 时间:2024/06/07 09:33
前言
今天用AS写一个带有百度地图相关的项目时,发现了一个问题
提示
Error:Execution failed for task ':app:compileDebugNdk'.> Error: Your project contains C++ files but it is not using a supported native build system.Consider using CMake or ndk-build integration with the stable Android Gradle plugin: https://developer.android.com/studio/projects/add-native-code.htmlor use the experimental plugin: http://tools.android.com/tech-docs/new-build-system/gradle-experimental.
我就找原因,先点开了两个网页,发现一个是用CMake构建ndk的还一个是用experimental插件构件ndk项目的
这两个方式的共通点是都有c的源码,自己生成so文件,都不是我想要的
因为以前这么写没有问题,我在网上找相同的问题,大家都是说把targetVersion改成23以下就解决了,但是这不是我想要的,况且我这么用了也没解决问题,毕竟targetVersion迁移到23+是大势所趋
我找了下原因,应该是so文件的原因,在6.0中添加了一个安全性的规范,大概意思是说,不能引用外部的so库,这样会有安全性的问题
索性,我在网上找到了一个解决方案
http://blog.csdn.net/qq_29266921/article/details/50220821
这个博客给了我一个方案
在app级的build.gradle中添加这么一段代码
compile fileTree(dir: 'libs', include: '*.jar')
android { ... //设置so引入 task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") { destinationDir file("$projectDir/libs") baseName "Native_Libs2" extension "jar" from fileTree(dir: "libs", include: "**/*.so") into "lib" } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn(nativeLibsToJar) } //.so引入 end ...}
这个大概意思就是建立一个nativeLibsToJar任务栈(这里的相关知识请查阅gradle),这个任务栈将libs中的所有so文件打包到Native_Libs2中,这个压缩包中的结构是lib/(cpu)/*.so,打包方式是zip
当然,这里需要将所有的so文件按照标准结构放到libs文件夹中,不然是打不到的
完成后的目录结构如下
查看手机
我的手机有root权限,可以看到应用文件夹
我们看到,这里的so文件会被放到应用的内部文件夹下,这样就不会出现外部so的引用问题了
我的手机是魅族pro5,android5.1的系统,测试通过,6.0+暂时还没测试,不过工程起码能跑起来了
后续看看有没有别的6.0手机拿来用用看
项目代码可以git下来,github太慢,我放在了oschina的git服务器上
keystore我也放在项目中了,不过得自己修改下才能运行
https://git.oschina.net/kikt/HomeMap.git
- Android6.0百度地图导入UnsatisfiedLinkError的问题
- 百度地图UnsatisfiedLinkError问题
- Android百度地图开发遇到的问题 : UnsatisfiedLinkError
- 集成百度地图---UnsatisfiedLinkError
- 百度地图的导入
- 百度地图 android6.0版本权限
- android6.0,百度地图运行时权限。
- 关于Android6.0以上动态获取运行时权限、及无法正常运行百度地图API的问题
- 关于百度地图的导入包的问题!
- 调试百度地图时遇到的 java.lang.UnsatisfiedLinkError: initClass
- Android 百度地图时遇到的 java.lang.UnsatisfiedLinkError: initClass
- 百度地图android6.0以上地图不显示
- 百度地图sdk的导入
- 百度地图的问题
- 百度地图导航Android6.0初始化失败解决方法
- 百度地图SDK-Android6.0动态获取隐私权限
- 关于Android6.0 百度定位权限问题
- 关于Android6.0 百度定位权限问题
- Phalcon入门教程之目录结构
- C语言中绘图时闪烁的问题
- Linux系统下安装Angular2开发环境(Ubuntu16.0)
- 类在创建对象过程中做了哪些事
- FineUIMvc随笔_0
- Android6.0百度地图导入UnsatisfiedLinkError的问题
- 禁用QPCore service启动项?
- CS231n Assignment2--Q3
- NOJ 1075 社会关系网络 题解
- Java ConcurrentHashMap存入引用对象时也是线程安全的
- 什么是图和用邻接矩阵、邻接表表示一个图
- resnet训练问题
- PTA
- Retrofit2学习项目_1