NDK在构建脚本中设置环境变量

时间:2014-04-13 23:36:21

标签: android android-ndk

根据NDK文档中的OVERVIEW.html,您可以设置环境变量" NDK_LIBS_OUT"使库去除$ PROJECT / libs以外的某个地方。

就我而言,Gradle似乎希望共享库转到$ PROJECT / src / main / jniLibs,所以我将NDK_LIBS_OUT设置为该目录。这有效。

现在我将如何在Android.mk或Application.mk中进行设置?我不想每次都要设置这个环境变量,特别是如果我将构建脚本交给其他人。

2 个答案:

答案 0 :(得分:3)

正如克里斯所说,你不能从* .mk文件中操纵这个变量。

你可以做的是从Android.mk中复制这种行为,一旦它们被构建就移动或复制它们:

all: jniLibs/$(TARGET_ARCH_ABI) jniLibs/$(TARGET_ARCH_ABI): libs/$(TARGET_ARCH_ABI) $(call host-mkdir,$@) $(call host-cp,$<,$@)

否则,如果可以选择修改gradle构建脚本,则可以在build.gradle中进行设置,以便gradle将查找libs文件夹而不是jniLibs内的库:

android { sourceSets.main { jniLibs.srcDir 'src/main/libs' } }

答案 1 :(得分:1)

如果要自动化make文件,最好的选择是使用CMake。使用CMake组织源代码非常酷,因为您可以从Windows上快速生成Visual Studio解决方案文件并在Linux上生成文件,因此可以在不同平台上构建和测试代码,而无需维护两个单独的构建scripts

您的cosscompile文件将如下所示:

include(CMakeForceCompiler)
set(toolchain_path /opt/ndk/toolchains)
# Target system
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_VERSION 1)

# Compiler to build for the target
set(CMAKE_C_COMPILER /opt/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc)
set(CMAKE_FIND_ROOT_PATH /opt/ndk/toolchains)

所以,你只需要制作setups就可以了。