赞
踩
从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",
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。