动态库so打包到android apk

来源:互联网 发布:js导入导出表格插件 编辑:程序博客网 时间:2024/05/04 00:01

编译libjnisimple.so

 Android/development/samples/SimpleJNI/jni/Android.mk

# This makefile supplies the rules for building a library of JNI code for# use by our example of how to bundle a shared library with an APK.LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := samples# This is the target being built.LOCAL_MODULE:= libsimplejni# All of the source files that we will compile.LOCAL_SRC_FILES:= \  native.cpp# All of the shared libraries we link against.LOCAL_SHARED_LIBRARIES := \        libutils# No static libraries.LOCAL_STATIC_LIBRARIES :=# Also need the JNI headers.LOCAL_C_INCLUDES += \        $(JNI_H_INCLUDE)# No special compiler flags.LOCAL_CFLAGS +=# Don't prelink this library.  For more efficient code, you may want# to add this library to the prelink map and set this to true. However,# it's difficult to do this for applications that are not supplied as# part of a system image.LOCAL_PRELINK_MODULE := falseinclude $(BUILD_SHARED_LIBRARY)

注意:在jni的C++代码中,JNI_OnLoad要用C编译器编译(extern "C"),否则会出现dalvik找不到JNI_OnLoad函数并跳过初始化。

D/dalvikvm( 4581): No JNI_OnLoad found in /data/data/xxxxlib/libsimplejni.so 0x481f3b78, skipping init 

编译apk
Android/development/samples/SimpleJNI/Android.mk

# This makefile shows how to build a shared library and an activity that# bundles the shared library and calls it using JNI.TOP_LOCAL_PATH:= $(call my-dir)# Build activityLOCAL_PATH:= $(TOP_LOCAL_PATH)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := samplesLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := SimpleJNILOCAL_JNI_SHARED_LIBRARIES := libsimplejniLOCAL_PROGUARD_ENABLED := disabledinclude $(BUILD_PACKAGE)# ============================================================# Also build all of the sub-targets under this one: the shared library.include $(call all-makefiles-under,$(LOCAL_PATH))

注意:jni中实现的function,在java中必须要定义成native

编辑jni层文件编译so & apk

adb shell pm uninstall -f com.example.android.simplejni

adb install SimpleJNI.apk

原创粉丝点击