Android 定制編譯基本流程

首先一般的目錄結(jié)構(gòu)的作用參考博客:[Android 源碼目錄結(jié)構(gòu)詳解][6]
在工作中,因?yàn)樾枰鶕?jù)客戶(hù)需求進(jìn)行簡(jiǎn)單的系統(tǒng)定制,因此需要明確 android 系統(tǒng)運(yùn)行會(huì)去哪些目錄讀取哪些 .mk 文件

一般手機(jī)定制的源代碼中會(huì)存在兩個(gè)目錄,一個(gè)屬于 android 源碼部分,另一個(gè)屬于自己公司定制的代碼部分,由于 android 系統(tǒng)的運(yùn)行是以散射的形式去讀取 .mk 文件(首先讀取項(xiàng)目的主 make 文件,再讀取由主 make 文件引用的其他 make 文件,知道將所需要的 make 文件讀取完整)

定制基本操作:

  1. 到自己所負(fù)責(zé)項(xiàng)目的 make 文件下找到需要的模塊宏(eg:GN_APK_**_SETTINGS_SUPPORT)
  1. 根據(jù)找到的宏到定制項(xiàng)目下尋找該 apk 所在文件夾,該目錄下的 .mk 文件就會(huì)有那個(gè)模塊的宏開(kāi)關(guān),若不需要這個(gè)模塊則直接改為 false
  2. 如果定制涉及到需要在代碼中進(jìn)行修改的話(huà),則需要進(jìn)入到該模塊對(duì)應(yīng)的代碼中進(jìn)行修改(找到需求中需要修改的地方即可)

編譯的過(guò)程(以MTK為基礎(chǔ)的定制):

  1. 首先,系統(tǒng)會(huì)加載 MTK Android 源代碼目錄下所需的系統(tǒng)文件
  2. 然后會(huì)加載 定制公司 project 目錄文件下的 項(xiàng)目名.mk
  1. 然后會(huì)加載 定制公司名 目錄文件下的對(duì)應(yīng)項(xiàng)目的文件(比如 海外 項(xiàng)目)
    (前三步都是在 MTK Android 源碼目錄下進(jìn)行的,每一層級(jí)若出現(xiàn)同名文件都會(huì)進(jìn)行覆蓋)
  2. 加載第三步的文件之后,那些文件會(huì)映射到第二個(gè)目錄中(公司定制的代碼部分)就是在這個(gè)文件下的 common_version_version/app 目錄下進(jìn)行讀取系統(tǒng) app ,那么修改完這些之后,重新編譯就能體現(xiàn)出修改的內(nèi)容

當(dāng)然這只是一個(gè)簡(jiǎn)單的流程,如果涉及到比較深度的定制,那么則需要明確修改的宏對(duì)應(yīng)的代碼部分,不然就會(huì)導(dǎo)致明明修改了某處地方但是編譯之后沒(méi)有得到對(duì)應(yīng)的結(jié)果

編譯需要使用 android 源碼中的 Tmake*** 腳本文件進(jìn)行編譯(這個(gè)腳本文件由公司內(nèi)部定義)

總的來(lái)說(shuō),定制手機(jī)先從獲取的基礎(chǔ)代碼進(jìn)行執(zhí)行,然后從定制公司的目錄出發(fā)尋找所映射的文件讀取,編譯后會(huì)生成一個(gè)可供刷機(jī)的軟件,使用該軟件就能夠?qū)⒍ㄖ频南到y(tǒng)安裝到手機(jī)上。基本過(guò)程就是這樣,沒(méi)有圖片可能比較抽象,建議下套源碼結(jié)合這些步驟摸索一下(如有錯(cuò)誤,歡迎指出)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容