zoukankan      html  css  js  c++  java
  • Ninja编译过程分析

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

    正因为这个改变,所以在编译android N的code的时候需要使用OpenJDK8

     

    Ninja

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

    如果把其他编译系统比做高级语言的话,Ninja就是汇编语言

    主要有两个特点:

    1、可以通过其他高级的编译系统生成其输入文件;

    2、它的设计就是为了更快的编译;

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

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

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

     

    BlueprintSoong是用于一起把Blueprint 文件转换为Ninja文件。 将来需要写Blueprint文件(Android.bp),转换为Android.soong.mk(也可以直接写),然后转换为Ninja文件(build.ninja)然后用Ninja编译。

    如果Android.mk和Android.bp同时存在,Android.mk会被忽略。

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

     

  • 相关阅读:
    WannaCry蠕虫分析与预防
    对网络传输的理解
    RESTful API 设计最佳实践
    码农们的密码
    腾讯云公网负载均衡技术实现详解
    ELK统一日志系统的应用
    ElasticSearch + Canal 开发千万级的实时搜索系统
    聊架构:5分钟了解REST架构
    Netty5 HTTP协议栈浅析与实践
    这里,彻底了解HTTPS
  • 原文地址:https://www.cnblogs.com/wangym/p/8317310.html
Copyright © 2011-2022 走看看