CM源码同步编译教程
一、操作系统
准备一个ubuntu安装镜像,我用的是12.10。
安装系统时请安装到30g以上的盘,最好就50g以上啦
安装教程不多说,网上很多教程,这里我推荐用自带的wubi工具安装,比较方便
用虚拟机也可以,但是配置低的就不要用虚拟机了
系统安装完毕后,打开控制台,输入以下命令安装所需组件
(1)sudo apt-get install git-core gnupg flex bison gperf build-essential
(2)sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
(3)sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
(4)sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos
(5)sudo apt-get install python-markdown libxml2-utils schedtool pngcrush xsltproc zlib1g-dev:i386
(6)sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so (若提示 ln: 无法创建符号链接"/usr/lib/i386-linux-gnu/libGL.so": 文件已存在 忽略之)
二、安装JDK,配置java环境
安装JDK前我们需要获得JDK的安装包,登陆Oracle官网:ttp://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html来下载JDK安装包。这里我们选择最新的1.7.0_51版的tar.gz安装包进行下载,(注意版本问题!!现在最新是jdk1.7.0_51,这里仅供参考,如发现不是jdk1.7.0_51 自己替换,下面全部设置都要换成你下载的版本,一定要注意!!!)
如下图
首先点击上面的Accept License Agreement 前面的圆圈才可下载
将下载好的JDK安装包解包,得到一个“jdk1.7.0_51”的文件夹,将其移动到主文件夹
打开终端cd到jdk1.7.0_51目录
(cd /home/zhjm/jdk1.7.0_51)注:zhjm是我的用户名请按照实际情况替换,仅供参考
在终端输入sudo gedit /etc/environment
JAVA_HOME="/home/zhjm/jdk1.7.0_51"
CLASSPATH=".:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar"
在PATH中添加:/home/zhjm/jdk1.7.0_51/bin注意与PATH原有的值之间用英文冒号:分隔,切勿把原来的值删除。
然后保存关闭,在终端中使用命令source /etc/envrionment更新。
如图
Ubuntu系统默认安装并使用OpenJDK(usr/lib/jvm/),因此需要手动修改系统默认的JDK,
sudo update-alternatives --install /usr/bin/javac javac /home/zhjm/jdk1.7.0_51/bin/javac 300
sudo update-alternatives --install /usr/bin/java java /home/zhjm/jdk1.7.0_51/bin/java 300
sudo update-alternatives --config javac,再选择相应的Priority 300
sudo update-alternatives --config java,再选择相应的Priority 300
如图
选择1,按后按回车,注意sudo update-alternatives --config javac
sudo update-alternatives --config java两个都要选择自己刚设置的如图框选的,即1(我这里是选1,请根据具体情况自己选择)
再到/etc/bin/下修改java与javac可执行权限.
至此配置完成,输入java -version、javac检查是否配置成功。
如图:
安装android SDK,设置adb
安装SDK、adb
将加载的SDK包解压到/home/sdk目录下(sdk目录自己新建一个,sdk目录的名字可以自己起,但是下面的环境变量配置需要修改成你自己修改的名字)
接下来打开终端,输入gedit .bashrc打开环境变量文件,添加如下代码到文本最末尾:
export PATH=~/sdk/android-sdk-linux/platform-tools:~/sdk/android-sdk-linux/tools:~/bin:$PATH
效果如图:(./bin:变量是后面repo文件需要用到的变量,这里一次性添加好,省事)
环境变量添加好后保存关闭,然后到~/sdk/android-sdk-linux/tools/下修改android可执行权限
之后重启终端输入android打开android SDK,如图:
等待将Packages列表加载好后,勾选Tools下的Android SDK Tools和Android SDK Platform-tools,点击install packages进行下载,下载好后关闭SDK即可,如图:(一些朋友的电脑打开SDK后发现无法更新Packages列表,那就需要FQ后下载了,或者一些可用的海外代理IP进行下载,代理IP设置方法:点击Tools,选择Options打开设置界面,在Proxy Settings中填入可用的代理地址)
注:在http://developer.android.com/sdk/installing.html网页中,大家会看到需要安装Eclipse,其实不需要安装Eclipse,这个是开发Android程序所需要的。
设置adb(是用中兴设备的同学可以直接试试第二个方法,且针对N880E使用(V880也可以),我也是找了很久才找到这个方法,似乎第一种连不上)
第一种方法(所有手机基本通用):将手机打开调试模式连接到电脑
打开终端,输入adb devices,如果显示出当前设备,就证明adb是正常的,如图
如果显示adb devices :???????????? no permissions或者没有显示的话,那就需要手动添加了
手动添加adb支持的方法
打开终端,输入lsusb,找到你的设备(Goodle Inc即设备名称,下图仅供参考如果是N880E会出现ZTE字样),记下ID后面的八位数字
接着输入sudo gedit /etc/udev/rules.d/70-android.rules,加入如下内容:如图
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d002",MODE="0666"
添加好后保存并关闭,重启计算机,之后在终端输入adb devices就会发现adb已经恢复正常
注)其中的idvendor,idProduct指的是USB的ID可以使用lsusb查询得到。
比如我的是:
Bus 001 Device 003: ID 18d1:d002 High Tech Computer Corp
18d1 就是idVendor ,d002就是 idProduct
第二种方法是进入拨号,输入*983*87274#,然后点击一下最上面的All functions,如果弹出授权就授权吧,然后adb devices就能正常使用啦(这种方法只适用于中兴设备,其他的就不用试了)
安装repo
在/home文件夹下新建一个bin文件夹(用于存放repo,环境变量之前已经添加好了,所以现在就不用添加了)
打开终端,输入
sudo curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
失败的话多试几次,那个神秘阻力你懂的
继续:
sudo chmod 0755 ~/bin/repo 赋予其权限
(或者:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 来下载repo(如果长时间无反应或者出错,请到https://code.google.com/p/git-repo/downloads/list下载repo,下载好之后修改repo-1.19文件名为repo,复制到主文件夹bin目录)
以防万一我也在我的百度网盘上传了一份http://pan.baidu.com/s/1gdmQVr9
也可以在终端中输入chmod a+x ~/bin/repo来给repo添加运行权限)
到此为止,环境已经搭建完成,搭建完请再粗略浏览一遍是否有缺漏步骤
三、同步源码
1、在终端目录输入
mkdir ~/ydm 创建一个用来装源码的文件夹(ydm为我设置的名字,可根据自己喜好设置以下请自行更换为你设置的名字)
然后输入cd ydm回车
然后输入repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1回车
这句是指向cm10.1的源码所以地址是同步cm10.1的源码
当然可以自行替换为你想下载的安卓源码的地址
到https://github.com/CyanogenMod/android这里(这个网站经常不正常,有时候加载很慢很慢,如果你发现页面排版不正常就多少刷新几次)
然后在这里选择你想要的版本,
(比如我想要cm11,就选择cm11 吧)
然后拉下去找到这里
再找到这句
复制输入回车就行啦,这样同步的就是cm11的源码咯
然后就repo sync -j4 (j4表示4线程,不建议调太大)
也可以直接repo sync
如果中途断了或者出错什么的没关系,若没有关闭刚刚的终端就直接repo sync
如果终端关闭了,就要再cd到你的源码目录如cd ydm
然后再repo cync就可以继续下载了
这一步要很久很久,网速好的一晚上应该可以
同步完成就是显示这个啦
转载请注明,有错误希望指出qq:690615467
android sdk安装部分及adb设置等部分内容引用自imobile手机之家——Zero_初号
谢谢该作者
By zhjm
20140206
CM源码同步编译教程的更多相关文章
- CM12同步源码及编译教程
同时提供基于安卓5.0的MKL魔趣猪扒饭编译教程~[玩机组出品]魔趣猪扒饭MKL50.1编译教程http://www.oneplusbbs.com/forum.php?mod=viewthread&a ...
- Android 11 源码下载+编译教程
下载AOSP源码 这里我使用的是外国语大学的镜像执行的下载,Mac系统的话,一定要在区分大小姐的磁盘下执行 repo init -u https://mirrors.bfsu.edu.cn/git/A ...
- 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- 通过清华大学镜像下载Android源码并编译源码
之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾...趁着周末,准备在Ubuntu虚拟机上下载编译源码. 之前下源码时,有了解一些Androi ...
- 鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析OpenHarmony源码 | v58.01
百篇博客系列篇.本篇为: v58.xx 鸿蒙内核源码分析(环境脚本篇) | 编译鸿蒙原来如此简单 | 51.c.h.o 本篇用两个脚本完成鸿蒙(L1)的编译环境安装/源码下载/编译过程,让编译,调试鸿 ...
- 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01
百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...
- 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙看这篇或许真的够了 | 百篇博客分析OpenHarmony源码 | v50.06
百篇博客系列篇.本篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉坑指南 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉 ...
- net-snmp源码VS2013编译添加加密支持(OpenSSL)
net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...
随机推荐
- 51单片机 Keil C 延时程序的简单研究
应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很 ...
- android ids.xml资源的使用
ids.xml文件例子: XML file saved at res/values/ids.xml: 使用方式: 一:
- java多线程入门
一.认识多任务.多进程.单线程.多线程 要认识多线程就要从操作系统的原理说起. 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情.比如你在copy东西 ...
- 【转】使用dos2unix批量转换文件
原文网址:http://kuaile.in/archives/1208 dos2unix是Linux下的一个用户转换格式的程序,由于windows上文件的结束符和linux上的不同,那么在window ...
- 黑马程序员_Java集合框架
集合类 1,为什么出现集合类? 面向对象语言对食物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2,数组和集合类同是容器,有何不同? 数组 ...
- java中的浮点(float)运算
一. 关于浮点运算,需要说明的几点: 1. 在java中,进行浮点运算并不会处理例外情况,所以,即使除数为0,也不会有例外被抛出; 2. 当运算结果是溢出(Infinity)时,结果为Infin ...
- ESB 企业服务总线
整理的OSChina 第 38 期高手问答 —— ESB 企业服务总线,嘉宾为@肖俊_David . @肖俊_David 恒拓开源架构师,热衷于JAVA开发,有多年的企业级开发经验.曾参和设计和开发基 ...
- markdown转dokuwiki
markdown markdown格式变得越来越通用,很多博客,云笔记,github等等都支持markdown编写,markdown也能很方便的转化为pdf,html等格式.公司的文档用的dokuwi ...
- MVC 4.0语法 自动分页
4.0语法中实现自动分页只需要两个方法即可,Skip() ----跳过序列中指定的元素,Take()-----从序列的开头返回指定数量元素. 一般用自动分页都是无刷新的,可以把显示的数据,用局部页面封 ...
- [置顶] Android系统访问控制之Smack安全策略设计与实现
1. 制定smack规则 “Zygote”进程由init进程创建,它负责创建系统服务进程“systemserver”.“radio”进程和APP进程.其中“radio”进程的uid是1001,它能够实 ...