Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21175
  • 博文数量: 10
  • 博客积分: 315
  • 博客等级: 一等列兵
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 16:50
文章分类

全部博文(10)

文章存档

2011年(5)

2010年(5)

我的朋友
最近访客

分类: LINUX

2011-11-12 15:35:02

,简称CM,是最活跃的民间android制作团体,目前的最新版是CM7.1,基于gingerbread 2.3.7_r1, 支持100多部手机.非常厉害。索爱最近也对CM提供了支持,使得2011年的索爱手机有幸进入了CM7.1支持列表。如今手头正好有一部索爱MT15i,也想自己编译CM 7.1的ROM玩一下。

是学习的起点。

下载代码 (2011年10月底,下载为15G)
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
repo sync

下载后的代码的目录结构,与标准谷歌android基本一致,主要区别:

1 device目录内容更丰富

CM支持的厂商和型号全部在列,device相关的文件超过6G,其中包含了预先编译好的kernel。
标准android 2.3.7只有google/htc/samsung几个子目录

2 vendor目录

有一些CM自己的脚本,有qcom几个文件,有tmobile几个文件,build之前,厂商私有文件也会copy到这个目录,详见下。其它暂时忽略。

3 含kernel, system,不含modem

另外,CM和谷歌的代码一样,只包含application processor的linux代码,不包含modem源码。
在编译CM的时候,kernel一般是提前build好的二进制(kernel源码可以到厂商developer主页下载)
CM只是编译system的部分。
在刷CM的ROM时候,主要是刷linux kernel和system分区,同时会保留原厂的modem固件。

首次编译前的准备工作(假设源代码下载目录为~/android/system):

cd ~/android/system/device/semc/hallon/                          #semc hallon就是索爱MT15i
./extract-files.sh                                                               #把索爱私有文件从手机中copy出来
~/android/system/vendor/cyanogen/get-rommanager       #下载clockworkmod.com的最新rommanager工具,强大的ROM下载更新备份还原功能,需要root权限

