CM系列的移植的精髓在于底层的适配,就在于安卓的上层跟内核底层的适配,更具体的硬件的适配。

      CM系列的移植的精髓在于底层的适配,就在于安卓的上层跟内核底层的适配,更具体的硬件的适配。
      首先是编译,环境的设置参考普通教程的环境设置。源码的存放的分区需要支持大小写敏感,支持大小写敏感的文件系统包括ext4,ext3等linux专用文件系统以及NTFS文件系统,说到这里,不得不说一句,NTFS文件系统作为微软的私有文件系统,并不开源,虽然NTFS的骨子里支持大小写敏感,但是在微软的NTFS驱动中却不支持大小写敏感,自己写的文件系统却没有实现他的全部特性,微软真是一个奇葩。
      首先我们需要下载CM的源码repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
repo sync这样将会下载CM10.2的源码,下载大概**GB左右,总的占用空间会占用20GB左右,最终的编译中产生的文件大概还有8GB,所以这个分区大小就自己看着办吧。
      在终端中cd到CM源码的目录,运行source build/envsetup.sh完成环境变量以及一些命令的设置,之后需要获取cm的预编译程序cd vendor/cm
./get-prebuilts
cd ../..如果是CM官方支持的机型,则可以运行breakfast 机型代号这样可以获得机型相关的代码,例如要编译9250的CM,运行breakfast maguro,编译9260的CM,运行breakfast superior,当然现在CM官方并不支持9260
有了机型代码之后,cd到机型代码目录,以9250为例cd device/samsung/maguro用USB连接手机,在电脑上继续运行./extract-files.sh
cd ../../..获得机型相关的专有so文件以及其他的配置文件。
运行brunch maguro这样既可开始编译9250的CM10.2


如果没有CM的支持,我们需要自己写device的内容以及kernel的内容,device是机型的配置目录,包含有相关编译配置以及最重要的HAL层的代码,kernel是内核的源代码目录,可从三星开源网站下载,其他好说,HAL层的适配最为重要,这一块也是三星等厂商最为不开源的地方,这也就是驱动。由于谷歌每更新一次版本,HAL的接口都会变,所以如果是同版本移植,如4.1.2移植到CM10,HAL层可以照搬,但是跨版本移植需要重写驱动,这就不是本教程的内容了

posted on 2015-04-18 09:33  何林子  阅读(1522)  评论(0编辑  收藏  举报

导航