安卓中定义模块构建规则的mk/bp文件语法对比

mk/bp属性理解

1.1. bp文件中,以下是android_app {…}中包含的属性含义解析(android_app 是生成apk标志)

1.2. mk文件中,include $(CLEAR_VARS) … include $(BUILD_PACKAGE)中包含的属性含义解析(BUILD_PACKAGE生成apk 标志)

功能描述 Android.mk (mk) Android.bp (bp)
模块名称 LOCAL_MODULE := MyLibrary name: "MyLibrary",
源代码文件 LOCAL_SRC_FILES := src/*.java srcs: ["src/*.java"],
资源目录 LOCAL_RESOURCE_DIR := res/ resource_dirs: ["res"],
依赖的静态库(jar) LOCAL_STATIC_JAVA_LIBRARIES := Lib1 static_libs: ["Lib1"],
依赖的共享库 LOCAL_SHARED_JAVA_LIBRARIES := Lib2 libs: ["Lib2"],
决定编译后生成文件是否放到priv-app(默认app) LOCAL_PRIVILEGED_MODULE := true privileged: true,
决定编译后生成文件是否放到system-ext(默认system)分区 LOCAL_SYSTEM_EXT_MODULE := true system_ext_specific: true,
AndroidManifest 文件 LOCAL_MANIFEST_FILE := AndroidManifest.xml manifest: "AndroidManifest.xml",
附加的 AndroidManifest 文件 LOCAL_FULL_LIBS_MANIFEST_FILES := manifest2.xml additional_manifests: ["manifest2.xml"],
编译时包含的 AIDL 文件 LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl aidl: { includes: ["aidl"] },
目标 SDK 版本 LOCAL_SDK_VERSION := current sdk_version: "current",
最低 SDK 版本 LOCAL_MIN_SDK_VERSION := 21 min_sdk_version: "21",
指定 “用当前模块替换哪些已有模块” LOCAL_OVERRIDES_PACKAGES := Home Launcher3 overrides: [
"Home",
"Launcher3",
]

2.编译生成jar包:给其他app使用

中文释义 mk文件内容 bp文件内容
生成静态java库 include $(CLEAR_VARS)
...
...
include $(BUILD_STATIC_JAVA_LIBRARY)
java_library_static(
...
...
...
)

3.给编译独立模块aar给其他模块做依赖使用(同一工程下)

中文释义 mk文件内容 bp文件内容
编译目标类型 include $(BUILD_ANDROID_LIBRARY) android_library { ... }

4.文件组:指定一组文件的集合。

它在构建系统(如 Android.bp 文件中使用的 Soong 构建系统)中指定一组文件的集合。
这个文件组可以被其他模块引用,通常用于组织和管理源文件、资源文件等。具体功能包括:
指定文件组的名称
定义文件路径模式以匹配相关文件
指定文件的根目录

中文释义 mk文件内容 bp文件内容
指定一组文件的集合 filegroup { ... }

你可能感兴趣的:(16_安卓编译文件mk和bp,安卓)