动态库so打包到android apk
16lz
2021-12-04
编译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
更多相关文章
- android上用opengl画线
- update android api
- android的WebView简单实例
- android代码实现自动关机
- Android编译系统一
- android 命令行创建工程
- xpose框架使用android studio
- Android(安卓)源码编译问题集锦
- android java 调用 .so 动态库实例