CM 11.0 13.0 源码编译过程

CM 11.0 13.0 源码编译过程

前言

有一台很老的Nexus S机器,很久不用。当前又在研究框架的一些东西,遂想自己下载源码、编译、烧录以及验证自己的修改。可以去Google网站Nexus s对应源码,但网络访问限,操作不便。所以便下载了大名鼎鼎的CM源码,可玩性与趣味性都不输原生系统。

进入CM官网crespo页面,可以看到各种Build版本,最新是基于CM 11.0的。所以,下载源码就下载cm-11.0分支就好了。cm-12.0、cm-13.0没有针对nexus s 的版本。之前对此也不甚了解,下载cm-13.0代码,结果怎么也无法找到crespo的product, 白折腾了一番。

如果想下载Google镜像,来这里:https://developers.google.com/android/nexus/images#instructions

既然说到cm-13.0, 那就多说一点。此分支是目前最新版本,适用Nexus 6. 下载之后编译可以正常通过。但是我是在Mac OS上编译的,中间会出现sed相关语法错误,原因是Mac下sed语法与GNU有差别,推荐使用brew工具重新安装gnu-sed就可以解决sed总是,安装sed的时候,使用–with-default-name来覆盖原来的sed, 命令如下:

brew install gnu-sed –with-default-names

cm-11.0代码使用mac机器就不行了,Mac sdk目前是最新的,无法用于编译之前的cm-11.0代码。只能用虚拟机安装一个Ubuntu 12.04来编译.

代码下载

下载代码如何操作,可以能考CM官网的手册“How To Build CyanogenMod For Google Nexus S (“crespo”)”. 除要下载基本代码之后,还要下载kernel和device代码,具体步骤也参考上面的步骤。

因为我们要下载cm-11.0代码即可,指定如下分支:

repo init -u https://github.com/CyanogenMod/android.git -b cm-11.0

由于网络不稳定,经常在repo 失败后得闲尝试,准备如下脚本进行下载:

    #!/bin/bash
    export http_proxy="xxxxxx:xx"
    export https_proxy="xxxxxx:xx"
    #for i in {1..200}
    #do
    #       repo sync
    #done
    echo "======start repo sync======"
    repo sync --force-sync --force-broken
    while [ $? == 1 ]; do
        echo "======sync failed, re-sync again======"
        sleep 5
    repo sync --force-sync  --force-broken
    done 

代码编译

下载完成之后,使用brunch crespo 进行编译即可。 由于我是使用虚拟机安装Ubuntu系统进行编译,发现很耗内存,实际物理内存分配给4G, 又添加4G swap分区给虚拟机。尽管看起来内存足够了,但在编译recocery.img的时候还是非常的慢。 如果没有添加swap分区,很可能耗尽物理内存而卡死。我自己遇到好几次这种情况,由于经验不足,误以为是CPU调度引起死机,实际上内存被耗尽。

版本下载

编译完成之后,进入out/target/product/crespo目录,就是编译的结果。
CM官方给的说明是先烧录recovery.img, 然后将cm-11.0….zip文件放入sdcard中,采用recover升级的方式进行。可以使用手动操作,也可以用如下命令:

fastboot -w update cm-11-20160709-UNOFFICIAL-crespo.zip

但是我编译生成的zip文件系统说有错误: EOCD not found not zip。这种升级方式没法进行。
那只有使用编译结果,运行fastboot模式烧录。
先进入fastboot模式, 如果机器adb 可以连接,使用如下命令:

adb reboot bootloader

也可以使用手动操作方法:通过usb线连接计算机,下电池。然后按住电源键和音量上键,接入电池,就立即进入fasbboot模式。然后使用如下命令烧录:

fastboot flash system system.img
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash userdata userdata.img

我在下载的时候,system分区始终有问题,无法正常烧录。后来执行一个如下命令删除旧分区即可:

fastboot erase system -w

参考文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值