最近接到很多兄弟們的求助,也回答過無數個和下面這個問題類似的問題:
如何編譯android 原生**得到乙個rom,然後跑到某某手機上。
鑑於很多兄弟對這塊不清楚,我這裡一併簡單回答之。
1 rom包含兩個基本的image,乙個是boot.image,這個image中主要是kernel和檔案系統/目錄下的一些東西。kernel我就不說了,/目錄下主要是init和相關的配置檔案
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。
android rom移植知識普及
最近接到很多兄弟們的求助,也回答過無數個和下面這個問題類似的問題 如何編譯android 原生 得到乙個rom,然後跑到某某手機上。鑑於很多兄弟對這塊不清楚,我這裡一併簡單回答之。1 rom包含兩個基本的image,乙個是boot.image,這個image中主要是kernel和檔案系統 目錄下的一...
編譯與製作android ROM
1 編譯android 系統生成 編譯android系統原始碼 output userdata.img system.img ramdisk.img android虛擬機器有android 的kernel bzimage 預設使用,就可以執行了。將ramdisk.img bzimage 打包成boo...
製作Android ROM的步驟
製作android rom有兩種方法 本文介紹的是在已有rom基礎上的定製步驟。解壓縮rom,比如安卓農夫rom 2.4檔名為 n1 2.4 signed 2.zip 解壓縮後,可以看到目錄中 其實,本文介紹的定製rom主要步驟是如何將解開的rom打包簽名,如果只是打包回zip,android是不認...