1. 程式人生 > >android開發源代碼分析--多個activity調用多個jni庫的方法

android開發源代碼分析--多個activity調用多個jni庫的方法

red 設有 path 我們 trac sha ndk bin p s

android開發源代碼分析--多個activity調用多個jni庫的方法

有時候,我們在開發android項目時會遇到須要調用多個native c/jni庫文件,下面是本人以前實現過的方法,假設有知道其它方法,還望不吝不吝賜教。

比如,在androidproject裏有兩個activity,各自是activity1activity2。(能夠進入project文件夾bin/classes路徑下查看有哪些)。在這兩個activity裏都有調用jni,過程例如以下:

1、 activity1activity2裏分別聲明native c

比如:activity1.java

private native String StringFromActivity1Jni();

static

{

System.loadLibrary("activity1");

}

Activity2.java

private native String StringFromActivity2Jni();

static

{

System.loadLibrary("activity2"

);

}

2、 生成 .h文件

用命令:javah -classpath bin/classes/ -jni com.myprj.uitest.activity1javah -classpath bin/classes/ -jnicom.myprj.uitest.activity2 生成activity1activity2裏的頭文件

須要特別註意的是紅色部分。一定要存在。能夠進入project文件夾bin/classes路徑下查看。假設不能在jni下生成,那就mv吧。

3、 編寫Android.mk文件:

LOCAL_PATH := $(call my-dir)

//僅僅能有一個這個路徑

include $(CLEAR_VARS)

LOCAL_MODULE := activity1

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

$(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity1.c

LOCAL_LDLIBS := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := activity2

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

$(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity2.c

LOCAL_LDLIBS := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

須要註意的是:include $(BUILD_SHARED_LIBRARY)是生成動態庫,也能夠生成靜態庫include $(PREBUILT_STATIC_LIBRARY)

4、 編譯:
ndk-build


android開發源代碼分析--多個activity調用多個jni庫的方法