根据NDK文档中的OVERVIEW.html,您可以设置环境变量" NDK_LIBS_OUT"使库去除$ PROJECT / libs以外的某个地方。
就我而言,Gradle似乎希望共享库转到$ PROJECT / src / main / jniLibs,所以我将NDK_LIBS_OUT设置为该目录。这有效。
现在我将如何在Android.mk或Application.mk中进行设置?我不想每次都要设置这个环境变量,特别是如果我将构建脚本交给其他人。
答案 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就可以了。