android – 如何在APK中打包预建的共享库

这个问题似乎已被问到很多,但所有人都试图使用
eclipse将图书馆打包到APK中.

但是,我的要求是使用
Android构建系统将库打包到APK中(稍后将使用System.loadLibrary()通过Java加载),即我想写一个执行此工作的Android.mk文件.

需求:
1.预建共享库:libTest.so
2.编写一个Android.mk文件,将其打包到apk中的libs / armeabi-7.

我不太了解我正在使用的构建系统,但在导出所需的环境变量后使用“mm”命令完成编译.

当我为LOCAL_JNI_SHARED_LIBRARIES提供libTest时,它会尝试在其导出的路径中找到它并且无法在那里找到它,因此构建失败.

任何人都可以提供任何关于编写Android.mk文件的指示,该文件将我的预建共享库打包到APK中吗?

最佳答案 为了预先建立您的本地库,您必须这样做

>在项目文件夹中创建jni文件夹
>在项目文件夹中创建libs文件夹
>将Adnroid.mk make文件添加到jni文件夹,它应该是
这个:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS    := -llog
LOCAL_MODULE    := Test
LOCAL_SRC_FILES := Test.cpp

include $(BUILD_SHARED_LIBRARY)

注1:Test.cpp是包含本机方法实现的主库源文件.您可以添加更多源作为空格分隔列表.

注意2:不包括标题,它们会自动包含在内.

注3:如果需要启用C STL,则创建另一个make文件–Application.mk,将其添加到jni文件夹并在其中设置APP_STL:= stlport_static标志.

然后你将不得不建立一个建设者.有关如何执行此操作,请参阅this article

完成这些步骤后,构建器将在libs文件夹中创建您的库,该文件夹将在构建整个应用程序时自动打包到apk中.

注意:您的库名称应为小写,这是Linux惯例.将自动添加“lib”前缀,因此最终的库名称将为libtest.so.

点赞