将文件作为构建脚本的一部分复制到libs文件夹

时间:2012-02-21 07:40:23

标签: android makefile android-ndk

我有一个使用jni的android应用程序,我正在尝试在Eclipse中自动化构建过程(使用cdt插件)。我需要构建自己的静态库,我还需要使用一些预编译库 这意味着我需要 a)建立我自己的共享库(这里没有问题)
b)构建完成后,将现有库复制到libs / armeabi文件夹中(因为在构建过程中将清除此文件夹,我必须在每次构建后复制这些文件)

我在b)方面遇到了一些问题。我想要做的是在Android.mk文件中包含$(BUILD_SHARED_LIBRARY)后插入自定义shell脚本(在按原样执行时有效)。不幸的是,这不起作用,因为显然/ libs / armeabi文件夹仅在Android.mk文件完成后才被清除。

这是真的吗?有没有办法将后期构建脚本插入Android.mk?有没有办法在jni代码完成构建之后但在整个构建完成之前(例如在构建java部件并且应用程序开始执行之前)执行bash脚本?我虽然在eclipse c / c ++项目构建设置中必须有某种“post-build”脚本,但是没有这样的东西。

这是完整的Android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS := -llog

LOCAL_C_INCLUDES += $(LOCAL_PATH)

LOCAL_MODULE    := player
LOCAL_SRC_FILES := player.c

include $(BUILD_SHARED_LIBRARY)

$(shell ./copy-libs.sh) #this script will get called, but the files will be erased right after

1 个答案:

答案 0 :(得分:2)

好吧,看起来有一种更简单的方法来复制.so和.a libs而不需要使用自定义构建脚本。 NDK支持从ndk-r5开始的预构建模块,它们允许在构建过程中根据需要将.a或.so库复制到obj / lib文件夹中。

$ NDK_INSTALLATION_FOLDER / docs /./ p>中的PREBUILTS.html文件中提供了示例和完整说明。