① 安卓如何移植同CPU的刷機包
以小米為例說明安卓手機如何移植刷機包:
首先先清楚的了解本機型的硬體配置,也就是主板平台方案,解析度等。
通常同系列的CPU不同機型的ROM拼包移植成功率較高。
挑選合適的底包和移植包,底包和移植包盡量同源。
找出底包和移植包兩者的不同之處:目的是了解需要改動什麼才可以讓別的機型ROM能在自己的機型上面使用,在底包、原生包、移植包上進行交叉對比。
卡刷ROM條件:
機器必須先ROOT
必須有支持的第三方Recovery,沒有第三方Recovery的也就只能反向從機器中進行提取並移植了
支持卡刷的ROM,對於小白來說,卡刷ROM也是最方便的
移植思路及步驟:
底層硬體驅動不同(內核).
刪除移植包裡面的boot.img(內核)和systemlib下的moles文件夾.替換成本機型的內核文件
按鍵配置不同(鍵值).
將移植包systemusr下的keychars和keylayout兩個文件夾替換成本機型的
感測器不同(驅動類)
將移植包systemlib下的hw文件夾替換成本機型的
系統配置文件不同(驅動類)
將移植包systemetc下的bluetooth、firmware、permissions、wifi四個文件夾替換成本機型的(如果有);
其中firmware中的modem.img是負責通信的基帶文件!moles中的文件是開機底層引導驅動,只要這兩處替換成KIS1的,那麼這個ROM一般都能正常啟動進入系統,且有信號!
還有enhanced.conf、media_profiles.xml(多媒體配置文件,即視音頻配置文件)、vold.fstab(存儲分區配置文件);
最後注意system下是否有vendor和wifi文件夾,可以直接用文件對比器進行對比修改;
修改build.prop(屬性)
把自定義的內容起進行直接修改,例如:機型、日期、版本號等.參數如果懂可以修改,如果不懂,建議不動它,只修機型、日期、版本號等;
修改updater-script(刷機腳本)
不同機型的ROM,刷機腳本里包含的分區掛載和格式化命令都有所差異,如果不做修改直接使用,把本不該改動的分區掛載並修改了的話,手機將存在變磚風險,前提需了解自己機器的分區結構
腳本開頭有驗證機型,請刪除,例如assert(getprop(「ro.proct.device」)== 「**x」 || getprop(「ro.proct.proct」) ==
「**xx」)
這是驗證機型的代碼。沒有則無視,也可以修改成自己的機器名稱。ROM打包測試;打包測試了,一般如果內核與庫文件、庫文件與上層框架兼容的話,刷機後至少能開機。
如果卡第一屏了,分析原因,一點點排查,主要看updater-script腳本有無問題,看內核是否已經替換,看感測器等庫文件是否合理替換等;
後續修復BUG工作,主要放在etc和lib、libhw文件夾里進行搜索修改。
音頻audio,相機camera,感應器sensor,燈light。無線wifi,藍牙bluetooth….哪項不正常工作,搜索帶有這些英文的KIS1驅動,替換進去即可!
② 如何移植android 源代碼到自己的手機上
成功將android2.1移植到手機上,需經過以下幾個步驟:
一,准備好android2.1源碼編譯環境以版及手機USB調試環境。權
二,將手機上硬體驅動程序以及相關的配置文件通過ADB命令保存好。
三,針對不同的手機機型,製作相應的vendor配置文件。
四,編譯源碼。
五,通過手機提供的bootloader刷機或者直接以recovery的方式更新ROM。
在以上五個步驟中,其中最難處理的便是第2個步驟,這個步驟需要熟悉每個手機機型的硬體參數,並且能夠在手機上找到相關的驅動程序以及了解他們如何配置。而CyanogenMod團隊公布的源碼當中,己經將相關的工作做好了,
③ 怎樣移植rom
下面說說我的移植方法。因為經驗不足。所以方法可能不是很好。
希望有更好方法的朋友可以分享經驗。
(1)下載自己設備的官方ROM(假設文件名是myrom.img)和想移植的第三方自定義ROM(假設文件名是newrom.img)
(2)解包。
在網上找到unimg工具。把unimg和ROM文件myrom.img和newrom.img都放在同一個目錄下(假設是d:\rom目錄)。把myrom.img和newrom.img文件分別拖到unimg上就可以開始解包。解包後,可以得到一個myrom.img.mp和newrom.img.mp的目錄。
在d:\rom目錄下新建兩個目錄,myrom和b。把myrom.img.mp目錄中的RFSFAT16_BOOT_00000000000文件復制到myrom目錄下。把newrom.img.mp目錄中的RFSFAT16_BOOT_00000000000復制到newrom目錄下。
(3)更新boot分區文件
在網上找bootimg工具。也放到d:\rom目錄下。然後打開命令行窗口。依次輸入如下命令
d:
cd \rom\myrom
..\bootimg.exe --unpack-bootimg RFSFAT16_BOOT_00000000000
(此命令會輸出一些重要的信息,請一定要記下來,等一下打包boot文件時需要用到)
..\bootimg.exe --unpack-ramdisk
cd ..\newrom
..\bootimg.exe --unpack-bootimg RFSFAT16_BOOT_00000000000
..\bootimg.exe --unpack-ramdisk
這樣就可以看到在myrom目錄和newrom目錄下分別解包出如下文件
kernel :Linux內核文件,這個文件不同設備有不同。所以為什麼我們直接刷別人的ROM可能會出現白屏問題。
initrd目錄 :這其實就是系統的根目錄
cpiolist.txt :記錄著initrd目錄中每個文件的許可權和用戶信息,這文件是為了等一下打包用的。我們不用管它。
下面,把myrom目錄和newrom目錄中的initrd目錄下的init.sun4i.rc目錄分別打開(請不要用記事本或寫字板打開這個文件,因為這文件是UNIX格式,如果你用記事本或寫字板打開,保存後會自動變成DOS格式,會破壞文件格式)
找到載入驅動的地方,如下圖。把myrom目錄中init.sun4i.rc文件中對應的內容,替換掉newrom目錄中init.sun4i.rc的對應內容。
並記下myrom文件中要使用的驅動的文件名(等一下要更新system分區時需要用到)。
################################
# insmod vibrator
insmod /system/vendor/moles/sun4i-vibrator.ko (這是振動器驅動,如果不想使用振動器,可禁用這行)
chmod 777 /sys/class/timed_output/sun4i-vibrator/enable (如果禁用了振動器驅動,也要同時禁用這行)
#insmod key & tp driver
insmod /system/vendor/moles/goodix_touch.ko (這就是觸控驅動,通常替換這個驅動已經足夠)
insmod /system/vendor/moles/sun4i-keyboard.ko
# insmod mali driver
insmod /system/vendor/moles/ump.ko
insmod /system/vendor/moles/mali.ko
#csi mole
insmod /system/vendor/moles/videobuf-core.ko
insmod /system/vendor/moles/videobuf-dma-contig.ko
insmod /system/vendor/moles/gt2005.ko
insmod /system/vendor/moles/sun4i_csi0.ko
################################
把更新後的newrom目錄中的init.sun4i.rc文件保存到myrom目錄中,替換myrom目錄的對應的文件。
下面開始重新打包boot分區,請打開命令行窗口,依次輸入如下內容:
d:
cd \rom\myrom
..\bootimg.exe --repack-ramdisk
..\bootimg.exe --repack-bootimg 0x40000000 "console=ttyS0,115200 rw init=/init loglevel=8" 2048 2048
(repack-bootimg後面的一大堆參數是根據之前unpack-bootimg時得到,請大家一定要改為自己設備對應的參數,否則無法啟動)
打包成功後,得到boot.img文件。把boot.img文件改名為RFSFAT16_BOOT_00000000000,並復制到myrom.img.mp目錄下,替換原來的文件。
(4) 更新system分區,如下操作需要在Ubuntu下完成。
把myrom.img.mp和newrom.img.mp中的RFSFAT16_SYSTEM_000000000文件復制到Ubuntu系統下的/root目錄,分別改名為system-myrom和system-newrom,
上網下載ext4_utils工具,並編譯出simg2img,mkuserimg.sh,make_ext4fs 三個程序。並復制到/root目錄下。
然後依次輸入如下命令:
cd /root
./simg2img system-myrom system-myrom.img
./simg2img system-newrom system-newrom.img
mkdir /mnt/img /mnt/img2
mount -o loop system-newrom.img /mnt/img
mount -o loop system-myrom.img /mnt/img2
這時候,你就可以看到兩個ROM的/system分區的內容。下面我們可以把官方ROM中的驅動復制到新ROM中。
cd /mnt/img/vendor/moles
cp -p /mnt/img2/vendor/moles/需要的文件.ko ./
哪些文件要復制過來,就要看(3)中你的設備要用哪些驅動了。
#########################
下面的文件是否需要替換,就要看你的設備與新ROM的區別大不大了,我的領先版2就沒有替換這些文件。
/mnt/img/lib/hw/*.*
/mnt/img/lib/libhardware*.*
#########################
把驅動替換完畢後,就開始打包。
cd /root/
./mkuserimg.sh -s /mnt/img RFSFAT16_SYSTEM_000000000 ext4 system 256M
最後一個參數是說把system打包成一個256MB的分區鏡像,如果你的system大於256MB的話,程序執行會出錯,試試改為512M。
把RFSFAT16_SYSTEM_000000000復制回到windows中,替換掉myrom.img.mp目錄中對應的文件。
最後一步,打包。打開命令行
d:
cd \rom
verifycalc myrom.img.mp\RFSFAT16_SYSTEM_000000000 myrom.img.mp\RFSFAT16_VSYSTEMFS_000000
verifycalc myrom.img.mp\RFSFAT16_BOOT_00000000000 myrom.img.mp\RFSFAT16_VBOOT_0000000000
unimg -e myrom.img
打包後的myrom.img 就可以用livesuite 刷機了。
成功啟動後,如果看到顯示不正常的話,可能因為移植的ROM與我們設備的解析度不一樣。比如我把極光ROM移植到領先版2後就遇到這個問題。
我是通過添加如下設置到新ROM的/system/build.prop文件來解決的。
################
ro.sf.lcd_density=125
################
125這個值是我試出來,在領先版2下可以正常顯示的。你可以自己改成喜歡的數值(在100-200期間改)。
④ 安卓ROM製作需要什麼樣的步驟如何製作一個安卓刷機包求安卓刷機包製作教程
通常製作一個安卓刷機包需要經過:解包,ROM精簡,ROM修改,ROM授權,ROM打包等一系列製作步驟
具體教程如下:
【ROM解包】點擊ROM製作工具中間的「選擇線上ROM...或選擇本地ROM...」,選擇ROM後工具開始自動解包。
以上就是製作ROM的全部過程!