这两天做项目的时候导入百度地图3.7版本的sdk出错了,遇到的错误是:
java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()J
at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
at com.baidu.platform.comapi.util.f.b(Unknown Source)
at com.baidu.platform.comapi.a.c(Unknown Source)
at com.baidu.platform.comapi.b.a(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
找了好久怎么也没找到,查了很多文档,终于找到原因了。具体的原因如下:
1.SDKInitializer.initialize(getApplicationContext());这个要放在setContentView()方法前面,顺序不要搞错。其实更建议放在application中初始化,官方也是如此建议。
2.导入jar和.so文件。根据官方文档这两个文件放置位置如图所示
当然,如果你挡在lib文件夹下也是可以的。在build.gradle文件中的Android节点下加入即可。这个千万不能搞错了,要一一对应,不然as是读不到so库的。
3.然而前两步都对应了问题还是没有解决,那么你就该看下这步了。检查下你是否把 基础地图 的 jar + (基础地图 + 计算 工具) 的 sdk . so 组合编译了,如果是的话你在SDKInitializer.initialize(getApplicationContext());初始化的时候需要改成
if (!"generic".equalsIgnoreCase(Build.BRAND)) { SDKInitializer.initialize(getApplicationContext()); }这样问题就能够迎刃而解了,可以正常使用百度地图sdk。这是个人总结得出,遇到该问题的同学都可以试试看哦。