How To Build CyanogenMod Android (oneplus/bacon) On Linux

8 篇文章 0 订阅
3 篇文章 0 订阅

        本文主要是对已经repo sync完所有cm12源码后,对一加手机(oneplus/bacon)Rom的编译工作,

其他版本可以举一反三。

1.Nexus 7 (“grouper”)build参考

       下面链接是在linux下编译Nexus 7 (“grouper”)的方法,可以提供相关参考。
http://wiki.cyanogenmod.org/w/Build_for_grouper
2.下载相应device和kernel

        repo sync完cm12所有的源码之后,还需要下载device相关文件以及内核源码。
        从cm的官方github页面https://github.com/CyanogenMod搜索设备代号,一加的就是oneplus,有两个结果: android_device_oneplus_bacon、android_kernel_oneplus_msm8974,然后再搜索android_device_qcom_common,点进去把这三个项目git clone <ssh url>下来,或直接点击Download ZIP下载后解压。
       直接用breakfast  bacon就会自动从github上面拉所有需要的东西,这样只需要下载oneplus的device部分。

3.配置device和kernel

        把上面的device和kernel下载完之后要放到正确位置,这里有个比较好的规范就是下载的文件名就表明了相应目录

(android代表根目录)。进到源码的根目录。

        mkdir -p device/oneplus/bacon
        mkdir -p kernel/oneplus/msm8974

        mkdir -p device/qcom/common
把刚才下载的device和kernel解压并放到上面新建的三个目录里面。
4.配置vendor

方法一:      ./extract-files.sh
首先USB连接oneplus手机,确保系统版本跟源码版本一致,然后进到源码 /device/oneplus/bacon/ 这个目录下,执行上面指令。
这个脚本的主要作用是将手机中的驱动so库pull出来,然后新建 /vendor/oneplus/bacon/这个目录,

然后在里面放相应的库文件。

方法二: 上面方法需要手机已装系统,也可以手动去github搜索proprietary_vendor_oneplus下载

      进到源码 /vendor/ 目录下,执行 git clone https://github.com/withyou/proprietary_vendor_oneplus.git

下载后把proprietary_vendor_oneplus重命名为oneplus,然后git branch -av 查看分支,如果不在相应源码分支比如6.0应该checkout到cm-13.0。

配置USB请参考本文:http://blog.csdn.net/lechengyuyuan/article/details/21091245

5.编译

       source build/envsetup.sh

       breakfast bacon

       brunch 选择cm-bacon-userdebug回车(原理就是lunch  &&  make)

      整个编译过程根据PC配置不同需要几个小时不等,编译时也可以根据CPU性能加上- j4参数(4代表核心数) brunch cm-bacon-userdebug  -j4,如果看到Package Complete: .../out/target/product/bacon/cm-12.1-20151102-UNOFFICIAL-bacon.zip,就说明全部编译完成了。

6.编译可能会出现问题

1.

        make: *** No rule to make target `/out/host/linux-x86/bin/dtbToolCM', needed by ‘/out/target/product/bacon/dt.img'.  Stop

        解决方法:从cm的官方github页面https://github.com/CyanogenMod搜索 android_device_qcom_common,Download ZIP.

        mkdir -p device/qcom/common

        把刚才下载的android_device_qcom_common.zip解压后放到刚才新建目录下。

       同理若出现/device/oppo/common/下某文件未找到,同上下载android_device_oppo_common.zip,解压放到相应目录。

2.

        system/vold/cryptfs.c: In function 'load_crypto_mapping_table':      

        system/vold/cryptfs.c:1031:3: error: implicit declaration of function 'is_ice_enabled' [-Werror=implicit-function-declaration]
            if (is_ice_enabled())
         ^

        意思是在system/vold/cryptfs.c 中未找到is_ice_enabled方法,而这个方法是在源码根目录/device/qcom/common/cryptfs_hw/下声明定义的,而在CM github下载的device/qcom/common(即问题1中下载的文件夹)和repo sync 完的代码不同步造成的。

解决办法请下载http://download.csdn.net/download/lechengyuyuan/9237537 ,下载后直接把/device/qcom/common/cryptfs_hw/目录下三个文件替换即可。

3.

        /out/target/product/bacon/obj/KERNEL_OBJ/... 停止。

        在内核目录不要自己手动用make或make uImage编译内核,它会干扰到编译整个代码树导致报错。如果之前有这么做过,可以通过删除out/target/product/bacon/obj/KERNEL_OBJ整个文件夹,并进到内核(kernel)目录里面make mrproper一下来重新clean掉内核源码目录。同时建议在内核的源码目录在brunch之前就make mrproper一下。

 

原创文章,转载需注明出处http://blog.csdn.net/lechengyuyuan/article/details/49514319

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值