高德地图V3.3.2在非arm64-v8a,armeabi的CPU架构手机上运行奔溃的问题
2016-06-17 13:52
399 查看
aMap高德地图,AMap_3DMap_V3.3.2_20160525.jar,官方提供的so包只有两种:arm64-v8a,armeabi,也就是说除了arm64-v8a,armeabi两种cpu架构,其他CPU架构的手机显示高德地图都会奔溃:
在我的magicbox(插件及而修复集一身的app)项目中,有一个方法
https://github.com/georgeyang1024/magicbox/blob/master/app/src/main/java/online/magicbox/app/PluginContext.java
在这段代码中:
可见,apk文件中,只需要提取Build.CPU_ABI对应的so文件,所以非手机的so文件都是无法使用的,如果你的项目使用这个版本的高德地图,有几个对策:
博客出处
1. 等待官方提供其他cpu架构的so文件
2. 改为其他地图sdk(百度地图支持度比较好)
3. 判断兼容性,所其他操作:
java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file ... couldn't find "libgdinamapv4sdk752.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076) at com.autonavi.amap.mapcore.MapCore.(MapCore.java:60) at com.amap.api.mapcore.AMapDelegateImp.(AMapDelegateImp.java:291) at com.amap.api.mapcore.j.(AMapGLSurfaceView.java:23) at com.amap.api.mapcore.j.(AMapGLSurfaceView.java:17) at com.amap.api.mapcore.as.a(MapFragmentDelegateImp.java:137) at com.amap.api.maps.MapView.onCreate(MapView.java:121)
在我的magicbox(插件及而修复集一身的app)项目中,有一个方法
https://github.com/georgeyang1024/magicbox/blob/master/app/src/main/java/online/magicbox/app/PluginContext.java
在这段代码中:
//释放so文件 String libPath = getFilesDir().getAbsolutePath() + "/lib/" + packageName + "_" + version; plugClassLoder = PlugClassLoder.plugClassLoderCache.get(dexPath); if (plugClassLoder==null) { ZipInputStream zipIn = null; int readedBytes = 0; byte buf[] = new byte[4096]; new File(libPath).mkdirs(); try { zipIn = new ZipInputStream(new BufferedInputStream(new FileInputStream(dexPath))); ZipEntry zipEntry = null; while ((zipEntry = zipIn.getNextEntry()) != null) { String name = zipEntry.getName(); if (!TextUtils.isEmpty(name)) { if (name.startsWith("lib/" + Build.CPU_ABI + "/")) { String fileName = name.substring(name.lastIndexOf("/")+1,name.length()); try { FileOutputStream fileOut = new FileOutputStream(new File(libPath,fileName)); while ((readedBytes = zipIn.read(buf)) > 0) { fileOut.write(buf, 0, readedBytes); } fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } } } zipIn.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { zipIn.closeEntry(); } catch (Exception e) { } } plugClassLoder = new PlugClassLoder(dexPath,context.getCacheDir().getAbsolutePath(),libPath,context.getClassLoader()); } }
可见,apk文件中,只需要提取Build.CPU_ABI对应的so文件,所以非手机的so文件都是无法使用的,如果你的项目使用这个版本的高德地图,有几个对策:
博客出处
1. 等待官方提供其他cpu架构的so文件
2. 改为其他地图sdk(百度地图支持度比较好)
3. 判断兼容性,所其他操作:
if (Build.CPU_ABI.equals("armeabi") || Build.CPU_ABI.equals("arm64-v8a")) { //支持高德地图 } else { //不支持高德地图 }
相关文章推荐
- 图像处理方向常用网站
- 国内在线测评网站对比?
- Shiro架构介绍
- Android binder架构解析
- 内容 + 推广,网站盈利的必要模式!哪些你还没做?
- 创业类网站建设日志1——搭建服务器svn以及前端开发环境
- 基于MHA和Galera Cluster实现MySQL高可用
- 10个学习Android开发的网站推荐
- Joomla网站无法安装Akeeba Backup的总结
- 游戏中学会写代码:这些编程学习网站不容错过
- 一步步构建大型网站架构
- 服务器对与网站的影响是什么
- ActiveMQ实现负载均衡+高可用部署方案
- 动静分离 ( 大白话 )
- 乐视秒杀架构解读:从零开始搭建百万每秒订单系统
- twemproxy使用笔记
- 自备份-Java模拟访问网站
- 高可用集群~上
- (?)企业部分之高可用集群(2)
- 10个学习Android开发的网站推荐