本教程將為大家介紹X-UI的拼包移植教程.其實(shí)拼包移植,與其他UI的也是大同小異,有幾點(diǎn)需要注意的,已經(jīng)在文中注明了,請認(rèn)真觀看教程!祝您移植成功!
教程概覽
- 分析整個(gè)ROM包內(nèi)的大致框架及各個(gè)文件的作用
- 移植XUI刷機(jī)ROM前的準(zhǔn)備
- 移植過程所要執(zhí)行的操作
- 最后修改build.prop文件
- 移植完成以后進(jìn)行為ROM簽名打包
- 刷機(jī)測試過程中,對一些常見的bug的分析以及解決的方法
步驟方法
一、 分析整個(gè)ROM包內(nèi)的大致框架及各個(gè)文件的作用
- system/app這個(gè)里面主要存放的是常規(guī)的應(yīng)用程序,都是以apk格式結(jié)尾的文件,在這個(gè)文件夾下面的程序?yàn)橄到y(tǒng)默認(rèn)的組件,個(gè)人安裝的軟件不會出現(xiàn)在這里,而是data文件夾中。
- system/bin 這個(gè)目錄下的文件都是系統(tǒng)的本地程序,從bin文件夾名稱可以看出是binary 二進(jìn)制的程序,里面主要是Linux系統(tǒng)自帶的組件。
- system/etc 該文件夾下保存的都是系統(tǒng)的配置文件,比如APN接入點(diǎn)設(shè)置等核心的配置。
- system/fonts 該文件夾下除了標(biāo)準(zhǔn)字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫或者一些unicode字庫。
- system/framework 該文件夾下主要是一些核心的文件,是系統(tǒng)平臺的框架。
- system/lib目錄中存放的主要是系統(tǒng)的底層庫,比如系統(tǒng)平臺運(yùn)行時(shí)的服務(wù)庫,移植過程中很多關(guān)鍵的地方在于此。
- system/media 該文件下包括開機(jī)動畫的文件、音樂鈴聲文件夾,除此以外還包括一些系統(tǒng)提示音文件
- system/usr 用戶文件夾,包括一些共享、時(shí)區(qū)文件、鍵盤的一些布局文件。
- 接下來是一些相關(guān)文件的介紹
1、部分System/bin:
\\system\\bin\\app_process 系統(tǒng)進(jìn)程
\\system\\bin\\dalvikvm Dalvik虛擬機(jī)宿主
\\system\\bin\\dbus-daemon 系統(tǒng)BUS總線監(jiān)控
\\system\\bin\\debuggerd 調(diào)試器
\\system\\bin\\debug_tool 調(diào)試工具
\\system\\bin\\dexopt DEX選項(xiàng)
\\system\\bin\\dhcpcd DHCP服務(wù)器
\\system\\bin\\dumpstate 狀態(tài)抓取器
\\system\\bin\\dumpsys 系統(tǒng)抓取器
\\system\\bin\\hcid HCID內(nèi)核
\\system\\bin\\mountd 存儲掛載器
\\system\\bin\\netcfg 網(wǎng)絡(luò)設(shè)置
\\system\\bin\\ping Ping程序
\\system\\bin\\playmp3 MP3播放器
\\system\\bin\\pm 包管理器
\\system\\bin\\qemud QEMU虛擬機(jī)
\\system\\bin\\radiooptions 無線選項(xiàng)
\\system\\bin\\rild RIL組件
\\system\\bin\\servicemanager 服務(wù)管理器
\\system\\bin\\ssltest SSL測試
\\system\\bin\\su**ceflinger 觸摸感應(yīng)驅(qū)動
\\system\\bin\\svc 服務(wù)
2、部分system/etc
\\system\\etc\\apns-conf.xml APN接入點(diǎn)配置文件
\\system\\etc\\AudioFilter.csv 音頻過濾器配置文件
\system\\etc\\bookmarks.xml 書簽數(shù)據(jù)庫
\\system\\etc\\dbus.conf 總線監(jiān)視配置文件
\\system\\etc\\favorites.xml 收藏夾
\\system\\etc\\firmware 固件信息
\\system\\etc\\gps.conf GPS設(shè)置文件
\\system\\etc\\hcid.conf內(nèi)核HCID配置文件
\\system\\etc\\hosts 網(wǎng)絡(luò)DNS緩存
\\system\\etc\\mountd.conf 存儲掛載配置文件
\\system\\etc\\NOTICE.html 提示網(wǎng)頁
\\system\\etc\\permissions.xml 權(quán)限許可
3、部分system/lib
\\system\\lib\\libandroid_runtime.so Android運(yùn)行時(shí)庫
\\system\\lib\\libandroid_servers.so 系統(tǒng)服務(wù)組件
\\system\\lib\\libaudio.so 音頻處理
\\system\\lib\\libaudioeq.so EQ均衡器
\\system\\lib\\libaudioflinger.so 音頻過濾器
\\system\\lib\\libbluetooth.so 藍(lán)牙組件
\system\\lib\\libcamera.so 相機(jī)組件
\system\\lib\\libcrypto.so 加密組件
\\system\\lib\\libdrm1.so DRM解析庫
二、移植XUI刷機(jī)ROM前的準(zhǔn)備
- 首先建議安裝對比工具BeyondCompare (網(wǎng)上資源很多,直接百度或google 搜索BeyondCompare)
- 建議Linux環(huán)境ubuntu系統(tǒng)(該系統(tǒng)下可以使用赫赫有名的Android廚房工具)
- Android廚房工具的使用方法在此略過...(Android廚房工具中文版里面相關(guān)的功能都有明確的指導(dǎo),簡單易用)
- 準(zhǔn)備要移植機(jī)型的底包,移植XUI,找到合適的底包也是關(guān)鍵所在。本教程中我們講的是第三方ROM的移植,不包括官方ROM和官方ROM美化版。選取底包的條件是:
1、首先在相應(yīng)官網(wǎng)找到分辨率類似的機(jī)型。
2、首先要找到自己對應(yīng)機(jī)型ROM,如CM 10,如果是Android4.0的推薦使用AOKP(谷歌開源非官方代碼項(xiàng)目)版本的ROM。
3、所選擇的作為底包的ROM要盡量功能完善;還要保證刷機(jī)腳本的通用性;在刷機(jī)包的 META-INF/com/google/android/內(nèi)的updater-script是刷機(jī)的腳本,打開刷機(jī)腳本,將其中的第一行關(guān)于機(jī)型驗(yàn)證的代碼刪除。
4、如果為自己機(jī)型開發(fā)的ROM不是很多的話,則盡量選取使用同一廠商同一平臺的其它機(jī)器的 ROM。
三、移植過程所要執(zhí)行的操作
- 首先移植XUI的應(yīng)用層和framework層,該步驟是將替換system文件夾下的app和framework為XUI的文件內(nèi)容,如下圖:

- 移植應(yīng)用層(system/app)
ALovePhone2.0.1(1175).apk |
XDA助手 |
可以不替換 |
Apollo.apk |
阿波羅音樂播放器 |
建議替換 |
ApplicationsProvider.apk |
XDA應(yīng)用支持 |
必須替換 |
Bluetooth.apk |
藍(lán)牙應(yīng)用組件 |
必須替換 |
Calculator.apk |
計(jì)算器應(yīng)用 |
必須替換 |
Calendar.apk |
日歷應(yīng)用 |
必須替換 |
CalendarProvider.apk |
日歷支持 |
必須替換 |
Camera.apk |
相機(jī)應(yīng)用 |
必須替換 |
Contacts.apk |
通訊錄應(yīng)用 |
必須替換 |
ContactsProvider.apk |
通訊錄支持 |
必須替換 |
DefaultContainerService.apk |
默認(rèn)集成服務(wù) |
可以不替換 |
DeskClock.apk |
時(shí)鐘應(yīng)用 |
必須替換 |
DownloadProvider.apk |
下載管理應(yīng)用 |
可以不替換 |
DownloadProviderUi.apk |
下載管理應(yīng)用支持 |
可以不替換 |
DrmProvider.apk |
受保護(hù)數(shù)據(jù)存儲服務(wù) |
可以不替換 |
Email.apk |
郵件相關(guān)應(yīng)用 |
可以不替換 |
Gallery2.apk |
圖庫相關(guān)應(yīng)用 |
必須替換 |
GanOptimizer.apk |
接入網(wǎng)絡(luò)優(yōu)化應(yīng)用 |
可以不替換 |
HoloSpiralWallpaper.apk |
整體動態(tài)壁紙應(yīng)用相關(guān) |
可以不替換 |
HTMLViewer.apk |
Html查看相關(guān)應(yīng)用 |
可以不替換 |
LiveWallpapers.apk |
動態(tài)壁紙應(yīng)用相關(guān) |
可以不替換 |
MediaProvider.apk |
媒體應(yīng)用支持 |
可以不替換 |
Mms.apk |
短信消息應(yīng)用 |
必須替換 |
PackageInstaller.apk |
安裝包管理應(yīng)用 |
可以不替換 |
Phone.apk |
電話通訊應(yīng)用 |
必須替換 |
QuickSearchBox.apk |
快速搜索應(yīng)用 |
可以不替換 |
Settings.apk |
設(shè)置相關(guān) |
必須替換 |
SettingsProvider.apk |
設(shè)置支持 |
必須替換 |
SoundRecorder.apk |
錄音應(yīng)用 |
必須替換 |
SystemUI.apk |
系統(tǒng)狀態(tài)相關(guān)應(yīng)用 |
必須替換 |
ThemeChooser.apk |
主題選擇應(yīng)用 |
必須替換 |
ThemeManager.apk |
主題管理 |
必須替換 |
Torch.apk |
手電筒應(yīng)用 |
可以不替換 |
xda_clock_white.apk |
XDA桌面時(shí)鐘 |
必須添加 |
XdaClock.apk |
XDA鎖屏相關(guān) |
必須添加 |
備注:如果沒有上述文件,就要添加。
- 移植系統(tǒng)框架層(system/framework)如下圖:
am.jar |
必須替換 |
android.policy.jar |
必須替換 |
android.test.runner.jar |
必須替換 |
apache-xml.jar |
必須替換 |
bmgr.jar |
必須替換 |
bouncycastle.jar |
必須替換 |
bu.jar |
必須替換 |
com.android.future.usb.accessory.jar |
可以不替換 |
com.android.location.provider.jar |
必須替換 |
core.jar |
必須替換 |
core-junit.jar |
必須替換 |
ext.jar |
必須替換 |
filterfw.jar |
必須替換 |
framework.jar |
必須替換 |
framework-res.apk |
必須替換 |
ime.jar |
必須替換 |
input.jar |
必須替換 |
javax.obex.jar |
必須替換 |
monkey.jar |
必須替換 |
pm.jar |
必須替換 |
send_bug.jar |
必須替換 |
services.jar |
必須替換 |
svc.jar |
必須替換 |
備注:如果沒有上述文件,就要添加。
- 移植lib庫文件 (system/lib) 如下圖:
libandroid.so |
必須替換 |
libandroid_servers.so |
必須替換 |
libreference-ril.so |
必須替換 |
libchromatix_s5k3h1gx_default_video.so |
必須替換 |
libchromatix_s5k3h1gx_hfr.so |
必須替換 |
libchromatix_s5k3h1gx_preview.so |
必須替換 |
libchromatix_s5k3h1gx_zsl.so |
必須替換 |
libganril.so |
必須替換 |
libkineto.so |
必須替換 |
libmpl_jni.so |
必須替換 |
libqmiservices.so |
必須替換 |
librilswitch.so |
必須替換 |
備注:如果沒有上述文件,就要添加。
- 移植bin文件(system/bin) 如下圖:
hostapd |
必須替換 |
hostapd_cli |
必須替換 |
netsharing |
必須替換 |
debuggerd |
必須替換 |
備注:如果沒有上述文件,就要添加。
- 系統(tǒng)內(nèi)的system/etc文件暫時(shí)不需要移植
- 在system/media文件內(nèi)是開機(jī)動畫和一些系統(tǒng)鈴聲已經(jīng)自己添加的鈴聲,可以根據(jù)自己的喜好來決定是否移植。
四、最后修改build.prop文件
- ro.xda.version=此處的值必須保留所移植的XUI的build.prop內(nèi)的該值,比如是Bate1.9, 則該值必須是Bate1.9,否則會影響新版本XUI的升級提示。
ro.build.date=該移植版本的制作日期。(請注意日期顯示的格式,否則會出現(xiàn)亂編碼)
ro.build.display.id= "在此可以添加自己的昵稱,簽上制作者名"
ro.product.model=手機(jī)的型號;便于一些輔助軟件的正確識別(比如豌豆莢、91助手等)。
ro.xda.device=該值是手機(jī)設(shè)備的名稱
ro.modversion=所移植的ROM的版本號。(比如該版本是X-UI-Beta1.9)
等等...
五、移植完成以后進(jìn)行為ROM簽名打包
- 順利完成上述步驟后,有關(guān)XUI移植的ROM工作基本完成,接著要對移植的文件進(jìn)行簽名打包,這個(gè)時(shí)候就要用的上文中提到的“android廚房工具”,有關(guān)android廚房的簽名打包過程,在這里就不一一贅述。
將打包得到的zip壓縮文件放于sd卡,進(jìn)入刷機(jī)模式進(jìn)行刷機(jī),想必大家進(jìn)行移植操作的對刷機(jī)流暢都很熟悉了。
六、刷機(jī)測試過程中,對一些常見的bug的分析以及解決的方法
- 鑒于每位ROM制作者所移植的機(jī)型不同,進(jìn)行了不同的修改和替換,難免在刷機(jī)和測試過程可能出現(xiàn)一些bug,接下來是一些常見的bug以及問題的解決方法:
1、bug:在進(jìn)行刷機(jī)測試時(shí)候,手機(jī)屏幕卡在第一屏不能進(jìn)去系統(tǒng)或者卡在開機(jī)動畫或者無限重啟。
解決方法:對該機(jī)型單刷底包的boot.img。如果是自己在移植過程中多替換或者沒有替換system/etc或者system/bin內(nèi)的文件,單刷boot.img也是無濟(jì)于事。
2、 bug:刷機(jī)測試能進(jìn)去系統(tǒng),但是會提示launcher異常終止、手機(jī)主界面圖標(biāo)顯示不完全
解決方法:重新找到和所要移植的XUI分辨率相同或者相似的合適的底包。
3、bug:刷機(jī)測試wifi、和藍(lán)牙打不開
解決方法:替換底包或者相同機(jī)型的其他ROM的wifi或者藍(lán)牙相關(guān)的組件。同時(shí)也不排除是在移植過程中沒有正確移植相應(yīng)的庫文件和驅(qū)動。
4、bug:刷機(jī)測試,手機(jī)SIM卡上網(wǎng)是信號時(shí)有是無
解決方法:找到所移植的XUI包內(nèi)的lib文件夾下,將libganril.so和libreference-ril.so(不同的機(jī)型相關(guān)文件可能還有其他幾個(gè))重新替換到移植后的底包,再重新打包刷機(jī)。
以上只是簡簡單單的提到幾個(gè)常見的問題和解決的方法,可能在移植過程和測試過程中還會有其他的bug,歡迎大家將問題反饋到XDA智能手機(jī)論壇,這里有專業(yè)的技術(shù)團(tuán)隊(duì)成員為您解答疑惑,同時(shí)XDA論壇有更加豐富的智能手機(jī)資源。
最后,祝您移植XUI成功!請大家不要覺得該移植過程繁瑣,因?yàn)橹挥杏H身體會了才知道移植ROM其中的樂趣和刷機(jī)成功那一刻的興奮與激動。