Android源码下编译自己的so库

环境:win7 64位,虚拟机ubuntu10.04,TI4.1.2源码

 

在源码下编译so文件是方便了,不要在下载android ndk 和cygwin啥的。

具体做法如下:

 

1 在源码新建的extral/mtJNItest/Android.mk

内容:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \

SerialPort.c

LOCAL_MODULE_TAGS := optional

LOCAL_C_INCLUDES := \

$(JNI_H_INCLUDE)

LOCAL_SHARED_LIBRARIES := libutils

LOCAL_PRELINK_MODULE := false

LOCAL_MODULE := libmyserialport

include $(BUILD_SHARED_LIBRARY)

 

2,编写c文件

在复制你的c代码,必须准守java调用的c代码哦Jint啥的

 

重点是c的代码如何写,不小心就会找不到方法

比如JNIEXPORT jint JNICALL Java_com_start_am335x_factorytest_utils_SerialPort_test

  (JNIEnv *env, jobject t){

return 110;

}

函数名字分析:

JNICALL Java是固定

com_start_am335x_factorytest是包名

utils是包下的类名

test才是函数名

还有一些数据类型以后再补充。。。

 

 

3 开始编译:

在源码目录下执行 make libmyserialport TARGET_PRODUCT=am335xevm

 

ok,在out回生成libmyserialport.so库

 4 使用so库

拷贝到libs下的armeabi开始调用了

需要注意的是

public native void test();

static {

System.loadLibrary("myserialport");//不是libmyserialport

}

 

你可能感兴趣的:(android系统开发)