i9502移植rom包进程记录
因為一些原因,這段時間不再折騰rom了。于是 ,就想著把這段時間搜集的資料整理整理,免得以后重新搞機時又走彎路。
????? 2015.03.12:
?????? 上個月開始接觸android手機,三星13年出的旗艦機galaxy s4中國聯通雙卡定制版(型號為i9502)。由于實在無法忍受自帶的touchwiz,就想著換個ROM來玩玩,結果在網上搜了一大圈大多數都是官方精簡版本,還是沒有擺脫touchwiz。想著MIUI,魅族,CM這些感覺有點名氣的ROM會不會有該機得適配呢? 還好在MIUI論壇發現了該機的適配,總算時拜托了三星官方那個“不好看”的UI了。
???? 體驗了一兩周后,發現小米系統也不是像周圍人說得那么好。于是又混跡各大論壇三星S4板塊搜尋,最終鎖定了CM rom,但是只有i9500的rom,并沒有搜到有關移植到i9502的文章。這段時間,看了很多關于android系統的博客,知道了AOSP項目,CM項目,github。。。。
以下是移植想法的產生與進程的記錄:
1,移植rom包的原因:當然就是看不慣三星官方UI,也不怎么喜歡MIUI,對CM rom一見鐘情,可惜沒有該機的適配。
2,移植的底包的選用:首選i9500,最初發現好像兩款機器支持的網絡不同,一個是單卡,一個是雙卡。后來發現兩款機器除了這個外,還有一個比較重要得區別就是采用的音頻芯片不同,通過對三星開源網址(opensource.samsung.com)下載的內核源碼的編譯配置defconfig文件發現(該文件位于/arm/config/),i9500采用Wolfson的WM5012,而i9502采用的是 yamaha的 y821,我想這也就是為什么當初直接刷i9500的包,要么卡在bootanimation 要么就什么也不顯示的原因之一吧。內核中根本就沒有音頻驅動呀!!根據CM 官網的移植教程 http://wiki.cyanogenmod.org/w/Doc:_porting_intro 以及 三星開源內核的readme文件,終于用arm-eabi4.6 編譯內核成功。當時發現了一個CM變種的貌似是中國本土的第三方編譯ROM,魔趣,就想著試一試,解包boot.img,替換掉zimage,用上我自己編譯的,看能不能行。結果,啟動成功了!
? 啟動成功了,但是還是沒聲音的,還沒有audio HAL。
3,samsung Note3 (N900)也采用的是y821音頻。經過對比i9500和i9502官方包,以及i9502和n900rom包。發現,要讓y821有聲音,rom包的system目錄下必備以下文件:
lib/hw/audio_policy.universal5410.so
lib/hw/audio.primary.universal5410.so
lib/libymc_codecctrl.so
lib/libymc_config.so
#lib/libsamsungSoundbooster_ext.so
lib/lib_Samsung_Resampler.so
lib/lib_soundaliveresampler.so
lib/libsamsungRecord.so
lib/libsamsungRecord_ns.so
#lib/libsamsungRecord_zoom.so
lib/libaudiopolicy_sec.so
lib/lib_SoundAlive_SRC192_ver204.so
lib/lib_SamsungRec_V03011b.so
lib/lib_DNSe_NRSS_ver225.so
#lib/lib_Samsung_AudioZoom_v102.so
#lib/lib_SoundBooster_ver402.so
lib/libcontrolcsc.so
vendor/firmware/es325_fw.bin
csc/sales_code.dat
usr/share/alsa/alsa.conf
vendor/firmware/srp_cga.bin
vendor/firmware/srp_data.bin
vendor/firmware/srp_vliw.bin
以上文件是根據 github上n900的device (https://github.com/flashka07/android_device_samsung_ha3g)配置文件 proprietary-file.txt,修改然后從官方ROM中提取出
特別是audio.primary.xx.so,該文件和i9500有區別,i9500的音頻驅動在github上能找到開源代碼。而y821卻沒有,所以我想除非自己有能力編寫HAL層代碼,不然就只有用官方的了(ha3g CM 移植的高手貌似也是直接用得官方的吧。)
但是光替換這些系統反而會啟動不了。 提取logcat文件會發現卡在Waiting for sevice media.audio..
http://blog.csdn.net/lamdoc/article/details/7708212 這篇文章提出了個解決方法。還沒試。
總結:
1) 替換mokee i9500的ROMd的 內核,除了音頻不能用,其他功能基本不會FC
2) 替換上述文件會卡在 Waiting for sevice media.audio.
補充:
? 在ubuntu下查看 so文件得依賴關系可以用 readelf -d? XX.so?
?可以替換 so文件的 soname? 直接用n900的 audio HAL--待解決
整個移植過程記錄就記在這里。等下次對整個android系統了解了再從頭開始吧
收藏的待看的大牛的博客地址:
?老羅的android的安卓之旅? http://blog.csdn.net/Luoshengyang/
android音頻系統相關博客文章:
http://blog.csdn.net/qianjin0703/article/details/6387662
http://blog.csdn.net/zgyrelax/article/details/40619731
http://blog.csdn.net/myarrow/article/details/8185515
深入淺出 android移植系列 http://blog.csdn.net/mr_raptor?viewmode=contents
android學習之路 http://www.stormzhang.com/android/2014/07/07/learn-android-from-rookie/
總結
以上是生活随笔為你收集整理的i9502移植rom包进程记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍一下什么是大数据
- 下一篇: js 图片类型mage/jpeg, im