您的位置:首页 > 移动开发 > Android开发

Android 打包so动态库文件到APK

2016-01-30 15:37 666 查看
原文:http://blog.csdn.net/phiger/article/details/6233882

有时由于项目需要使用JNI来调用.so文件,需要将so文件一起打包到APK文件中,这有两种方法:

1. 使用mm命令和Android SDK源代码一起编译。
在project根目录创建一个Android.mk,文件内容如:

[c-sharp] view
plain copy

LOCAL_PATH:= $(call my-dir)   

include $(CLEAR_VARS)   

LOCAL_MODULE_TAGS := user  

LOCAL_SRC_FILES := $(call all-subdir-java-files)   

LOCAL_PACKAGE_NAME := jnisample   

LOCAL_JNI_SHARED_LIBRARIES := libtest   

include $(BUILD_PACKAGE)   

include $(LOCAL_PATH)/jni/Android.mk   

# Use the folloing include to make our test apk.   

include $(call all-makefiles-under,$(LOCAL_PATH))  

LOCAL_JNI_SHARED_LIBRARIES := libtest 就是把so文件放到apk文件里的libs/armeabi里,而include $(LOCAL_PATH)/jni/Android.mk为了编译so文件。
在Project目录下创建jni文件夹,在jni文件里创建Android.mk,内容如下:

[c-sharp] view
plain copy

LOCAL_PATH := $(call my-dir)  

  

include $(CLEAR_VARS)  

MY_ANDROID_SRC := $(ANDROID_BUILD_TOP)  

LOCAL_CFLAGS += -DHAVE_CONFIG_H -DKHTML_NO_EXCEPTIONS -DGKWQ_NO_JAVA  

LOCAL_CFLAGS += -DNO_SUPPORT_JS_BINDING -DQT_NO_WHEELEVENT -DKHTML_NO_XBL  

  

LOCAL_SHARED_LIBRARIES += libskia libsurfaceflinger liblog  

LOCAL_PRELINK_MODULE := false  

  

LOCAL_CFLAGS += -DPACKED=""  

  

LOCAL_MODULE    := libtest  

LOCAL_SRC_FILES := Ltest.cpp / BlurFilter.cpp / clz.cpp   

LOCAL_C_INCLUDES := $(MY_ANDROID_SRC)/external/skia/include/core /  

$(MY_ANDROID_SRC)/external/qemu/android /  

$(MY_ANDROID_SRC)/frameworks/base/include /  

$(MY_ANDROID_SRC)/system/core/include /  

$(MY_ANDROID_SRC)/frameworks/base/libs/surfaceflinger /  

$(MY_ANDROID_SRC)/system/core/include/pixelflinger /  

$(JNI_H_INCLUDE)  

  

include $(BUILD_SHARED_LIBRARY)  

LOCAL_C_INCLUDES += /$(JNI_H_INCLUDE) 为了让jni编译通过,因为工程通过jni调用本地库.

把工程文件放到SDK platform/packages/apps目录下,然后进入该目录,命令里输入mm,进行该工程的编译,这样编译出来的apk,在libs/armeabi文件夹里面包含so文件。

 2.使用Eclipse build APK文件,只要将so文件放在与src平级的地方创建目录结构libs/armeabi,文件名格式如:libs/armeabi/libxxx.so.

    eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: