android - 将构建类型 ("debug"/"release") 传递给 ndk-build

标签 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_FILESdebug 风格硬编码为路径的一部分。不好。我想在那里使用“调试”或“发布”,具体取决于当前的构建类型。

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

最佳答案

编辑:迈克尔的 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

关于android - 将构建类型 ("debug"/"release") 传递给 ndk-build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855057/

相关文章:

Gradle 未发布自定义 jar 工件

iphone - 反调试怎么处理库打补丁?

android - 在android上编译需要STL的库

java - 使用 arraylist 和 foreach 时如何避免内存泄漏?

java - 在android中创建 "Push Up Game"

android - 为什么 Android 中的监听器不会造成内存泄漏?

java - Material DatePicker Range 获取选择的日期范围

android - 找不到 Gradle DSL 方法 'compile()'(firebase 冲突)

Android Studio 模拟器错误 - 以非零退出值 2 结束

android - 如何使用 Gnu makefile 为库编写 Android.mk