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

标签 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 代码构建完成后但在整个构建完成之前执行 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/

相关文章:

android - 对于 Windows,Gradle 文件路径太长

java - 加载较小版本的图像以提高 Android 性能

python - 如何使用 shell 脚本(和 makefile?)执行 python 程序

android - 在同一个 Android.mk 中编译多个共享库

c++ - 如何更改makefile中g++的版本

c - 构建 makefile 依赖/继承树

java - 从智能手机上的命令行终端测试 Android NDK

没有videoview的Android播放视频按钮

android - Google Maps v2 - Android Studio - OnLocationChanged 未被调用

Android Studio 4.1调试断点不起作用