NDK<第十篇>:Android.mk和Android.bp对应

2022-10-26  本文已影响0人  NoBugException

Android.bp文件是Android系统的一种编译配置文件,是用来代替原来的Android.mk文件的。

【1】字符串表示
mk:
    chips_dir := ../../../frameworks/opt/chips/res
bp:
    chips_dir = ["../../../frameworks/opt/chips/res"]
mk:
    res_dirs := $(chips_dir) $(color_picker_dir) $(timezonepicker_dir) res
bp:
    res_dirs = chips_dir + color_picker_dir + timezonepicker_dir + ["res"]
mk:
    src_dirs := src
bp:
    src_dirs = ["src"]
【2】mk和bp模块对应表
include $(BUILD_SHARED_LIBRARY) -> cc_library_shared {}

include $(BUILD_STATIC_LIBRARY) -> cc_library_static{}

include $(BUILD_HOST_SHARED_LIBRARY) -> cc_library_host_shared{}

include $(BUILD_HOST_STATIC_LIBRARY) -> cc_library_host_static{}

include $(BUILD_HEADER_LIBRARY) -> cc_library_headers{}

include $(BUILD_EXECUTABLE) -> cc_binary{}

include $(BUILD_HOST_EXECUTABLE) -> cc_binary_host{}

include $(BUILD_NATIVE_TEST) -> cc_test{}

include $(BUILD_HOST_NATIVE_TEST) -> cc_test_host{}

include $(BUILD_NATIVE_BENCHMARK) -> cc_benchmark{}

include $(BUILD_HOST_NATIVE_BENCHMARK) -> cc_benchmark_host{}

include $(BUILD_JAVA_LIBRARY) -> java_library_installable{}

include $(BUILD_STATIC_JAVA_LIBRARY) -> java_library{}

include $(BUILD_HOST_JAVA_LIBRARY) -> java_library_host{}

include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) -> java_library_host_dalvik{}

include $(BUILD_PACKAGE) -> android_app{}

include $(BUILD_RRO_PACKAGE) -> runtime_resource_overlay{}

include $(BUILD_CTS_EXECUTABLE) -> cc_binary{}      

include $(BUILD_CTS_SUPPORT_PACKAGE) -> cts_support_package{}  

include $(BUILD_CTS_PACKAGE) -> cts_package{} 

include $(BUILD_CTS_TARGET_JAVA_LIBRARY) -> cts_target_java_library {}

include $(BUILD_CTS_HOST_JAVA_LIBRARY) -> cts_host_java_library{}
【3】mk和bp prebuilt 对应表
"SHARED_LIBRARIES": "cc_prebuilt_library_shared",
"STATIC_LIBRARIES": "cc_prebuilt_library_static",
"EXECUTABLES":      "cc_prebuilt_binary",
"JAVA_LIBRARIES":   "java_import",
"APPS":             "android_app_import",
"ETC":              "prebuilt_etc",
【4】mk和bp属性对应表
LOCAL_PACKAGE_NAME := Calendar -> name: "Calendar"
==================================================
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.calendar.* ->     jacoco: { include_filter: ["com.android.calendar.*"],}
==================================================
mk:
    LOCAL_SRC_FILES := $(call all-java-files-under, src)
bp:
    srcs: ["src/**/*.java"],
==================================================
mk:
LOCAL_STATIC_JAVA_LIBRARIES := \
        android-common \
        libchips \
        colorpicker \
        android-opt-timezonepicker \
        androidx.legacy_legacy-support-v4 \
        calendar-common
bp:
static_libs: [
    "android-common",
    "libchips",
    "colorpicker",
    "android-opt-timezonepicker",
    "androidx.legacy_legacy-support-v4",
    "calendar-common",
],
==================================================
LOCAL_SDK_VERSION := current ->     sdk_version: "current",
==================================================
mk:
LOCAL_NOTICE_FILE  := $(LOCAL_PATH)/NOTICE
dp:
notice: LOCAL_PATH + "/NOTICE",
==================================================
mk:
# 混淆规则配置文件
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
bp:
optimize: {
    proguard_flags_files: ["proguard.flags"],
},
==================================================
# true:将apk安装到priv-app下
LOCAL_PRODUCT_MODULE := true -> product_specific: true,
==================================================
mk:
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips
LOCAL_AAPT_FLAGS += --extra-packages com.android.colorpicker
LOCAL_AAPT_FLAGS += --extra-packages com.android.timezonepicker

bp:
aaptflags: ["--auto-add-overlay"] + [
    "--extra-packages",
    "com.android.ex.chips",
] + [
    "--extra-packages",
    "com.android.colorpicker",
] + [
    "--extra-packages",
    "com.android.timezonepicker",
],

==================================================

mk:
LOCAL_STATIC_ANDROID_LIBRARIES := \
    androidx.legacy_legacy-support-v13 \
    androidx.legacy_legacy-support-v4 \
    androidx.core_core
bp:
static_libs: [
    "androidx.legacy_legacy-support-v13",
    "androidx.legacy_legacy-support-v4",
    "androidx.core_core",
],

==================================================

mk:
LOCAL_STATIC_JAVA_LIBRARIES := android-ex-camera2-portability
LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkit
LOCAL_STATIC_JAVA_LIBRARIES += glide
LOCAL_STATIC_JAVA_LIBRARIES += guava
LOCAL_STATIC_JAVA_LIBRARIES += jsr305

bp:
static_libs: ["android-ex-camera2-portability"] + ["xmp_toolkit"] + ["glide"] + ["guava"] + ["jsr305"],

==================================================

mk:
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SRC_FILES += $(call all-java-files-under, src_pd)
LOCAL_SRC_FILES += $(call all-java-files-under, src_pd_gcam)
bp:
srcs: ["src/**/*.java"] + ["src_pd/**/*.java"] + ["src_pd_gcam/**/*.java"],

==================================================

mk:
LOCAL_RESOURCE_DIR += \
    $(LOCAL_PATH)/res \
    $(LOCAL_PATH)/res_p
bp:
resource_dirs: [
    "res",
    "res_p",
],

==================================================

mk:
LOCAL_AAPT_FLAGS := \
        --auto-add-overlay \
        --version-name "$(version_name_package)" \
        --version-code $(version_code_package) \
bp:
aaptflags: [
    "--auto-add-overlay",
    "--version-name",
    "\"" + version_name_package + "\"",
    "--version-code",
] + version_code_package,

==================================================
# 使用SDK的hide的api
LOCAL_PRIVATE_PLATFORM_APIS := true ->     platform_apis: true,
==================================================
LOCAL_CERTIFICATE := platform ->     certificate: "platform",
==================================================
LOCAL_JAVA_LIBRARIES += org.apache.http.legacy ->     libs: ["org.apache.http.legacy"],
==================================================
mk:
LOCAL_JNI_SHARED_LIBRARIES := libjni_tinyplanet libjni_jpegutil 
dp:
jni_libs: [
    "libjni_tinyplanet",
    "libjni_jpegutil",
],
==================================================
mk:
    # 声明用到的注解
LOCAL_ANNOTATION_PROCESSORS := \
    auto_value_plugin \
    javapoet-prebuilt-jar \
    dialer-dagger2 \
    dialer-dagger2-compiler \
    dialer-dagger2-producers \
    dialer-glide-annotation \
    dialer-glide-compiler \
    dialer-guava \
    dialer-javax-annotation-api \
    dialer-javax-inject \
    dialer-rootcomponentprocessor
bp:
    plugins: [
    "auto_value_plugin",
    "javapoet-prebuilt-jar",
    "dialer-dagger2",
    "dialer-dagger2-compiler",
    "dialer-dagger2-producers",
    "dialer-glide-annotation",
    "dialer-glide-compiler",
    "dialer-guava",
    "dialer-javax-annotation-api",
    "dialer-javax-inject",
    "dialer-rootcomponentprocessor",
],
==================================================
LOCAL_OVERRIDES_PACKAGES := Calculator ->     overrides: ["Calculator"],
==================================================
LOCAL_MIN_SDK_VERSION := 26 ->     min_sdk_version: "26",
==================================================
LOCAL_PRIVILEGED_MODULE := true ->     privileged: true,
==================================================
LOCAL_SYSTEM_EXT_MODULE := true ->     system_ext_specific: true,
==================================================
mk:
LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
bp:
overrides: [
    "Home",
    "Launcher2",
    "Launcher3",
    "Launcher3QuickStep",
],
==================================================
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3 ->     required: ["privapp_whitelist_com.android.launcher3"],
==================================================
mk:
LOCAL_FULL_LIBS_MANIFEST_FILES := \
    $(LOCAL_PATH)/AndroidManifest.xml \
    $(LOCAL_PATH)/AndroidManifest-common.xml
bp:
additional_manifests: [
    LOCAL_PATH + "/AndroidManifest.xml",
    LOCAL_PATH + "/AndroidManifest-common.xml",
],
==================================================
LOCAL_MANIFEST_FILE := go/AndroidManifest.xml ->     manifest: "go/AndroidManifest.xml",
==================================================
mk:
# 混淆配置,默认为full obfuscation,全代码混淆,disabled不开启
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_PROGUARD_ENABLED := full obfuscation

dp:
optimize: {
    enabled: false,
},
==================================================
mk:
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_APPS)
bp:
local_module_path: {
    var: "TARGET_OUT_PRODUCT_APPS",
},
==================================================
LOCAL_COMPATIBILITY_SUITE := general-tests ->     test_suites: ["general-tests"],
==================================================
mk:
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
    contextualcards:libs/contextualcards.aar
include $(BUILD_MULTI_PREBUILT)
bp:
android_library_import {
    name: "contextualcards",
    aars: ["libs/contextualcards.aar"],
}
【5】函数宏
LOCAL_PATH := $(call my-dir):返回Android.mk 的目录
include $(call all-java-files-under,<name>):返回位于<name>目录下的所有java文件。
    如果不指定<name>,怎么返回my-dir目录下所有的java文件。
include $(call all-makefiles-under,<name>):返回位于当前 <name> 路径下所有目录中的 Android.mk 文件列表。
    利用此函数,可以为构建系统提供深度嵌套的源目录层次结构。
    默认情况下,系统只在 Android.mk 文件所在的目录中查找文件。
LOCAL_SRC_FILES := $(call all-logtags-files-under, src):返回 src 路径下所有 logtags 格式的文件。
【6】未找到对应关系
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
===========================================
# 开启AAPT2打包APK,AAPT是Android Asset Packaging Tool的缩写,AAPT2在AAPT的基础做了优化。
LOCAL_USE_AAPT2 := true
===========================================
# 在什么类型的版本下编译
# user/debug/eng: 指定该模块只在 user 版本下才编译(makePRODUCT-XXX-user)
# optional: 在所有版本下都会编译
LOCAL_MODULE_TAGS := optional
===========================================
引入aar:
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := contextualcards:libs/contextualcards.aar
include $(BUILD_MULTI_PREBUILT)
===========================================
# 声明 mk 要使用到的共享 JNI 库的名称
LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
===========================================
mk:
# 声明用到的注解器
LOCAL_ANNOTATION_PROCESSOR_CLASSES := \
    androidx.room.RoomProcessor
===========================================
# protocol 相关配置
LOCAL_PROTOC_OPTIMIZE_TYPE
===========================================
Android.mk 最后一句:include $(call all-makefiles-under, $(LOCAL_PATH))

[本章完...]

上一篇下一篇

猜你喜欢

热点阅读