安卓百度地图开发so文件引用失败问题研究

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
博客园: 追风917

问题


首先,下面的问题基本都是在Android Studio下使用不当导致,eclipse是百度官方指定的工具,所以问题少。

我们来看,基本有三种类似错误提示:

1
Binary XML file line #13: Error inflating class com.baidu.mapapi.map.MapView
1
No implementation found for native Lcom/baidu/platform/comjni/map/basemap/JNIBaseMap;.Create()
1
Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()

分析


产生问题的原因基本有三种:

1 SDKInitializer 方法执行的位置不对

2 so文件找不到,大多都是这个问题

3 不同sdk版本混用

解决


三个原因,一一对照下,基本都可以解决。

对于第一种和第三种,请参阅官方开发指南:百度地图安卓开发指南

对于第二个原因,开发指南里也有说明,就是把so文件放到/src/main/jniLibs/armeabi目录下,如何添加请看我的另一篇文章:
Android Studio下添加引用jar文件和so文件

昨天在demo里正常,今天添加到项目里,出错了,最后原因还是so文件找不到,我已经把so文件放到/src/main/jniLibs/armeabi目录下了,但是还是不对,看了下我的gradle脚本里有这个东西:

1
2
3
4
5
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

嗯,没错,我指定so文件在libs目录下,而那里是没有的,因此出错,我从该脚本里删除后,搞定,还是按照as默认的目录来,google毕竟有其考量,具体是什么,暂时还不知道,你知道吗,麻烦告诉我下,谢谢!

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

文章目錄
  1. 1. 问题
  2. 2. 分析
  3. 3. 解决
,
Fork me on GitHub