这个问题似乎已被问到很多,但所有人都试图使用
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.