我有一个使用 jni 的 android 应用程序,我正在尝试在 Eclipse 中自动化构建过程(使用 cdt 插件)。我需要构建自己的静态库,还需要使用一些预编译库。
这意味着我需要
a) 构建我自己的共享库(这里没问题)
b) 构建完成后,将现有的库复制到 libs/armeabi 文件夹中(因为这个文件夹将在构建过程中被清除,我必须在每次构建后复制这些文件)
我对 b) 有一些疑问。我想要做的是在 Android.mk 文件中包含 $(BUILD_SHARED_LIBRARY) 之后插入自定义 shell 脚本(按原样执行时有效)。不幸的是,这不起作用,因为显然/libs/armeabi 文件夹仅在 Android.mk 文件完成后才会被清除。
这是真的吗?有没有办法将构建后脚本插入 Android.mk?有什么办法可以在 jni 代码构建完成后但在整个构建完成之前执行 bash 脚本(例如,在构建 java 部分并且应用程序开始执行之前?)?我虽然在 eclipse c/c++ 项目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
最佳答案
好吧,看起来有一种更简单的方法可以复制 .so 和 .a 库,而无需借助自定义构建脚本。 NDK 支持从 ndk-r5 开始的预构建模块,它们允许在构建过程中根据需要将 .a 或 .so 库复制到 obj/lib 文件夹中。
示例和完整说明可在 $NDK_INSTALLATION_FOLDER/docs/内的 PREBUILTS.html 文件中找到。
关于android - 作为构建脚本的一部分将文件复制到 libs 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373831/