环境搭建

1 安装ubuntu 推荐12.04或13.10 
2 安装jdk7和一些所需要的包
安装jdk7
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
或者手动下载jdk-7 安装 http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 
chmod u+x ...
增加执行权限并执行安装,
安装在你选择目录并修改环境变量

sudo vim ~/.bashrc (如果没有安装vim先执行:sudo apt-get install vim)

export JAVA_HOME=/java/jdk1.7.0_51 ---这是我的安装目录,替换成你相应的安装目录即可export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH

安装依赖包:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so 
3 安装eclipse
下载http://www.eclipse.org/downloads/ 
解压到你选定的目录即可 
//eclipse在ubuntu13.10下可能出现无法下拉工具栏现象,具体解决办法可参考http://my.oschina.net/kinsomc/blog/178997

4 设置ccache (可选)
在~/.bashrc中添加
export USE_CCACHE=1
prebuilt/linux-x86/ccache/ccache -M 50G

5 安装repo
$ mkdir ~/bin
添加环境变量
$ PATH=~/bin:$PATH(需要在~/.bashrc 中添加 export PATH=~/bin:$PATH)
下载repo
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo //有可能出现网络不可到达的现象,多试几次就行.也可以使用该网址(curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo),如果没安装curl可以先安装,sudo apt-get install curl
$ chmod a+x ~/bin/repo 
6 配置git
$ git config --global user.name "username"
$ git config --global user.email "username@xiaomi.com" 
7 ssh-key
在小米提交和review代码需要ssh-key做机器的身份验证。
1. 生成ssh-key
$ ssh-keygen
这将在home下建立.ssh目录。请备份好该目录,以后重装系统可以拷贝回来。
2. 用自己帐号登录http://git.xiaomi.com:8088
3. 进入ssh设置http://git.xiaomi.com:8088/#/settings/ssh-keys
4. 点击Add key按钮,将~/.ssh/id_rsa.pub的内容粘贴到文本框中。确定即可。

8 具体MIUI版本下载
具体的MIUI版本管理的流程,请参考版本管理概况
我们的代码库的地址是git.xiaomi.com:libra2/platform/manifest.git,所以一般说来,一个repo init命令应该是: 
$ repo init -u gitdaemon@git.xiaomi.com:libra2/platform/manifest.git -b jellybean -m aries.xml --repo-url=gitdaemon@git.xiaomi.com:aosp/tools/repo.git
其中-b表示branch,MIUI基本上都在jellybean上进行开发,ICS和Gingerbread基本不再维护。 其中-m表示manifest文件,上述的aries.xml表示小米手机2的开发版,类似的还有:aries-jb-alpha.xml表示小米手机2的体验版,pisces-jb.xml表示小米手机3的开发版,等等。 还有很多,如果需要,请找相关人员咨询。 
初始化repo完成之后,需要用sync下载代码,这个过程需要的时间较长,可能长达半小时甚至一小时。 
$ repo sync -j8
//过程中如果出现提示输入密码的情况,在确定ssh-key已经设定正确的情况下就多执行几次上面的命令就可以了

9 编译代码 
编译代码首先要进入你的代码目录。
首先要初始化环境变量: 
$ . build/envsetup.sh
然后,选择你的编译模式和目标版本: 
$ lunch
基本上,你可以选择你的机型相关的版本即可,其中eng表示工程师版(可调试),user表示用户版,debug当然表示调试版。aries表示小米手机2的开发版
最终的编译命令应该是: 
$ make otapackage -j4 (-j4 代表起4个线程)

10 编译系统/apps

仅编译系统

当你做了某些修改,需要编译整个系统(不包括boot等)时,需要用下面的命令: 
$ make systemimage -j4

apps

如果你只需要编译某一个app,则需要进入到app相应的目录,使用mm命令。
$ mm
或者,你也可以在主目录下使用make + app目录下Android.mk中的LOCAL_PACKAGE_NAME,不过这样稍慢。 
$ make Phone -j4
编译framework里面的东西也跟app类似。

11 USB连接设备,只需要打开开发者选项即可顺利连接

12 刷机

刷整个系统

首先你必须找打你编译出来的image文件,一般说来,他们位于你的代码目录下out/target/product/<手机代号> /中,其中后缀通常是img。比如小米手机3的代号是pisces,那么目录就应该是out/target/product/pisces/。 
进入刷机模式(fastboot模式): 
$ adb reboot bootloader(使手机进入刷机状态)
刷system,userdata, boot: 
$ fastboot flash system out/target/product/pisces/system.img
$ fastboot flash userdata out/target/product/pisces/userdata.img
$ fastboot flash boot out/target/product/pisces/boot.img
重启手机 
$ fastboot reboot

只刷修改的App

