詳細介紹android rom移植知識普及

來源:互聯網
上載者:User

 詳細介紹android rom移植知識普及

最近接到很多兄弟們的求助,也回答過無數個和下面這個問題類似的問題:

如何編譯android 原生代碼得到一個rom,然後跑到某某手機上。

鑒於很多兄弟對這塊不清楚,我這裡一併簡單回答之。

1 ROM包含兩個基本的image,一個是boot.image,這個image中主要是kernel和檔案系統/目錄下的一些東西。kernel我就不說了,/目錄下主要是init和相關的設定檔

system.image是android系統的userpace的核心,包括/system/bin,system/lib,system/app下的一些東西。

2 手機,不同手機,其內部使用的晶片,配置等等都不同。另外,android源碼中並不包含硬體相關的代碼。也就是說拿標準源碼編譯出來的僅僅在模擬器上跑跑還可以,

拿到真機上,跑也許能跑起來,但也就把手機當個模擬器使,電話,audio,wifi等等和硬體相關的都不能用。沒有什麼為什麼會這樣,硬體相關的驅動是廠商的閉原始碼,

絕對不可能放出來。 不過,android中內建一些htc/sumsing的二進位HAL層so,也是在編譯對應device的時候拷貝到system.image中去的。

所以,基於上面的認識,兄弟們就不要想著拿標準源碼搞出一個能正兒八經跑的rom了。除此之外,手機還有AP/BP之分,BP的代碼是另外一套,相當於另外一個OS,用於

modem通訊的。即使你能搞定AP,BP也不要想了

3 CM是怎麼搞出來的?CM不是神仙,它的工作我估計分下面幾個來完成:

1 boot.image,有可能是直接基於廠商的。例如在HTC G7移植中,直接使用了G7官方的ROM

2 system,image中,跟硬體無關的(也就是非HAL層代碼),愛怎麼改怎麼改。

3 system.image中,跟硬體相關的,先通過adb pull把官方的so弄出來,然後放到自己的ROM中。這裡的工作比較難,但理論上是可以做到二進位相容的。

從上面可知,如果官方沒有提供4.0的ROM,CM也歇菜。(我個人覺得其實是可以在4.0中使用2.3的so的,方法可以通過dlopen方式載入,中間再做一層隔離。但如果

依賴的標頭檔發生變化了,那工作量就大了去了)

4 MIUI,點心OS,是CM之上的二次開發。國人的拿來主義造就了MIUI和點心等其叫囂著做ROM的公司。

綜上,兄弟們不要想著憑一己之力搞個牛叉的ROM了,沒必要,沒意義。

1 想搞rom的,建議在CM基礎上做二次開發,和硬體相關的統統都不要動。

2 想改ui的,也可以基於現有的system.image,換換圖片,然後再打包成image。這個網上有很多做法。技術含量不高,玩玩可以了。

ANY WAY,謝謝兄弟們的信任。歡迎高手就上述知識點和大家argue。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.