典型应用之——将库打进apk
转载??????????????????setContentView(tv);
????????}
????????public native int testme(int x, int y);???// 声明JNI
}
b)???????项层Android.mk
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user eng
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := mylib
LOCAL_JNI_SHARED_LIBRARIES := libtest //安装库
include$(BUILD_PACKAGE)
include $(LOCAL_PATH)/jni/Android.mk? //调用库的编译
include $(callall-makefiles-under,$(LOCAL_PATH))
c)????????jni程序(C程序实现)
#include<jni.h>
JNIEXPORT jint JNICALLJava_com_android_mylib_MyLibActivity_testme
(JNIEnv *env, jobject obj, jint x, jint y) { //JNI的实现
????????return x + y;
}
d)???????jni层Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
|LOCAL_MODULE_TAGS := user eng
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := jnitest.c
LOCAL_C_INCLUDES += \
???$(JNI_H_INCLUDE)
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)// 编译so库
4)???????执行结果
安装apk包后,用adbshell进入手机系统,然后ls/data/data/com.android.mylib/lib/可以看到库被安装到此处
2.???注意
对库进行调试不能adb install-r, 要先uninstall, 否则有时覆盖不了库
3.???参考
1)???????c回调java函数,可参数
http://blog.sina.com.cn/s/blog_4b650d650100lw43.html