当前位置:   article > 正文

Android 编译系统之Android.bp_android.bp 选择编译的源文件

android.bp 选择编译的源文件

从Android 7.0 (N)开始, Google开始逐步使用Android.bp代替原来的Android.mk进行编译.
Google称之为soong, 具体可以参考:
https://android.googlesource.com/platform/build/soong

使用Android.bp编译时, 目前还存在一些问题:
1.对C/C++代码, 如果需要使用宏开关时, 由于android整个编译系统还没完全切换过来, 导致 在项目mk文件定义的开关, 还不能生效.
2.对于条件编译, 需要添加go文件进行控制.

对于问题1, 一是通过export命令, 把相应的开关设置到环境变量, go文件就能读取到了.
二是, 把开关集中放到某一个文件中, 然后在go文件中直接读取这个文件.
对于问题2, 下面会通过例子给出一个说明.
下面是一个libsysutils模块Android.bp的内容: libsysutils_defaults以上及相关内容是新添加关键部分, 用来支持go文件进行条件编译. 如果想让TLV_FEATURE_ENABLED起作用, 需要export TLV_FEATURE_ENABLED=yes.

Android.bp:

bootstrap_go_package {
    name: "soong-libsysutils",
    pkgPath: "android/soong/system/core/libsysutils",
    deps: [
        "blueprint",
        "blueprint-pathtools",
        "soong",
        "soong-android",
        "soong-cc",
        "soong-genrule",
    ],
    srcs: [
        "libsysutils.go",
    ],
    pluginFor: ["soong_build"],
}

libsysutils_defaults {
    name: "libsysutils_defaults",
}
cc_library_shared {
    name: "libsysutils",
    vendor_available: true,

    defaults: [
        "libsysutils_defaults",
    ],

    srcs: [
        "src/SocketListener.cpp",
        "src/FrameworkListener.cpp",
        "src/NetlinkListener.cpp",
        "src/NetlinkEvent.cpp",
        "src/FrameworkCommand.cpp",
        "src/SocketClient.cpp",
        "src/ServiceManager.cpp",
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/221755
推荐阅读
相关标签
  

闽ICP备14008679号