代码之家  ›  专栏  ›  技术社区  ›  Seva Alekseyev

将生成类型(“调试/发布”)传递给ndk生成

  •  0
  • Seva Alekseyev  · 技术社区  · 6 年前

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

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

    0 回复  |  直到 6 年前
        1
  •  1
  •   Seva Alekseyev    6 年前

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