Android aosp 编译系统基础相关命令
源碼管理
找到原有的.git 刪除后 添加自己的git
find ./ -name '.git' | xargs rm -rf
常用命令
gettop函數 獲取當前編譯環境的work_directory目錄 如下所示,適用于在深層目錄中 跳轉其他目錄
(aosppy2) aosp@ubuntu:~/android/android5.1$ cd packages/apps/gifaLibs/common/
(aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ cd $(gettop)
(aosppy2) aosp@ubuntu:~/android/android5.1$ cd packages/apps/gifaLibs/common/
(aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ cd $(gettop)/packages
(aosppy2) aosp@ubuntu:~/android/android5.1/packages$ pwd
/home/aosp/android/android5.1/packages
(aosppy2) aosp@ubuntu:~/android/android5.1/packages$
croot 指令 輸入后 直接回到當前編譯環境的work_directory
m :make的縮寫 -jx 參數-j 表示job 后面的x:表示工作的線程數
mm : 表示編譯當前目錄的mk文件
MMM : 標識編譯指定目錄下的mk文件,例如當修改common文件后,編譯其他目錄的App應用
(aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ mmm ../../gifaApps/test1/
jgrep :只在java文件中查找 指定的字符串 示例: jgrep "Activity"
cgrep :只在C/C++文件中查找指定的字符串 示例: cgrep "Activity"
resgrep 只在res資源文件中查找指定的字符串
godir 查找加跳轉指令 示例 godirctgmath 找到這個文件所在的目錄 并且跳轉進去
godir 會在第一次執行的時候,在編譯根目錄建立filelist索引文件,若在其他文件夾下執行,只會將所在目錄下的文件建立索引,因此當找不到文件時,可以將根目錄的“filelist”文件刪除,再到編譯根目錄執行一次
make snod :當編譯部分模塊完成后,輸入此命令標識重新生成img鏡像文件
emulator & :運行當面環境下的配置的模擬器 參數“&” 標識后臺運行
工作目錄說明
build/目錄
core/ aosp整個編譯過程中核心編譯規則文件目錄
envsetup.sh 編譯環境初始化腳本
target / Android自帶模擬器的一些makefile文件目錄
tools 編譯過程中使用的shell及python編寫的一些腳本
packages/ 一些常用系統APP存放目錄,電話、日歷等
framworks 公共庫
av/ 多媒體相關的native目錄
webview/ 瀏覽器內核源碼目錄
native/ power、input、binder等服務native實現目錄
base
core | framework.jarframework-res.apk libandroid_runtime.so等源文件
native | libandroid.so的源代碼目錄 java api的native實現 比如looper、assetmanager
media | 多媒體相關的javaapi及jni文件目錄
package | settingProvider、SystemUI等不在桌面直接啟動的App源碼目錄
service | services.jar、libandroid_services.so的源文件目錄
WIFI | wifi服務相關的javaAPI、wifiManager、wifiService等
devices/<vendor_name>/<product_name> | 跟硬件廠商相關的內核,硬件配置等
vendor/<vendor_name>/<product_name> | 廠商對AOSP修改或者定制、放在vendor目錄下。包括不限于framework層新增API、APP等業務需求,目前谷歌更推薦放在devices目錄下
AndroidBuildSystem說明 aosp 構建 編譯系統
Androld Build 系統用來編譯 Androld 系統Androld SDK以及相關文檔。
該系統主要由如 make 文件, shell 腳本以及 Python 腳本組成,在編譯時能夠支持面向不同的硬件設備,不同的編譯類型,且提供面向各個廠商的定制擴展。
什么是makefile
makefile 是一些有特定語法,可供make命令讀取并執行的腳本性質的配置文件,作用就是定義編譯相關屬性,對哪些源文件進行編譯,怎么編譯,怎么處理他們之間的依賴關系
makefile可以定義變量,函數,調用系統命令, shen / python腳本,管理module 之間的依賴,整個Android Build系統中的make文件分成三類
1 . Build 系統核心 Makefile
這類Makefile定義了整個 Build 系統的框架,而其他所有make文件都是在這個框架的基礎上編寫出來的。位于 build/Core 目錄下.
2 .針對某個產品的 Makefile
這類 makefile是針對某個產品 Make文件這些文件通常位于 device/< vendor_name>/< product_name 》 目錄下。
3 .針對某個模塊的 Makeflle - Android.mk
第三類是針對某個徽塊的 Moke 文件。 AOSP中,不會針對某一個文件進行編譯,每一個編譯單位都是一個模塊,
每個模塊由一個名為“ Android.mk ”的 makefile 來聲明。該文件中定義了如何編譯當前模塊。
總結
以上是生活随笔為你收集整理的Android aosp 编译系统基础相关命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大卫科波菲尔穿越长城(大卫科波菲尔为什么
- 下一篇: 春夏补肾食品(补肾食品)