android.bp 编译,Android编译系统中的Android.bp
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相关推荐
- android bp文件_Android编译系统中的Android.bp【转】
本文转载自: 转自:http://note.qidong.name/2017/08/android-blueprint/ Android编译系统中的Android.bp.Blueprint与Soong ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )
文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...
- uniapp android原生,在uni-app项目中集成Android原生工程
[TOC] # 在uni-app项目中集成Android原生工程 按照官方的方案,我们如果进行本地打包的话,需要重新创建一个Android原生工程,于是就会导致我们管理多个项目,切来切去的也麻烦. 经 ...
- android闹钟例子,自己软件中调用android系统闹钟
[实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...
- 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
在进行UI布局的时候,可能常常会用到 android:gravity 和 android:layout_Gravity 这两个属性. 关于这两个属性的差别,网上已经有许多人进行了说明,这边再简单说一 ...
- unity3d android jar,c# – 访问unity3d中的android jar
我有一个相机手电筒的 android项目,从eclipse部署工作正常.我试图从unity3d中的C#代码访问手电筒功能,但它不起作用.为了验证我是否正确调用了android方法,我在同一个activ ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...
最新文章
- QGC地面站参数调节
- nginx php 错误日志,PHP 错误与异常的日志记录
- 【Flask】创建一个蓝图
- 【赠书】图神经网络优质书籍,送你3本进行学习
- wp java_Java WordPress工具库wp-client
- zookeeper 创建临时顺序节点_Zookeeper学习笔记
- BZOJ2568 [国家集训队2012]比特集合
- Java网络爬虫该如何学习
- 资源放送丨《SQL条件等价改写秘笈》PPT视频
- mysql恢复测试报告_mysqldump+mysqlbinlog恢复测试
- 2018年7月第一周网站建站笔记
- linux查看服务命令是什么,linux系统查看所有服务的命令
- eclipse安装教程(win10版本,很全的)
- EPS清华三维软件操作与数据检查常见问题与解决问题
- MySQL命令行登录数据库
- 请问悉尼大学计算机专业,悉尼大学计算机专业去留学怎么样 是强势专业吗?...
- Android-图片压缩
- mysql查询时间监控_监控长时间运行的查询(监控数据库性能的SQL )
- 洛谷P6685 可持久化动态仙人掌的直径问题
- css3中-moz、-ms、-webkit、 - o -各什么意思
热门文章
- jnlp 文件签名验证不通过
- python从键盘输入一个字符串、将小写字母全部_从键盘输入一个字符串,将其中的小写字母全部转换成大写字母...
- i春秋·网络内生安全训练场 pwn Car Search System
- HTTPSConnectionPool(host=‘***‘, port=443): Read timed out.
- Apriori算法与python实现
- opencv读取的图像为什么是BGR
- 为打印到OneNote中的PDF添加链接目录
- 第三部分 :简单句的补充(限定词/形容词/介词短语)
- 【电力电子】【2011.09】30kW距离扩展器的双向三相变换器设计与实现
- 最长上升子序列(动态规划)