cc_prebuilt_library_shared 模块无法识别 属性 "cflags"

unrecognized property "cflags" for cc_prebuilt_library_shared module

我正在为其中一个预构建库编写 Android.bp 文件。在 Android.mk 中,可以为预构建库添加 CFlags;然而,在蓝图的情况下,即 Android.bp,同样不起作用。下面是我正在做的事情的片段:

cc_prebuilt_library_shared {
    name: "samplelib",
    vendor_available:true,
    cflags: [
       "-Wall",
        "-Wextra",
        "-Werror",
    ],
    tags: [
        "optional",
        "eng",
        "debug",
    ],

    target: {
        android_x86:{
                 srcs: ["bin/x86/samplelib.so"],
                 compile_multilib: "32",
                 relative_install_path: "lib",
        },
        android_x86_64:{
                 srcs: ["bin/x86_64/samplelib.so"],
                 compile_multilib: "64",
                 relative_install_path: "lib64",
        },
   },
}

但是我收到以下错误:

/Android.bp:5:11: unrecognized property "cflags"

所以如果我没理解错的话,cflags不能和cc_prebuilt_library_shared模块一起使用;如果是这样的话,我们如何为这个模块启用 CFlags 呢?

这听起来可能不相关;但解决方法是将 LOCAL_STRIP_MODULE 设置为 None 并从 Android.bp 文件中删除 cflags。所以工作片段看起来像这样:

cc_prebuilt_library_shared {
    name: "samplelib",
    vendor_available:true,
    tags: [
        "optional",
        "eng",
        "debug",
    ],

    target: {
        android_x86:{
                 srcs: ["bin/x86/samplelib.so"],
                 compile_multilib: "32",
                 relative_install_path: "lib",
        },
        android_x86_64:{
                 srcs: ["bin/x86_64/samplelib.so"],
                 compile_multilib: "64",
                 relative_install_path: "lib64",
        },
   },
    strip: {
            none:true,
    },
}

注意设置为 none 和 cflags"strip" 属性也被删除。

注意:"strip" 属性是 makefile LOCAL_STRIP_MODULE 的蓝图版本。

为预构建的二进制文件设置 cflags 没有多大意义。它们在构建 C/C++ 文件时提供给编译器。由于您的库已经构建,因此您不需要它们。