在Android N的系统上,初次使用了Ninja的编译系统。对于Ninja,最初的印象是用在了Chromium open source code的编译中,在chromium的编译环境中,使用ninja -C out/Default chrome命令,就能够利用源码编译出chrome的apk。对使用者而言,抛开对原理的探究,最直观的印象莫过于能够清楚的看到本身当前编译的进度。同时,对android而言,也能够感觉到编译速度的提高带来的便捷。本文将深刻分析Ninja的编译原理,以及android上面的编译改变。python

正由于这个改变,因此在编译android N的code的时候须要使用OpenJDK8android

Ninjachrome

Ninja是一个致力于速度的小型编译系统(相似于Make);shell

若是把其余编译系统比作高级语言的话,Ninja就是汇编语言ui

主要有两个特色:设计

一、能够经过其余高级的编译系统生成其输入文件;code

二、它的设计就是为了更快的编译;源码

使用Kati把makefile转换成Ninja files,而后用Ninja编译编译

在不久的未来,当再也不用Makefile(Android.mk)时,Kati将被去掉class

ninja核心是由C/C++编写的,同时有一部分辅助功能由python和shell实现。因为其开源性,因此能够利用ninja的开源代码进行各类个性化的编译定制。

Blueprint和Soong是用于一块儿把Blueprint 文件转换为Ninja文件。 未来须要写Blueprint文件(Android.bp),转换为Android.soong.mk(也能够直接写),而后转换为Ninja文件(build.ninja)而后用Ninja编译。

若是Android.mk和Android.bp同时存在,Android.mk会被忽略。

若是Android.bp的同级目录下有Android.soong.mk也会被include

android 编译ninja,Ninja编译过程分析相关推荐

  1. Android系统快速编译方式ninja

    随着Android版本的更迭,尤其是Androd10和Android11源码的编译,单编模块的时间也特别慢,每次都需要半个小时甚至更长,因为每次单编都会重新加载所有mk文件,再生成ninja编译,此过 ...

  2. Android.bp编译提示ninja: error: unknown target ‘MODULES-IN-xxx‘终极指南

    Android.bp编译提示ninja: error: unknown target 'MODULES-IN-xxx'终极指南 Android.bp系列博客: Android.bp你真的了解吗 And ...

  3. Android系统编译优化:使用Ninja加快编译

    背景 环境 关键编译阶段和耗时分析 阶段一:Soong bootstrap 阶段二:Kati遍历.mk搜集与ninja生成 阶段三:Ninja编译 编译优化 对比汇总 背景 Android系统模块代码 ...

  4. Android 12源码编译报错:FAILED: out/soong/build.ninja

    Android 12源码编译报错:FAILED: out/soong/build.ninja android12源码编译中报如下错误: 网上查了比较多资料发现是swap分区不够导致的,报错时使用fre ...

  5. (Ubuntu 18.04) Android framework R版本S版本环境配置及使用 ninja 快速编译

    Android R 和S版本的编译,首先是环境配置,配置好环境之后,需要的不仅仅是push framework.jar 这么简单,需要push的还有其生成的附属文件.如果是make framework ...

  6. Ninja提升编译速度的方法-Android10.0编译系统(十)

    摘要:如何通过Ninja来提升Android编译速度 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢 ...

  7. 【windows】编译安装ninja

    安装前准备 安装ninja需要编译源码,所以在编译前需要做如下准备: 1.安装git for windows ,下载地址 2.安装Visual Studio 2017(或2015) 3.安装pytho ...

  8. Linux编译LLVM,如何使用ninja快速编译LLVM和Clang(以llvm3.3为例子)

    在使用Make工具编译LLVM是非常耗时的.往往需要三四个小时.但是使用goolge开源的ninja编译LLVM只需要10到20分钟. 本文以llvm3.3为例,演示在linux上编译和安装过程. 第 ...

  9. Android8.0使用ninja模块编译Settings

    参考 查看out目录 # lunch aosp_arm64-eng//查看选项 # ln -s out/combined-aosp_arm64.ninja build.ninja # ninja Se ...

最新文章

  1. 关于char(M)和varchar(N)的区别
  2. 基于TensorFlow 2.0的中文深度学习开源书来了!GitHub趋势日榜第一,斩获2K+星
  3. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 主函数逻辑结构 | 启动无限循环 | 接收用户操作值 | 宏定义 | 显示操作菜单 )
  4. 机器学习——线性回归数学推导
  5. [O365] Azure Active Directory Sync EVENT ID 906 FAILED While Purging Run History. Invalid Namespace
  6. 【数据结构】——堆排序
  7. 【C++深度剖析教程30】C++中抽象类和接口
  8. Arrays类详细讲解
  9. Centos 安装 JDK8
  10. 织梦列表页生成的html在哪里,织梦系统给手机版生成静态页HTML的方法
  11. Linux FTP 服务器配置简单说明
  12. 万年历插件软件测试,万年历软件测试实训报告
  13. 期货反跟单行业里的恶意剥削
  14. 深度学习需要计算机配置,深度学习工作站配置推荐
  15. 第二重要极限公式推导过程_机器学习——一文详解逻辑回归「附详细推导和代码」...
  16. 2018中国国际大数据大会  助力大数据与实体经济深度融合
  17. 网络安全:关于Caesar密码的加密解密
  18. 工作日志之误用篇 工作日志之目的
  19. Android Studio的代码笔记--基本使用、新建一个项目、修改快捷键、常用控件的使用等
  20. (附源码)记账微信小程序 毕业设计180815

热门文章

  1. Docker安装Tomcat无法访问
  2. html5独立钻石棋,独立钻石跳棋问题的C++实现
  3. 在Teams团队中快速添加SharePoint Online站点
  4. tomcat8日志乱码_Tomcat日志中文乱码怎么解决?
  5. EXCEL countif函数多条件
  6. 微信小程序——转盘抽奖
  7. android (拼图游戏)数字推盘的简单实现
  8. 同济大学计算机考研资料汇总
  9. 会当凌绝顶,一览众山小
  10. pdm生成mysql sql语句_PDM文件生成sql执行语句