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

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

Blueprint和Soong都是由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,来做为案例。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := sdcard.cpp fuse.cpp

LOCAL_MODULE := sdcard

LOCAL_CFLAGS := -Wall -Wno-unused-parameter -Werror

LOCAL_SHARED_LIBRARIES := libbase libcutils libminijail libpackagelistparser

LOCAL_SANITIZE := integer

include $(BUILD_EXECUTABLE)

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

cc_binary {

srcs: [

"sdcard.cpp",

"fuse.cpp",

],

name: "sdcard",

cflags: [

"-Wall",

"-Wno-unused-parameter",

"-Werror",

],

shared_libs: [

"libbase",

"libcutils",

"libminijail",

"libpackagelistparser",

],

sanitize: {

misc_undefined: ["integer"],

},

}

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

Android编译系统中的Android.bp【转】

本文转载自: 转自:http://note.qidong.name/2017/08/android-blueprint/ Android编译系统中的Android.bp.Blueprint与Soong ...

深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)

第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

android应用中去android市场去评分的功能实现(吐槽一波个人应用上线...)

一般的app可能会有这中功能,在应用中去android商店评分来提高排名,前段时间也把我的博客园上传到商店,这里不得不吐槽一些android商店的开放平台. 酷派,vivo,oppo,联想不支持个人开 ...

在Android Studio中打开Android Device Monitor时报错的解决方法

在Android Studio中打开Android Device Monitor时报以下错误时(Android-SDK\tools\lib\monitor-x86_64\configuration\1 ...

【转】在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

在Android Studio中下载Android SDK的两种方式(Android Studio3.0.windows) 方式一.设置HTTP Proxy1. 打开Settings2. 点击HTTP ...

Android编译系统中的Kconfig,Makefile,.config编译系统浅析

在对Android进行编译时,用的就是Linux下的Makefile和Kconfig编译系统,对整个系统进行编译.当然还包括很多配置命令,比如make defconfig, make oldconfi ...

Android: NDK中的Android.mk和Application.mk

1. 简介 Android.mk  可用来描述要编译的某个具体模块的相关信息.比如:指定编译该模块时所需要的源文件.编译该模块时要链接的库文件.该模块编译完成后生成的库的名字等等.Applicatio ...

手把手教android studio中安装Android Butterknife Zelezny (转)

android.bp 编译,Android编译系统中的Android.bp相关推荐

  1. android bp文件_Android编译系统中的Android.bp【转】

    本文转载自: 转自:http://note.qidong.name/2017/08/android-blueprint/ Android编译系统中的Android.bp.Blueprint与Soong ...

  2. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )

    文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...

  3. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )

    文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...

  4. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

    文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...

  5. uniapp android原生,在uni-app项目中集成Android原生工程

    [TOC] # 在uni-app项目中集成Android原生工程 按照官方的方案,我们如果进行本地打包的话,需要重新创建一个Android原生工程,于是就会导致我们管理多个项目,切来切去的也麻烦. 经 ...

  6. android闹钟例子,自己软件中调用android系统闹钟

    [实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...

  7. 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    在进行UI布局的时候,可能常常会用到 android:gravity  和 android:layout_Gravity 这两个属性. 关于这两个属性的差别,网上已经有许多人进行了说明,这边再简单说一 ...

  8. unity3d android jar,c# – 访问unity3d中的android jar

    我有一个相机手电筒的 android项目,从eclipse部署工作正常.我试图从unity3d中的C#代码访问手电筒功能,但它不起作用.为了验证我是否正确调用了android方法,我在同一个activ ...

  9. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

最新文章

  1. QGC地面站参数调节
  2. nginx php 错误日志,PHP 错误与异常的日志记录
  3. 【Flask】创建一个蓝图
  4. 【赠书】图神经网络优质书籍,送你3本进行学习
  5. wp java_Java WordPress工具库wp-client
  6. zookeeper 创建临时顺序节点_Zookeeper学习笔记
  7. BZOJ2568 [国家集训队2012]比特集合
  8. Java网络爬虫该如何学习
  9. 资源放送丨《SQL条件等价改写秘笈》PPT视频
  10. mysql恢复测试报告_mysqldump+mysqlbinlog恢复测试
  11. 2018年7月第一周网站建站笔记
  12. linux查看服务命令是什么,linux系统查看所有服务的命令
  13. eclipse安装教程(win10版本,很全的)
  14. EPS清华三维软件操作与数据检查常见问题与解决问题
  15. MySQL命令行登录数据库
  16. 请问悉尼大学计算机专业,悉尼大学计算机专业去留学怎么样 是强势专业吗?...
  17. Android-图片压缩
  18. mysql查询时间监控_监控长时间运行的查询(监控数据库性能的SQL )
  19. 洛谷P6685 可持久化动态仙人掌的直径问题
  20. css3中-moz、-ms、-webkit、 - o -各什么意思

热门文章

  1. jnlp 文件签名验证不通过
  2. python从键盘输入一个字符串、将小写字母全部_从键盘输入一个字符串,将其中的小写字母全部转换成大写字母...
  3. i春秋·网络内生安全训练场 pwn Car Search System
  4. HTTPSConnectionPool(host=‘***‘, port=443): Read timed out.
  5. Apriori算法与python实现
  6. opencv读取的图像为什么是BGR
  7. 为打印到OneNote中的PDF添加链接目录
  8. 第三部分 :简单句的补充(限定词/形容词/介词短语)
  9. 【电力电子】【2011.09】30kW距离扩展器的双向三相变换器设计与实现
  10. 最长上升子序列(动态规划)