安卓百度地图开发so文件android 引用so失败怎么解决

下次自动登录
现在的位置:
& 综合 & 正文
AndroidStudio下使用百度地图API引入jar包和so文件路径问题
最近开发使用到百度地图API,因为使用的是AndroidStudio的IDE,和官网示例使用的eclipse不一样,导致中间出现蛋疼的路径问题,网上找了半天才解决,现在写在这里供其他受害者借鉴。
官网上路径设置是:
armeabi文件夹是在libs之下,但是重点是:AndroidStudio的文件路径是不一样的!
AndroidStudio中是:
jar包的位置和官网一致,但是so文件的位置不同,应该单独在main下创建一个jniLibs文件夹,再在其下创建一个armeabi文件夹,so文件置于其中,这样,工程编译就不会报错了。
&&&&推荐文章:
【上篇】【下篇】最近的一个Android项目,由于跟C语言打上了交道,需要调用第三方的.so文件。关于.so 、JNI这些东西其实我还基本属于那种不熟悉甚至连了解都算不上的水平。这次我是在别人的项目上添加新功能,也就是在别人已经有armeabi、jni等这些文件夹的情况下,我再添加些.so(百度地图的libBaiduMapSDK_v3_0_0.so和liblocSDK4b.so)。上一个项目中也用过百度地图,我就按着百度给的开发指南做的,把这些.so文件和需要的.jar直接复制进libs和其目录下,然后就成功了。这次也是这么做,但一
run as 项目,发现拷贝进去的.so文件都被自动删除了,于是开始在网上搜罗信息,按照指示,果然发现了这个项目中还有jni这个文件夹,里面还有包括android.mk在内的好些文件,跟我以前自己做的项目,构成不太一样。搞了一整天,终于在这里发现了解决的办法
。起初还是出了些差错,原因是lib前缀的有无造成的。
1、在新建目录jni/prebuilt,添加so包
2、在原来的jni/.mk添加
LOCAL_PATH
:= $(call my-dir)
03.include
$(CLEAR_VARS) 《---在这个后面田间
06.include
$(CLEAR_VARS)
07.LOCAL_MODULE
08.LOCAL_SRC_FILES
:= prebuilt/libmppay.so
09.include
$(PREBUILT_SHARED_LIBRARY)
11.include
$(CLEAR_VARS)
12.LOCAL_MODULE
:= entryex
13.LOCAL_SRC_FILES
:= prebuilt/libentryex.so
14.include
$(PREBUILT_SHARED_LIBRARY)
注意:这里prebuilt/ 之后的文件名是带lib的,起初我没有带,结果还是错的。

参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2957次
排名:千里之外
原创:11篇
(1)(2)(2)(4)(2)后使用快捷导航没有帐号?
暂时没有人问过相似的问题,你可以做第一个提问题的人
查看: 1068|回复: 8
调用SDKInitializer方法crash(so文件位置正确)
本帖最后由 己巳骚年 于
18:13 编辑
开发环境是Android studio,jar包放在libs下,so文件放在src/main/jniLibs下。
帮看一下下面是怎么回事儿,东西放错地方了还是我少配置了什么。
05-26 18:01:53.331&&D/dalvikvm﹕ Trying to load lib /data/app-lib/cn.abc.app-7/libBaiduMapSDK_v3_4_0_15.so 0x42a906e0
05-26 18:01:53.331&&D/dalvikvm﹕ Added shared lib /data/app-lib/cn.abc.app-7/libBaiduMapSDK_v3_4_0_15.so 0x42a906e0
05-26 18:01:53.331&&W/dalvikvm﹕ JNI WARNING: JNI function FindClass called with exception pending
05-26 18:01:53.331&&W/dalvikvm﹕ in Lcom/baidu/platform/comjni/engine/JNIE.initClass:(Ljava/lang/OI)I (FindClass)
05-26 18:01:53.331&&W/dalvikvm﹕ Pending exception is:
05-26 18:01:53.331&&I/dalvikvm﹕ java.lang.NoSuchMethodError: no static method with name='postMessage' signature='(IIII)V' in class Lcom/baidu/vi/VM
05-26 18:01:53.331&&I/dalvikvm﹕ at com.jni.engine.JNIEngine.initClass(Native Method)
05-26 18:01:53.331&&I/dalvikvm﹕ at com.jni.engine.AppEngine.InitClass((null):-1)
05-26 18:01:53.331&&I/dalvikvm﹕ at com.baidu.mapapi.a.&clinit&((null):-1)
05-26 18:01:53.331&&I/dalvikvm﹕ at com.baidu.mapapi.SDKInitializer.initialize((null):-1)
05-26 18:01:53.331&&I/dalvikvm﹕ at com.baidu.mapapi.SDKInitializer.initialize((null):-1)
您用的模拟器是什么版本?
您用的模拟器是什么版本?
我用的是真机 三星S4
我用的是真机 三星S4
系统是多少?目前64位还不支持,建议您先试一下其他手机能否运行您的demo
系统是多少?目前64位还不支持,建议您先试一下其他手机能否运行您的demo ...
系统就是4.4.2的,应该和手机没什么关系。我试了几个其他手机也不好用。
简单的demo是可以运行的,应该是我这个程序的问题。
所以想问下这个输出应该是我哪里配置写的不对造成的。
本帖最后由 己巳骚年 于
13:05 编辑
系统是多少?目前64位还不支持,建议您先试一下其他手机能否运行您的demo ...
系统就是4.4.2的,应该和手机没什么关系。我试了几个其他手机也不好用。
简单的demo是可以运行的,应该是 ...
demo可以运行自己的不能运行吗,那你把libs拷贝过来一样的配置就可以了
混淆问题,你没有keep百度的类,导致jni里调用java的方法找不到
LZ,这问题解决了么。。。求解答
Powered by}

我要回帖

更多关于 eclipse 引用so库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信