Ninja編譯過程分析

在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的開源代碼進行各類個性化的編譯定製。

 

 

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

 

相關文章
相關標籤/搜索