遇到过集成第三方so的问题,目的是把so打包进APK中,总结如下:
1. 通过Eclipse中集成第三方jar包及so动态库, 这种适合利用sdk编写的应用
在工程下创建目录libs以及libs/armeabi,把jar放在的libs/下,把so放在libs/armeabi/下;
Projects-》Properties-》Java Build Path-》Libraries-》Add Library
编译之后jar包会被打进APK中,so也被打包在lib/armeabi/中;程序安装过程中,so被放在/data/data/<yourAppPackage>/lib/下;
2. 在源码中集成第三方jar包以及so动态库,这种方法适合需要系统API支持、需要特定签名等情况的应用
在工程下创建目录libs以及libs/armeabi,把jar放在的libs/下,把so放在libs/armeabi/下;
这种方式需要通过在AndroidManifest.xml中使用use-library标签或者修改Android.mk来实现;
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := libjar
LOCAL_JNI_SHARED_LIBRARIES := libso
# LOCAL_JAVA_LIBRARIES := libso
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := HiAPK
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=libjar/libjar.jar
LOCAL_PREBUILT_LIBS :=libso:libs/armeabi/libso.so
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)
LOCAL_JAVA_LIBRARIES := libso 这种方式so应该不会把so放进apk中(未验证)
可以参考这篇文章,需要注意的是文章中提到在源代码环境下集成so的方法,应该不能把so放到apk中;
http://blog.csdn.net/thl789/article/details/7918093