同时提供基于安卓5.0的MKL魔趣猪扒饭编译教程~
【玩机组出品】魔趣猪扒饭MKL50.1编译教程
http://www.oneplusbbs.com/forum.php?mod=viewthread&tid=578692

环境搭建

1.安装64位Ubuntu系统(实体安装、虚拟机安装均可)

注意:要求机器至少4G内存(虚拟机至少分配4G内存),硬盘至少100G空间(源码20G+,编译后整个目录约60~70G)
安装方法请百度~

2.更新系统至最新版本,在终端下输入

  1. sudo apt-get update
  2. sudo apt-get upgrade

复制代码

3.安装编译必需软件包

  1. sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

复制代码

4.建立repo命令

  1. mkdir -p ~/bin
  2. curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  3. chmod a+x ~/bin/repo
  4. echo "export PATH=~/bin:$PATH" >> ~/.bashrc

复制代码

注意,第二行要从谷歌那里下载repo小程序,国内网络你懂的,可以在浏览器上面挂个代理通过以下地址下载好,拷贝到~/bin/repo,再执行第三行和第四行命令

  1. https://storage.googleapis.com/git-repo-downloads/repo

复制代码

也可以使用我的附件解压得到的repo文件,我的附件是2014/11/23下载的,不保证是最新的~ <ignore_js_op> repo.rar (9.1 KB, 下载次数: 324)

同步源码
1.新建一个储存源码的文件夹,这里以~/android/cm为例

  1. mkdir ~/android/cm
  2. cd ~/android/cm

复制代码

2.初始化源码目录

  1. repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0

复制代码

3.添加一加专用文件目录

  1. mkdir ~/android/cm/.repo/local_manifests
  2. gedit ~/android/cm/.repo/local_manifests/local_manifests.xml

复制代码

把以下内容复制进去

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <manifest>
  3. <project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" />
  4. <project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
  5. <project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" />
  6. <project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" />
  7. <project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" />
  8. <project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" />
  9. <project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" />
  10. <project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" />
  11. </manifest>

复制代码

4.针对国内网络环境的处理(无需FQ)

  1. sudo gedit /etc/hosts

复制代码

在hosts文件中加入

  1. 203.208.49.187 googlesource.com
  2. 203.208.49.187 android.googlesource.com
  3. 203.208.49.187 gerrit.googlesource.com

复制代码

注意,203.208.49.187只是我这里临时获取的ip,请替换成适合你的地区的ip,具体获取方法如下

  1. ping ad.doubleclick.net

复制代码

这样就可以解析出来一个ip地址,这个ip地址是可以正常访问谷歌的~
5.拉取代码(需要下载约十几个G的内容,花费时间参考各自网速)

  1. repo sync

复制代码

如果中间断网了,或者出错了,重新repo sync一下就可以继续了~
6.获取预编译的部分文件

  1. cd ~/android/cm/vendor/cm
  2. ./get-prebuilts

复制代码

编译ROM
1.初始化编译环境

  1. cd ~/android/cm
  2. . build/envsetup.sh
  3. lunch cm_bacon-userdebug

复制代码

2.编译ROM(我笔记本下面虚拟机花费时间约2小时,取决于个人电脑性能)

  1. make bacon -jX

复制代码

其中X是你CPU的线程数,比如我给虚拟机分配的是6线程,编译命令就是

  1. make bacon -j6

复制代码

注意:目前编译刚开始出现下面几行是正常现象,不影响的~

  1. find: 'src': No such file or directory
  2. find: 'phone/java': No such file or directory
  3. find: 'dummy': No such file or directory

复制代码

再次编译
1.建议每次编译都要把上一次编译的内容清除,否则有可能出现莫名其妙的问题

  1. make clobber

复制代码

2.再次同步源码到最新版本

  1. repo sync

复制代码

3.初始化编译环境

  1. . build/envsetup.sh
  2. lunch cm_bacon-userdebug

复制代码

4.编译ROM

  1. make bacon -jX

复制代码

参考
CM官方指导http://wiki.cyanogenmod.org/w/Build_for_bacon
魔趣官方指导http://wiki.mokeedev.com/Setting_Up_A_Compile_Environment
GRMrGecko的教程http://forum.xda-developers.com/ ... neplus-one-t2947949

CM12同步源码及编译教程的更多相关文章

  1. Android 11 源码下载+编译教程

    下载AOSP源码 这里我使用的是外国语大学的镜像执行的下载,Mac系统的话,一定要在区分大小姐的磁盘下执行 repo init -u https://mirrors.bfsu.edu.cn/git/A ...

  2. [Issue]repo/repo init-解决同步源码Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle

    1. 前两天想搭建freescale L3.0.35_4.1.0_BSP包,结果LTIB环境搭建好,也编译出rootfs/uboot/kernel的Image了,但是准备移植uboot的时候发现ubo ...

  3. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  4. 通过清华大学镜像下载Android源码并编译源码

    之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾...趁着周末,准备在Ubuntu虚拟机上下载编译源码. 之前下源码时,有了解一些Androi ...

  5. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  6. 鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析OpenHarmony源码 | v58.01

    百篇博客系列篇.本篇为: v58.xx 鸿蒙内核源码分析(环境脚本篇) | 编译鸿蒙原来如此简单 | 51.c.h.o 本篇用两个脚本完成鸿蒙(L1)的编译环境安装/源码下载/编译过程,让编译,调试鸿 ...

  7. 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01

    百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...

  8. 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙看这篇或许真的够了 | 百篇博客分析OpenHarmony源码 | v50.06

    百篇博客系列篇.本篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉坑指南 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉 ...

  9. net-snmp源码VS2013编译添加加密支持(OpenSSL)

    net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...

随机推荐

  1. Linux下安装Nginx详细图解教程

    什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...

  2. hdu 1205 吃糖果

    思路: 仔细想想,想要不重复吃一种糖果, 把所有糖果吃完,只要所有糖果的和,减去最多的糖果+1>=最多糖果的数量即可不重复吃完. #include <stdio.h> int mai ...

  3. ping 和 traceroute 命令

    ping 和 traceroute 命令 ping 程序 就是发送一个ICMP查询报文给某服务器,以测试该服务器是否可达. 当返回ICMP回显应答时,要打印出序列号.TTL,和往返时间:   [roo ...

  4. Nginx使用的php-fpm的两种进程管理方式及优化(转)

    php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php ...

  5. http https 区别

    HTTPS和HTTP的区别 一.https协议需要到ca申请证书,一般免费证书很少,需要交费.  二.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议.  三. ...

  6. java如何去调用C++的方法详解

    这是一个调用c++ jni 的列子 首先写一个GoodLuck 类,里面包含native本地方法,这是用作C/C++实现的.也就是用C/c++实现java的native 方法.public class ...

  7. POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”

    POP3 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”.是TCP/IP ...

  8. windows关机命令

    选择“开始→运行”:1.输入“at 22:00 Shutdown -s”,这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作.2.输入 “Shutdown.exe ...

  9. javascript单体模式

    单体模式的思想在于保证一个特定类仅有一个实例.这意味着当第二次使用同一个类创建的新对象的时候,应该得到与第一个所创建的对象完全相同. javacript中并没有类,因此对单体咬文嚼字的定义严格来说并没 ...

  10. 漫长Appium之路(二)——Appium安装与使用总结

    前面介绍了iOS自动化工具的Appium所需的虚拟机环境,接下来介绍下Appium的安装与使用方法,这个足足折腾我将近一个星期.网上没有什么详细的资料,对于遇到的各种各样问题也没用提供明确的解决方法. ...