Android怎么调用第三方SO动态链接库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android怎么调用第三方SO动态链接库相关的知识,希望对你有一定的参考价值。

已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后代码中System.loadLibrary("xxx");再publicnativestaticintxxx_xxx_xxx();接下来就可以直接调用xxx_xxx_xxx()方法;2.第二种方案,创建自己的SO文件,在自己的SO文件里调用第三方SO,再在程序中调用自己的SO,这种比较复杂,需要建java类文件,生成.h文件,编写C源文件include之前生成的.h文件并实现相应方法,最后用androidNDK开发包中的ndk-build脚本生成对应的.so共享库;求解:网上说的第二种方案,是自己引用so库,最后声称JAR------解决方案--------------------------------------------------------首先要看这个SO是不是JNI规范的SO,比如有没有返回JNI不直接支持的类型。也就是说这个SO是不是可以直接当作JNI来调用。如果答案是否定的,你只能选第二个方案。如果答案是肯定的,还要看你是不是希望这个SO的库直接暴露给JAVA层,如果答案是否定的,你只能选第二个方案,比如你本身也是一个库的提供者。一般如果你只有SO,就说明这个是别人提供给你的,你可以要求对方给你提供配套的JAVA调用文件。1、这个要看这个SO是不是符合JNI调用的规范。还要看你自己的意愿。2、因为第二种方法最灵活,各种情况都可以实现。3、可以------解决方案--------------------------------------------------------看能不能直接从JAVA调用的最简单的方法就是看SO里的函数名是不是Java_XXX_XXX_XXX格式的是就可以,你可以自己写一个配套的JAVA文件,注意一下SO函数名和JAVA函数名的转换规则,或者向SO提供方索要;不是的话就选第二种方案吧。 参考技术A

两种方法

    包名和so的包名相同

    创建一个so调用第三方so

第二种方法不能贴网址,自行百度  android使用C/C++调用SO库

android中怎么调用第三方的so动态库啊~在线等...

在网上找了很多资料,参照 的做法。但是运行的时候,一直都是第三方的画面。感觉自己写的没有运行到~这是怎么回事?是android.mk写的有问题吗?下面是mk的代码,irrlicht是第三方的so文件,自己写的是irrlichtSample各种求助啊~~~在线等~~~[mw_shl_code=cpp,true]# # COSOperator.cpp was removed from IRROTHEROBJLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)ANDROID = importgl.cpp android-receiver.cppLOCAL_MODULE := irrlichtSampleLOCAL_ARM_MODE := arm LOCAL_CFLAGS := -O3 -DANDROID_NDK -DDISABLE_IMPORTGL -I./../include/ -I./include/ -I./LOCAL_SRC_FILES := \ $(ANDROID) \ app-android.cpp \ android-activity.cppLOCAL_SHARED_LIBRARIES=irrlichtLOCAL_LDLIBS := -lGLESv1_CM -ldl -lloginclude $(BUILD_SHARED_LIBRARY)include $(LOCAL_PATH)/prebuilt/Android.mk[/mw_shl_code]<a apporig="69285" target="_blank" onclick="javascript:return redirectWrapped(this);" class="thirdAppLink" href="http://www.eoeandroid.com/forum.php?mod=redirect

在目录下自建一个libs文件夹,里面再建armeabi文件夹,把.so后缀的文件拷贝进去,在目录里面添加路径就行了 参考技术A 请问你的问题解决了吗?我是在网上找了个别人移植好的demo,但是需要往里面加东西,修改了irrlicht源码,但是修改后,不起作用,不知道是什么原因?

以上是关于Android怎么调用第三方SO动态链接库的主要内容,如果未能解决你的问题,请参考以下文章

makefile-动态链接库(*.so)

Android 动态链接库 So 的加载

Linux下gcc编译生成动态链接库*.so文件并调用它转载

动态链接库.so和静态链接库.a

怎么查看一个动态库 需要链接 文件

JAVA调用动态链接库(dll)