安卓系統(tǒng)移植經(jīng)驗之談,教你三分鐘移植.doc_第1頁
安卓系統(tǒng)移植經(jīng)驗之談,教你三分鐘移植.doc_第2頁
安卓系統(tǒng)移植經(jīng)驗之談,教你三分鐘移植.doc_第3頁
安卓系統(tǒng)移植經(jīng)驗之談,教你三分鐘移植.doc_第4頁
安卓系統(tǒng)移植經(jīng)驗之談,教你三分鐘移植.doc_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

每當我閑下來時不發(fā)Rom時,就會整理一下思路,發(fā)發(fā)教程啥的,我覺得能帶動機油們自己打造、改造Rom,共同提升,才是Romer的追求。發(fā)Rom也好,教程也好,我的宗旨是不設回復可見,如果你覺得好,回復或者評分鼓勵一下,我就很開心了。不過這樣做的一個遺憾就是,我的帖子通常回復率不夠高,沉得快。好了,閑話少說,上教程。注:可能你會覺得文字教程比較干枯,不夠形象生動,但是請精心看,我會盡量講得具體、清晰。首先,我并不算是移植高手,這個教程只是我在自己移植過程中的的一些收獲體會,一些經(jīng)驗之談。如果你覺得有什么不對或值得改進的地方,歡迎和我交流,我們一起來完善這個教程。因為移植所涉及的機型、配置相當多變和復雜,所以我無法講具體細節(jié),只能講大致的原則。可以結合我移植U8800+的JoyOS到U8860的例子作為參考進行理解。我把這些原則抽象出來,命名為Rom移植5步法,具有一定的通用性。Rom移植的方向有 正向 和 逆向 之分:正向的做法通常就是,找個目標機型的底包,然后把要移植的包的app和framework提取出來替換進去。這樣的優(yōu)點是改動無需太大,非??旖?;缺點是經(jīng)常因為一些bin下的程序或者庫文件的差異而導致成功率不夠高。逆向的做法是,拿要移植的包作為底包,把目標機型的內核、wifi驅動、傳感器庫文件、配置文件等替換進去。這樣做要復雜一些,需要準確兩個包的差異,知道應該改哪里;優(yōu)點自然是不成則已,一旦移植成功能最大限度地發(fā)揮Rom性能,因為框架、程序與底層的契合度要比正向法好。我這個教程以逆向法為例。另外,Rom移植有風險,刷機測試需謹慎,如有本人操作不當導致出現(xiàn)任何問題,本人概不負責。Rom移植5步法:1.Rom移植涉及的東西比較偏底層,所以在移植之前必須清楚目標機型的硬件配置,分區(qū)結構。這里的配置不是說主頻多少、內存多少,這兩個參數(shù)基本上不會影響移植的進行。對于移植,最關鍵的因素是主板平臺,通常采用同一系列的cpu的不同機型的Rom移植的成功率要高很多。比如,U8800+和U8860均是高通8255處理器,雖然主頻不一樣,但它們卻同屬于同樣的MSM7x30平臺。他們之間的互相移植,絕對要比與MSM7K平臺的中興V880互相移植來的容易得多。至于為什么要弄清分區(qū)結構,會在下面講到。所以,5步法的第一步就是弄清楚自己目標機型的配置,從而選定一個合適的Rom源包。同時,也必須找一個或多個目標機型上能用的合適的底包,盡量與源包同源或者屬于同一Android版本。例:我要移植JoyOS到華為榮耀U8860,在對比配置和分區(qū)結構后選擇了華為U8800+的JoyOS包作為Rom源包。由于JoyOS也是基于CM7修改的,所以我找的底包是U8860的CM7.2,同時也把華為官方的B876拿出來作為參考。為什么選U8800+,而不選U8800?因為U+采用和榮耀一樣的wifi芯片,接口均為eth0,而U8800的卻是wlan0,自然用U+會省下不少麻煩。2.第一步里你已經(jīng)了解了兩款機型配置的相同或相近之處,這一步則相反,我們需要找出二者的不同之處。這樣做的目的是為了知道我們到底需要改動什么來使一款機器的包能在另一款上使用。首先,二者的底層硬件驅動會有所不同,我們通常都是直接替換內核來解決這個問題,即boot.img。有時,還需要在system/bin文件夾里添加必要的程序和服務。system/usr下的key打頭的兩個文件夾是按鍵配置相關的,通常也需要替換。其次,二者的傳感器通常會有所差別,system/lib/hw目錄下的庫文件都是傳感器等相關的。再次,system/etc文件夾下放置著許多的系統(tǒng)配置文件。我們需要關注的文件或文件夾通常有 bluetooth、firmware、permissions、 wifi 四個文件夾(如果有的話)。還有enhanced.conf(G大腳本的配置文件)、media_profiles.xml(媒體配置文件)、vold.fstab(存儲分區(qū)配置文件)。最后,再檢查一下system目錄下是否還有vendor、wifi文件夾。上述不同的地方,通常就先對比,如有不同,就需要我們用目標機型的替換之。例:U8800+的平臺主板一致,內核可以通用,無需替換。bin下需要添加 akmd8975 藍牙芯片相關服務,hdmid HDMI輸出服務(非必要)等,這里要同時參考底包和官方包。弄清這些程序或服務的名字的最好辦法是解開關官方的boot.img,看注釋。system/lib/hw 下的傳感器庫文件有差異,刪掉帶u8800名稱的,用來自u8860的CM的相應文件替換。此時也可以參考一下官方包中此文件夾的內容。二者 wifi 芯片一致,system下的vendor、wifi文件夾無需替換(這就是我為什么選U+,而不選U8800的原因)。system/usr下的按鍵配置文件一致,無需替換。etc下的bluetooth、firmware、wifi一致,無需替換。enhanced.conf文件不一致,U+是1G主頻,榮耀是1.4,需要替換。media_profiles.xml不一致,U+無前置攝像頭,榮耀有,需要替換。vold.fstab一致,二者均有內部存儲分區(qū)和sd,而且掛載點也是一致的,無需替換。以上操作,建議用 beyond compare 程序進行對比,能用文本編輯器打開的簡單文件也可肉眼比對。找出差異,如有不同,替換即可。3.經(jīng)過上面兩步,該相近或者相同的地方我們已經(jīng)利用了,不同的關鍵之處我們已經(jīng)修改為相同了。原則上應該差不多完成了,接下來要檢查和修改的有兩處。p, 機型改過來,其他必要的參數(shù)改過來,前提是你要熟稔這些參數(shù)是干什么的,否則暫時只改機型就夠了。刷機腳本 ,第一步我們說到要了解機子的分區(qū)結構,刷機腳本內含分區(qū)掛載和格式化的命令。不同廠商的不同機型的分區(qū)結構是不一樣的,而且還一般不能做修改。買臺電腦回家,我們可以自己任意分區(qū),重裝系統(tǒng),手機卻不能這樣如果分區(qū)結構不同,而刷機腳本不做修改,將不該改動的分區(qū)掛載并修改了的話,等著變磚吧。我舉個例子:華為榮耀的分區(qū)結構是 /dev/block/mmcblk0p1為 .cust_backup 分區(qū),boot.img在這里/dev/block/mmcblk0p6為 cache 分區(qū)/dev/block/mmcblk0p12為 system 分區(qū)/dev/block/mmcblk0p13為 data 分區(qū)如果你用文本編輯器(記事本也可以)打開system/etc下的vold.fstab,會看到dev_mount emmc /HWUserData 14 /devices/platform/msm_sdcc.2/mmc_host/mmc0 內部SD卡dev_mount sdcard /mnt/sdcard auto /devices/platform/msm_sdcc.4/mmc_host/mmc2 SD卡其他分區(qū)暫不需要關注。華為榮耀的分區(qū)和U8800+是一致的,二者Rom可以互刷而不會變磚,只是功能會不完善,所以才要移植。三星i9100的分區(qū)結構則是/dev/block/mmcblk0p9 為 systemdev/block/mmcblk0p7 為 cache/dev/block/mmcblk0p10 為 data假如你要把三星i9100的rom刷進榮耀(或者你移植i9100的rom而不修改刷機腳本)的話,那么,慘了。你把榮耀的/dev/block/mmcblk0p9分區(qū)給格式化,把rom刷寫進去了,結果自然是變磚了。這就是我在 這個帖子 里寫下下面這段話的原因。assert(getprop(duct.device) = blade | getprop(duct) = blade | getprop(duct.board) = blade);獲取手機信息,驗證你的手機到底是不是V880,否則將無法刷入。這是為了防止讓一些其他機型的小白誤刷咱們V880的Rom從而發(fā)生變磚的慘劇。不加這行的Rom所有機型都可以刷入,建議Rom同行或者補丁制作者們一定要加上,人性化關懷。當然,你不加這些,但在補丁或Rom發(fā)布時仔細說明適用機型的話也是可以的。4.接下來就是測試了,一般如果內核與庫文件、庫文件與上層框架兼容的話,至少能開機。如果卡第一屏了,分析原因,一點點排查,看腳本有無問題,看內核是否的確已經(jīng)替換,看傳感器等庫文件是否合理替換.失敗并不可拍,怕的就是沒有正視失敗,重頭再來的勇氣。5.如果能成功進入系統(tǒng),最后就是要一點點地完善了。如聲音不正常那個,可更換system/lib下聲音相關的庫文件;相機不正常,同樣是這個目錄下的有關文件;這個過程要遵循單一變量原則,一次性盡可能只改動你確定的一點點,否則你無法確定到底是哪出修改發(fā)揮了作用。遇見最多的自然是wifi、藍牙、相機、信號等問題。這時要善于利用手邊的rom包,尤其是別人已經(jīng)在本機型或相近機型移植成功的包??纯此麄兪窃趺葱薷牡模蛘吣苈?lián)系到Rom作者本人,向他們咨詢那是最好的。能開機進入系統(tǒng)是移植成功的第一步,真正好需要完善的東西是上層的應用,這是后話。例如:JoyOS沒做過500萬以上像素的機型,所以,移植過來的相機的參數(shù)設置最大只能500萬,囧。這時只好用cm或者mq的的相機替換了。能靜下心看懂這些步驟的話,移植的基本思路和方法就差不多了。只是移植的環(huán)境復雜多變,具體場合還請各位具體摸索,我就不多說了。我標題所說的,三分鐘內就可以把JoyOS移植到榮耀,這個三分鐘當然不是說看完此貼并掌握只需三分鐘。是指熟練操作后可以很簡單地進行移植,當然,源包很重要!-想想不能光說不練,順手把最新移植的JoyOS-1.1.8傳上來。已精簡谷歌服務,加入RE管理器和關機重啟,替換可以800萬的相機。加入百度輸入法,附上iphone皮膚一款,解壓點擊即可安裝,然后去輸入法里切花皮膚即可。Rom下載地址 /c0uw2bg4uuhttp:/115.com

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論