Android.bp文件简介_local_include_dirs-CSDN博客
Android.bp解析与使用看这篇就够了 - 知乎 (zhihu.com)
Android.bp Build Docs (android-8.0.0-r9) · 零壹軒·笔记
cc_library_shared {
name: "libun7zip",
srcs: [
"7z/*.c",
"7z/src/*.c",
],
local_include_dirs: [
"7z/src/",
],
vendor: true,
}
soong_config_module_type {
name: "ukeyservice_android_app",
module_type: "android_app",
config_namespace: "xxxx",
value_variables: ["project"],
properties: ["srcs"],
}
同时,Android.mk可以引用Android.bp中的模块,反之Android.bp不能引用Android.mk中的模块。
说明
cc_library_shared :编译成动态库,类似于Android.mk中的BUILD_SHARED_LIBRARY
cc_binary:编译成可执行文件,类似于Android.mk中的BUILD_EXECUTABLE
name :编译出的模块的名称,类似于Android.mk中的LOCAL_MODULE
srcs:源文件,类似于Android.mk中的LOCAL_SRC_FILES
local_include_dirs:指定路径查找头文件,类似于Android.mk中的LOCAL_C_INCLUDES
shared_libs:编译所依赖的动态库,类似于Android.mk中的LOCAL_SHARED_LIBRARIES
static_libs:编译所依赖的静态库,类似于Android.mk中的LOCAL_STATIC_LIBRARIES
cflags:编译flag,类似于Android.mk中的LOCAL_CFLAGS
注释
Android.bp使用单行注释//和多行注释/* */两种方式。
1.5、编译成Native静态库
Android.mk
include $(BUILD_STATIC_LIBRARY)
Android.bp
cc_library_static {
......
}
设置debug
cc_binary {
name: "your_module_name",
srcs: ["your_source_file.c"],
cflags: ["-g"],
}
cppflags: ["-g"]
cflags: ["-g"], # 强制添加调试信息的编译选项
ldflags: ["-g"], # 强制添加调试信息的链接选项
strip: {
none: true,
},
#2
cc_binary {
name: "my_app",
srcs: ["src/**/*.cpp"],
shared_libs: ["libutils"],
stl: "c++_static",
cflags: ["-Wall", "-Werror"],
product_variables: {
debug: {
cflags: ["-DDEBUG", "-O0", "-g"],
},
release: {
cflags: ["-DNDEBUG", "-O2"],
},
},
}
在这个例子中,cc_binary是一个构建规则,用于生成C语言的可执行文件。name是模块的名称,srcs是源代码文件列表,cflags是编译选项数组,包含-g标志。
-g是GCC编译器的一个选项,用于生成调试信息,使得使用像GDB这样的调试器时能够对应用程序进行源码级调试。
请注意,这个设置只适用于本地代码,对于Android应用项目中的Java代码,通常使用Android Studio和其内置的调试工具进行调试,不需要在编译过程中添加特殊的调试选项。
android.mk 编译 debug 版本
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mymodule
LOCAL_SRC_FILES := mymodule.c
LOCAL_CFLAGS += -g -DDEBUG -O0
include $(BUILD_SHARED_LIBRARY)
vintf_fragments
清单 | Android Open Source Project
init_rc
Android 10 根文件系统和编译系统(二十):Android.bp预编译_android.bp prebuilt-CSDN博客
shared_libs
Android.bp文件是Android 7.0及更高版本中引入的一种构建脚本文件,用于描述和管理项目的编译过程。下面是Android.bp文件的一些详解:
概述:Android.bp文件是使用Starlark语法编写的,它是一种基于Python的轻量级脚本语言。Android.bp文件用于定义模块和构建规则,与之前的Android.mk文件相比,更加灵活和易于维护。
模块定义:Android.bp文件中可以定义多个模块,每个模块都有一个唯一的模块名。模块可以是可执行文件、静态库、共享库等。通过cc_library、cc_binary等函数来定义模块。
源文件定义:Android.bp文件中使用srcs参数来指定模块的源文件。可以使用通配符来匹配多个文件,如[“*.cpp”]表示所有的cpp文件。
编译选项:Android.bp文件中可以指定编译选项,如指定编译器、编译标志等。通过cflags、cppflags、ldflags等参数来设置。
依赖关系:Android.bp文件中可以指定模块的依赖关系,即一个模块依赖于其他模块。通过shared_libs、static_libs等参数来指定依赖的共享库或静态库。
目标文件生成:Android.bp文件中可以指定生成的目标文件的名称和路径。通过name、installable等参数来设置。
其他功能:Android.bp文件还支持其他一些功能,如指定需要编译的源文件、排除某些源文件、指定编译器、链接器等。可以通过查阅Android.bp文件的官方文档或相关教程来了解更多功能和用法。
总之,Android.bp文件是Android 7.0及更高版本中引入的一种构建脚本文件,用于管理项目的编译过程。通过编写Android.bp文件,可以定义模块的编译选项、依赖关系和生成的目标文件等。这样可以更灵活地管理和组织项目的代码和资源。
3、Android.bp的其他知识
6、shared_libs、static_libs:指定模块的动态链接库和静态链接库的依赖关系。
https://www.cnblogs.com/hellokitty2/p/10595618.html
.mk文件
# LOCAL_PATH:= $(call my-dir)
# ifeq ($(LOCAL_PATH),)
# $(warning can't get LOCAL_PATH, attempting to get it manually)
# LOCAL_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
# endif
# Add modules
PRODUCT_PACKAGES += \
fireWall \
setFireWall
# Add sepolicy
# BOARD_VENDOR_SEPOLICY_DIRS += vendor/infrastructure/firewall/sepolicy/vendor
BOARD_VENDOR_SEPOLICY_DIRS += device/baic/firewall/sepolicy/vendor/
#打印
$(warning Build firewall is user)
NAME = qcom 强制覆盖,不管之前有没有值,都改成 qcom
NAME ?= qcom #条件赋值,仅在未定义时生效
$(warning NAME is $(NAME))
ifeq ($(NAME),aaa)
PRODUCT_PACKAGES += xxxx.sh
endif
.bp文件
sh_binary {
name: "fireWall",
src: "src/fireWall.sh",
init_rc: ["fireWall.rc"],
}
#上边的安装位置在
/system/bin/fireWall # 可执行脚本
/system/etc/init/fireWall.rc # init服务配置
本文介绍Android.bp文件的使用方法,包括定义模块、指定编译选项和依赖关系等内容。重点讲解如何在Android.bp中设置-g选项以生成调试信息。

5801

被折叠的 条评论
为什么被折叠?