extract-files.sh会读取手机中的私有文件列表,再用adb pull命令把这些文件copy出来,用于编译过程。 对于索爱MT15i来说propiretary-files.txt如下:


  1. # Prebuilt kl keymaps       按键布局
  2. usr/keychars/qwerty.kcm.bin
  3. usr/keylayout/atdaemon.kl
  4. usr/keylayout/AVRCP.kl
  5. usr/keylayout/msm_pmic_pwr_key.kl
  6. usr/keylayout/pm8058-keypad.kl
  7. usr/keylayout/qwerty.kl
  8. usr/keylayout/simple_remote.kl
  9. usr/keychars/us104-keyboard.kcm.bin
  10. usr/keylayout/us104-keyboard.kl
  11. usr/keylayout/usb_mouse.kl

  12. ## RIL related stuff        电话相关
  13. lib/libril.so
  14. bin/port-bridge
  15. bin/qmuxd
  16. lib/libauth.so
  17. lib/libcm.so
  18. lib/libdiag.so
  19. lib/libdll.so
  20. lib/libdsm.so
  21. lib/libdss.so
  22. lib/libgsdi_exp.so
  23. lib/libgstk_exp.so
  24. lib/libmmgsdilib.so
  25. lib/libnv.so
  26. lib/liboem_rapi.so
  27. lib/liboncrpc.so
  28. lib/libpbmlib.so
  29. lib/libqmi.so
  30. lib/libqueue.so
  31. lib/libuim.so
  32. lib/libreference-ril.so
  33. lib/libril-qc-1.so
  34. lib/libwms.so
  35. lib/libwmsts.so
  36. lib/libdsi_netctrl.so
  37. lib/libdsutils.so
  38. lib/libidl.so
  39. lib/libnetmgr.so
  40. lib/libqdp.so
  41. bin/netmgrd


  42. ## Camera proprietaries           相机相关
  43. etc/permissions/android.hardware.camera.front.xml
  44. lib/liboemcamera.so
  45. lib/libmmjpeg.so
  46. lib/libmmipl.so
  47. lib/libcamera.so
  48. lib/libcamera_clientsemc.so
  49. lib/libcald_client.so
  50. lib/libcald_debugger.so
  51. lib/libcald_hal.so
  52. lib/libcald_imageutil.so
  53. lib/libcald_pal.so
  54. lib/libcald_server.so
  55. lib/libface.so
  56. lib/libgemini.so
  57. lib/libcameraextensionclient.so
  58. lib/libcameraextensionjni.so
  59. lib/libcameraextensionservice.so
  60. lib/libcameralight.so
  61. usr/semc/camera/APT00YP0.dat
  62. usr/semc/camera/APT00YP0_MT9V144.dat
  63. usr/semc/camera/LGI08BN0.dat
  64. usr/semc/camera/LGI08BN0_DW9714.dat
  65. usr/semc/camera/LGI08BN0_IMX105.dat
  66. usr/semc/camera/LGI08BN1.dat
  67. usr/semc/camera/LGI08BN1_DW9714.dat
  68. usr/semc/camera/LGI08BN1_IMX105.dat
  69. usr/semc/camera/LM3560_01_flash.dat
  70. usr/semc/camera/SOD08BN0.dat
  71. usr/semc/camera/SOD08BN0_DW9714.dat
  72. usr/semc/camera/SOD08BN0_IMX073.dat
  73. usr/semc/camera/SOD08BN1.dat
  74. usr/semc/camera/SOD08BN1_DW9714.dat
  75. usr/semc/camera/SOD08BN1_IMX105.dat

  76. ## FIRMWARE
  77. etc/firmware/bq27520_fw-0507_filever-0112_proj-hall_golden.bqfs   电池管理芯片
  78. etc/firmware/fm_rx_init_1273.1.bts                                TI 1273芯片,支持FM功能
  79. etc/firmware/fm_rx_init_1273.2.bts
  80. etc/firmware/fm_tx_init_1273.1.bts
  81. etc/firmware/fm_tx_init_1273.2.bts
  82. etc/firmware/fmc_init_1273.1.bts
  83. etc/firmware/fmc_init_1273.2.bts
  84. etc/firmware/TIInit_7.5.20.bts
  85. etc/firmware/TIInit_7.6.15.bts
  86. etc/firmware/vidc_720p_command_control.fw
  87. etc/firmware/vidc_720p_h263_dec_mc.fw
  88. etc/firmware/vidc_720p_h264_dec_mc.fw
  89. etc/firmware/vidc_720p_h264_enc_mc.fw
  90. etc/firmware/vidc_720p_mp4_dec_mc.fw
  91. etc/firmware/vidc_720p_mp4_enc_mc.fw
  92. etc/firmware/vidc_720p_vc1_dec_mc.fw
  93. etc/firmware/yamato_pfp.fw
  94. etc/firmware/yamato_pm4.fw


  95. ## WIFI & BT TI1271              蓝牙和WiFi,采用TI 1271芯片,
  96. bin/nvimport
  97. bin/hciattach
  98. etc/init.qcom.bt.sh
  99. etc/wifi/tiwlan.ini
  100. etc/wifi/tiwlan_firmware.bin
  101. etc/wifi/softap/tiwlan_ap.ini
  102. etc/wifi/softap/tiwlan_firmware_ap.bin

  103. ## Other libraries and proprietary binaries
  104. lib/libaudioalsa.so
  105. etc/vold.fstab
  106. etc/sensors.conf                     传感器
  107. lib/hw/sensors.default.so
  108. bin/bq275xx_fwloader                 电池
  109. bin/hdmid                            HDMI
  110. bin/akmd8975                         罗盘三轴加速传感器
  111. bin/touchd
  112. bin/chargemon                       
  113. lib/libmiscta.so

  114. #Touch firmware
  115. etc/firmware/touch_hallon_hitachi.hex
  116. etc/firmware/touch_hallon_sony.hex

  117. ## Adreno 200 files                   3D图形加速硬件在高通的SOC中
  118. lib/libgsl.so
  119. lib/egl/libGLESv1_CM_adreno200.so
  120. lib/egl/libq3dtools_adreno200.so
  121. lib/egl/libEGL_adreno200.so
  122. lib/egl/libGLESv2_adreno200.so

  123. #HDMI                                 索爱这款手机有个HDMI输出口
  124. bin/hdmid
  125. lib/libhdmidisplay.so
  126. app/SemcHdmiControlService.apk
  127. framework/com.sonyericsson.privateapis_impl.jar
  128. etc/permissions/com.sonyericsson.privateapis.xml

  129. #ANT*
  130. app/AntHalService.apk
  131. etc/permissions/com.dsi.ant.antradio_library.xml
  132. framework/com.dsi.ant.antradio_library.jar
  133. lib/libanthal.so

不完全开源

私有文件,听起来有点邪恶,就是没有源代码的意思。在编译open source时需要用到他们。 每款手机的私有文件都不一样,不知道CM是如何管理这个文件列表的,不管怎么说,看起来井井有条。

不是说CM不开源,而是从根儿上,AOSP就不开源。看看Android 4.0的声明:

Starting with IceCreamSandwich, the Android Open-Source Project can't be used from pure source code only, and requires additional hardware-related proprietary libraries to run, specifically for hardware graphics acceleration.

Official binaries for Nexus S, Nexus S 4G, Galaxy Nexus, and PandaBoard can be downloaded from , which add access to additional hardware capabilities with non-Open-Source code.

对于AOSP项目,谷歌把自己的nexus私有文件放在网上下载。

对于CM来说,把100多个手机的私有二进制文件都放到自己的网页上,可能得不到厂家的授权,所以要执行extract-files.sh从手机里面copy出来。


开始编译

brunch hallon

待续

 







阅读(3248) | 评论(0) | 转发(0) |
0

上一篇:sunspot 学习杂记 9 Squawk VM 启动过程

下一篇:没有了

给主人留下些什么吧!~~