将构建类型(“调试” /“发布”)传递给ndk-build

时间:2019-02-24 18:24:57

标签: android gradle android-ndk ndk-build

Android Studio,一个带有NDK库的项目,使用ndkBuild和Android.mk。我的构建使用静态库依赖项,并且静态库作为调试和发布版本存在于单独的目录中。生成文件为:

#Ref to libfoo
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := $(FOOPROJECT)\foo\build\intermediates\ndkBuild\debug\obj\local\$(TARGET_ARCH_ABI)\libfoo.a
include $(PREBUILT_STATIC_LIBRARY)

LOCAL_SRC_FILES具有debug风格的硬编码,作为路径的一部分。不好。我想在其中使用“调试”或“发布”,具体取决于当前的构建类型。

makefile中当前的构建类型是否可以作为变量使用?如果没有,是否可以通过gradle文件将其传递给ndk-build?

1 个答案:

答案 0 :(得分:1)

编辑:迈克尔的APP_OPTIM更好。他写下后,我会接受的。现在,我将其留在这里。


找不到内置变量,做了Gradle技巧:

buildTypes {
    release {
        externalNativeBuild {
            ndkBuild {
                arguments "BUILD_TYPE=release"
            }}
    }
    debug {
        externalNativeBuild {
            ndkBuild {
                arguments "BUILD_TYPE=debug"
            }}
    }
}

然后Android.mk中的行变为:

LOCAL_SRC_FILES := $(FOOPROJECT)\foo\build\intermediates\ndkBuild\$(BUILD_TYPE)\obj\local\$(TARGET_ARCH_ABI)\libfoo.a