如何在 Android.bp 中包含我自己构建的共享库

问题描述 投票:0回答:1

我通过这个 Android.bp 代码编译了我的库:

cc_library_shared {
     name: "libult123",

     shared_libs: [
        "[email protected]",
        "[email protected]",
        "[email protected]",
        "libandroid",
        "libbase",
        "libbinder",
        "libcutils",
        "libEGL",
        "libGLESv1_CM",
        "libGLESv2",
        "libgui",
        "liblog",
        "libnativewindow",
        "libprotobuf-cpp-full",
        "libsync",
        "libtimestats",
        "libui",
        "libutils",
        "libSurfaceFlingerProp",
    ],

    static_libs: [
        "[email protected]",
        "libglTest",
        "libcompositionengine",
        "libframetimeline",
        "libperfetto_client_experimental",
        "librenderengine",
        "libserviceutils",
    ],

    header_libs: [
       "libnativewindow_headers",
    ],

    cflags: [
        "-DGL_GLEXT_PROTOTYPES",
        "-Wall",
        "-Werror",
        "-Wno-unused-variable",
    ],
    
    //local_src_files: ["ult_lib.h"],
    local_include_dirs: ["include"],
    export_include_dirs: ["include"],
    srcs: ["ult_lib.cpp"],

}

库目录结构为:

/include/ult_lib.h
/ult_lib.cpp

我想在另一个应用程序 C++ 代码中使用这个 libult123 库。 类似于#include 或类似的东西。

请告诉我如何将其包含在当前的 Android.bp 文件中,以便成功导入此编译库。 当前用于编译第二个应用程序的 Android.bp 文件是:

cc_prebuilt_library_shared {
    name: "libult123",
        //srcs: ["lib64/libult123.so"],
    target: {
        android_arm: {
            srcs: ["lib/libult123.so"],
        },
        android_arm64: {
            srcs: ["lib64/libult123.so"],
        },
    },
    strip: { none:true, },
}



cc_binary {
    name: "ult_pre3",

    srcs: [
                "test_ult_with_import.cpp"
        ],

    //gtest: true,

        shared_libs: [
                //"libult123",
                //"abcascsad",
        "[email protected]",
        "[email protected]",
        "[email protected]",
        "[email protected]",
        "libandroid",
        "libbase",
        "libbinder",
        "libcutils",
        "libEGL",
        "libfmq",
        "libGLESv1_CM",
        "libGLESv2",
        "libgui",
        "libhidlbase",
        "liblayers_proto",
        "liblog",
        "libnativewindow",
        "libprocessgroup",
        "libprotobuf-cpp-full",
        "libsync",
        "libtimestats",
        "libui",
        "libinput",
        "libutils",
        "libSurfaceFlingerProp",
    ],

    static_libs: [
        "[email protected]",
        "libglTest",
        "libcompositionengine",
        "libframetimeline",
        "libperfetto_client_experimental",
        "librenderengine",
        "libserviceutils",
    ],

    header_libs: [
           //"libult123",
           "libnativewindow_headers",
    ],

    cflags: [
        "-DGL_GLEXT_PROTOTYPES",
        "-Wall",
        "-Werror",
           "-Wno-unused-variable",
    ],

}

还尝试过:

.......
/*
cc_prebuilt_library_shared {
    name: "libult123",
        //srcs: ["lib64/libult123.so"],
    target: {
        android_arm: {
            srcs: ["lib/libult123.so"],
        },
        android_arm64: {
            srcs: ["lib64/libult123.so"],
        },
    },
    strip: { none:true, },
}
*/


cc_binary {
    name: "ult_pre3",

    srcs: [
                "test_ult_with_import.cpp"
        ],

    //gtest: true,

        shared_libs: [
        "libult123",
        "android.hardware.configstore-utils",
        "[email protected]",
.........

我面临的错误:

hardware/intel/external/ult_pre/test_ult_with_import.cpp:27:10: fatal error: 'libult123/ult_lib.h' file not found
#include <libult123/ult_lib.h>
         ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
17:12:34 ninja failed with: exit status 1
android makefile android-ndk android-library android-soong
1个回答
0
投票

使用“cc_library_headers”创建库头,并将其包含在“header_libs”中。

cc_library_headers { 名称:“libult123_header”, 导出_包含_目录:“./包含” }

在应用程序构建中, cc_二进制{ ..剪.. header_libs:["libult123_header"], ..剪.. }

© www.soinside.com 2019 - 2024. All rights reserved.