Android 下调用so库文件的方法
2013-03-14 10:53
417 查看
1. so库文件生成。
a).只用.c,.cpp生成库文件的。
它的android.mk文件如下:
include $(CLEAR_VARS)
LOCAL_MODULE := xxx //生成的库文件名称
LOCAL_SRC_FILES := xxx.cpp //用到的源文件
include $(BUILD_SHARED_LIBRARY)
运行cygwin,cd 到源文件目录下(既android.mk所在目录),执行$NDK_ROOT/ndk-build(这里的$NDK_ROOT/ndk-build指的是你所安装的NDK目录下的ndk-build),
会生成一个libxxx.so文件
java调用xxx.so
在java代码中应用该库。
static {
System.loadLibrary("xxx"); xxx是库文件去掉lib的名称
}
Libxxx.so要放到libs文件夹下的armeabi文件夹下
b).生成的库文件调用其他xxx.a文件的。
它的android.mk如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_SRC_FILES := xxx.cpp
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE = xxxx
LOCAL_SRC_FILES = xxxx.cpp
LOCAL_STATIC_LIBRARIES := xxx
include $(BUILD_SHARED_LIBRARY)
生成so文件同上。
java调用同上。
c).生成so文件动态调用其他so文件
cpp文件中代码:
比如so文件中有 double mub(double,double);
#include "dlfcn.h"
double (*p)(double x,double y);
const char* errmsg;
handle =dlopen("libSHello.so",RTLD_NOW);
if(handle == NULL) return -1;
dlerror();
*(void**)(&p) =dlsym(handle,"sub");
if((errmsg = dlerror()) != NULL) return -1;
double c = p(a,b);
dlclose(handle);
Android.mk文件如a)中。
生成so文件同上。
Java调用so文件如a)中。
a).只用.c,.cpp生成库文件的。
它的android.mk文件如下:
include $(CLEAR_VARS)
LOCAL_MODULE := xxx //生成的库文件名称
LOCAL_SRC_FILES := xxx.cpp //用到的源文件
include $(BUILD_SHARED_LIBRARY)
运行cygwin,cd 到源文件目录下(既android.mk所在目录),执行$NDK_ROOT/ndk-build(这里的$NDK_ROOT/ndk-build指的是你所安装的NDK目录下的ndk-build),
会生成一个libxxx.so文件
java调用xxx.so
在java代码中应用该库。
static {
System.loadLibrary("xxx"); xxx是库文件去掉lib的名称
}
Libxxx.so要放到libs文件夹下的armeabi文件夹下
b).生成的库文件调用其他xxx.a文件的。
它的android.mk如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_SRC_FILES := xxx.cpp
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE = xxxx
LOCAL_SRC_FILES = xxxx.cpp
LOCAL_STATIC_LIBRARIES := xxx
include $(BUILD_SHARED_LIBRARY)
生成so文件同上。
java调用同上。
c).生成so文件动态调用其他so文件
cpp文件中代码:
比如so文件中有 double mub(double,double);
#include "dlfcn.h"
double (*p)(double x,double y);
const char* errmsg;
handle =dlopen("libSHello.so",RTLD_NOW);
if(handle == NULL) return -1;
dlerror();
*(void**)(&p) =dlsym(handle,"sub");
if((errmsg = dlerror()) != NULL) return -1;
double c = p(a,b);
dlclose(handle);
Android.mk文件如a)中。
生成so文件同上。
Java调用so文件如a)中。
相关文章推荐
- Android使用JNI生成.so文件并调用(使用传统生成.h的方法)
- Android调用so文件(C代码库)方法详解
- [转]Android调用so文件(C代码库)方法详解
- [转]Android调用so文件(C代码库)方法详解
- Android 调用so文件中方法应该注意的 couldn't find "libXXX.so"
- Android调用so文件(C代码库)方法详解
- Android使用JNI生成.so文件并调用(使用CMake的方法)
- Android调用so文件(C代码库)方法详解
- Android调用so文件(C代码库)方法详解
- android JNI调用百度地图API,.so文件总是被自动删除的问题
- android基本架构,资源文件调用方法
- AndroidStudio调用so文件
- Android调用系统下载文件的方法,不跳浏览器
- android中调用assets中文件的方法
- Android Eclipse JNI 调用 .so文件加载问题
- Android Studio不提交so文件的解决方法
- Android studio调用.so库文件
- android studio导入so文件,并调用其中的方法
- Android开发工具之Android Studio--调用系统隐藏方法之操作aidl文件步骤
- 积累有关.so文件在Android中使用的方法: