• Android编译系统中的Android.bp


    https://www.cnblogs.com/bluestorm/p/10895005.html

    Android.bp,是用来替换Android.mk的配置文件。 它使用Blueprint框架来解析,最终转换成Ninja文件。

    与Android.mk不同的是,Android.bp是纯粹的配置文件,不包含分支、循环等流程控制,也不能做算数、逻辑运算。 与此同时,Ninja文件也是如此。 这就产生了一些新的问题与需求——在Android项目上进行选择编译、解析配置、转换成Ninja等——Soong应运而生。 Soong其实就相当于Makefile编译系统的核心,即build/make/core/下面的内容。 它负责提供Android.bp的含义定义与解析,并将之转换为Ninja文件。。

    BlueprintSoong都是由Golang写的项目。 从Android Nougat开始,prebuilts/go/目录下新增了Golang所需的运行环境,在编译时使用。

    Android.bp以及相关支持,从Android Nougat开始加入,从Android Oreo(8.0)开始默认开启。 如果需要在Android Nougat的版本使用,需要在执行编译时添加变量。

    Android.mk转换Android.bp实例

    下面,以一个AOSP上的简单模块,system/core/sdcard/Android.mk,来做为案例。

    1.  
      LOCAL_PATH := $(call my-dir)
    2.  
       
    3.  
      include $(CLEAR_VARS)
    4.  
       
    5.  
      LOCAL_SRC_FILES := sdcard.cpp fuse.cpp
    6.  
      LOCAL_MODULE := sdcard
    7.  
      LOCAL_CFLAGS := -Wall -Wno-unused-parameter -Werror
    8.  
      LOCAL_SHARED_LIBRARIES := libbase libcutils libminijail libpackagelistparser
    9.  
       
    10.  
      LOCAL_SANITIZE := integer
    11.  
       
    12.  
      include $(BUILD_EXECUTABLE)

    这是一个编译二进制可执行文件的小模块,内容非常简单。 通过执行androidmk Android.mk > Android.bp,可以转换成Android.bp。

    1.  
      cc_binary {
    2.  
      srcs: [
    3.  
      "sdcard.cpp",
    4.  
      "fuse.cpp",
    5.  
      ],
    6.  
      name: "sdcard",
    7.  
      cflags: [
    8.  
      "-Wall",
    9.  
      "-Wno-unused-parameter",
    10.  
      "-Werror",
    11.  
      ],
    12.  
      shared_libs: [
    13.  
      "libbase",
    14.  
      "libcutils",
    15.  
      "libminijail",
    16.  
      "libpackagelistparser",
    17.  
      ],
    18.  
      sanitize: {
    19.  
      misc_undefined: ["integer"],
    20.  
      },
    21.  
      }

    可以看出,虽然行数变多,但其实含义更明确了

  • 相关阅读:
    mysql实战45讲
    goland破解
    主从复制系列C
    主从复制系列B
    主从复制系列A
    sshd配置文件详解
    MySQL源码 数据结构array
    MySQL源码 information_schema新增表
    MySQL5.6 基于db的并行复制
    mysql 限制并发select patch
  • 原文地址:https://www.cnblogs.com/bluestorm/p/10895005.html
Copyright © 2020-2023  润新知