编译、刷整个系统都需要很长的时间,所以我们一般调试时都只刷我们修改过的app。 
编译好app后,先root手机: 
$ adb root
然后remount让system分区可写: 
$ adb remount
然后就可以把你的app push到手机上相应的目录,如: 
$ adb push out/target/product/pisces/system/app/Phone.apk /system/app
如果你修改的不是system/app下apk,而是在system/framework下的jar,你可能还需要重启手机才能生效: 
$ adb reboot 
13 适用Eclipse查看编辑调试源代码
进入你下载的源码目录,把eclipse工程配置文件复制到android源码根目录下cp development/ide/eclipse/.classpath ./
chmod u+w .classpath # Make the copy writable //使可写便于修改
修改eclipse程序的配置,增大eclipse内存设置 把eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:-Xms128m-Xmx512m-XX:MaxPermSize=256
把android源码作为一个工程导入eclipse 导入前先检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除,没有的需要添加。新建Java Project(不是android project,否则会破坏android源码),选择从已存在的工程导入,工程名任意,完成。也可以直接import(可能会出现一些重复的项目)

编译Android ROM环境搭建的更多相关文章

  1. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  2. Ionic Android开发环境搭建 下

    上篇 Ionic 安装完成了,由于要开发Android,所以必不可少需要继续搭建Android开发环境. 首先,下载并安装JDK.然后配置一下环境变量. 接着,下载并安装Android SDK.下载过 ...

  3. 【转】Windows环境下Android NDK环境搭建

    原文网址:http://www.metsky.com/archives/525.html 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员 ...

  4. Windows环境下Android NDK环境搭建

    前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设 ...

  5. android 开发环境搭建 (转)

    最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环 境去学习,Android的更新速度比较快了,Android1 ...

  6. 第四章Android移植环境搭建

    第四章Android移植环境搭建 这一章主要学习如何搭建 Android 移植的环境.因为 Android 底层是基于 Linux 内核的,所以本章从交叉编译环境等嵌入式开发环境的搭建开始,介绍了 B ...

  7. OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建

    /******************************************************************************************** * OK33 ...

  8. QT 5.4.1 for Android Windows环境搭建

    QT 5.4.1 for Android Windows环境搭建 2015-5-13 目录 一.参考文章: 二.准备软件: 三.安装准备好的软件: 四.配置Qt 5.4.1 for Android 五 ...

  9. 转---详细的Android开发环境搭建教程

    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程 引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立A ...

随机推荐

  1. 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击

    20145203盖泽双<网络对抗技术>拓展:注入:shellcode及return-into-libc攻击 一.注入:shellcode 1.编写一段用于获取Shellcode的C语言代码 ...

  2. java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  3. root用户无法访问Mysql数据库问题的解决

    在使用Centos系统远程访问Mysql数据库的时候,系统提示报如下错误: Access Denied for User 'root'@'localhost' (using password: YES ...

  4. C语言之控制语言:分支和跳转

    if语句 #include<stdio.h> int main(void) { const int FREEZING = 0; float temperature; int cold_da ...

  5. docker下载镜像received unexpected Http status:500 Internal Server Error

    解决办法 1.就是网上说的 关闭selLinue ,但是对我就没用 2.就是不使用镜像加速 ,但是出现连接超时 3.就是加上具体版本号 结果就成功了 [root@localhost ~]# docke ...

  6. EasyTouch5ForSiki学院

    总结: 这里面的一些功能,就可以拿来做移动或者PC的很多功能了,这是一个很有用的插件. 禁用0618错误 EasyTouch4_x的写法: using HedgehogTeam.EasyTouch; ...

  7. [LOJ2310][APIO2017]斑斓之地——可持久化线段树

    题目链接: [APIO2017]斑斓之地 将不是河流的格子染成白色,是河流的格子染成黑色,那么连通块数就是白色格子数$-1*2$的联通白色格子数$-2*1$的联通白色格子数$+2*2$的联通白色格子数 ...

  8. [原文 + 补充] 当你在浏览器中输入Google.com并且按下回车之后发生了什么?

    原文:https://github.com/alex/what-happens-when/blob/master/README.rst 一个版本的翻译: https://github.com/skyl ...

  9. macOS卸载应用不彻底

    总觉得macOS卸载应用时直接移到废纸篓卸载不干净.配置文件根据Unix的习惯应该存放在用户目录下,还需要删除这些文件. ~/Library/Application Support/(应用程序名称) ...

  10. 系统磁盘优化——"/var/spool/postfix/maildrop"

    文件清理 最近某服务器磁盘空间告警,在排查过程中发现"/var/spool/postfix/maildrop"目录下堆积了很多小文件,起初想直接删除,但是使用rm删除是提示“参数列 ...