【问题标题】:Pass build type ("debug"/"release") to ndk-build将构建类型(“debug”/“release”)传递给 ndk-build
【发布时间】:2019-02-24 18:24:57
【问题描述】:

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

#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?

【问题讨论】:

  • 仅供参考,这是how you can manage the different paths with CMake,但不是ndk-build。
  • 您还想在发布模式下构建其余的本机代码吗?否则会有APP_OPTIM 变量。
  • 不,我想在这个项目和依赖项中保持调试/发布的区别并使它们匹配。很好的发现,让我玩。
  • 宾果游戏。给个答案,我接受。作为记录,APP_OPTIM 设置为“debug”,即使“JNI debuggable”在调试类型上设置为 false,我已经检查过了。
  • "JNI debuggable" 表示您的 JNI 代码可以调试,它对“构建类型”没有任何意义。

标签: android gradle android-ndk ndk-build


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2021-06-09
    • 2021-12-25
    • 2017-06-14
    相关资源
    最近更新 更多