这段时间两次在虚拟机和一次物理机装过ubuntu 14.04,安装这个系统的目的都是为了开发android源码,安装好系统之后配置环境感觉很痛苦啊,总是在这里查查那里查查,索性现在装好系统以后把完整的配置环境步骤写到同一篇博客里,方便以后再装系统的时候配置,也欢迎其他有需要的同学拿来参考。

一、安装必须的软件包

首先构建编译环境需要安装下列软件 CM提供:

sudo apt-get install  bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool 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

google提供:

sudo apt-get install git-core gnupg flex bison gperf build-essential \
 zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
  libgl1-mesa-dev libxml2-utils xsltproc unzip

如果是64位系统的话还需要:

g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

二、安装repo工具

因为android源码是有report管理的所以你还需要安装repo工具 献给repo建立一个文件夹 ,下载repo之后更改权限

$ mkdir -p ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

三、下载源码

以下载CyanogenMod代码为例

初始化CM代码仓库

进入到代码所要下载的文件夹中后

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

下载代码

$ repo sync 至于下载中可能遇到的“网络”问题,可以将代码原改成清华的镜像

加速编译

添加下面内容到~/.bashrc文件

export USE_CCACHE=1

然后为缓存指定一块磁盘大小

prebuilts/misc/linux-x86/ccache/ccache -M 50G

四、配置adb

可以手动配置SDK路径:

把下面的内容添加到~/.profile 里然后注销一次系统

if [ -d "<path-to-sdk>/platform-tools" ] ; then
  PATH="<path-to-sdk>/platform-tools:$PATH"
fi

也可以直接在终端里用命令安装:

sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot(这是fastboot,如果有需要的话也可以安装)  

推荐下面这个方法,即使你移动了sdk的位置adb命令也不会收到影响

五、访问USB设备

要在linux上用adb或fastboot访问连接至USB的设备,您需要配置udev规则。有关udev的详细信息,请见ArchLinux wiki上的udev - Arch Linux(请注意,UDEV规则并不仅限于Arch;众多发行版都使用udev)。 请按照以下步骤设置正确的规则: 确认您的用户包含在plugdev组中。在终端输入

  groups 并查看plugdev是否在所列出的组中。如果您没有看见列出plugdev,您可以使用以下命令将您的用户添加到组:

sudo gpasswd -a 用户名 plugdev 其中用户名应替换为您的linux的用户名。 将步骤下方列出的规则集复制到一个文本文件中,并将其保存为`etc/udev/rules.d/51-android.rules`您将需要使用sudo/su才能向那个文件夹中写入文件。示例:

sudo nano /etc/udev/rules.d/51-android.rules 这些规则涵盖了所有Google列出的供应商。或者,您可以只添加计划连接到计算机的设备的供应商。 重新启动计算机,在设备上打开USB调试,然后尝试将您的设备插入计算机。

#Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0664", GROUP="plugdev"
#ASUS
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0664", GROUP="plugdev"
#Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0664", GROUP="plugdev"
#Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0664", GROUP="plugdev"
#Fujitsu & Fujitsu Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0664", GROUP="plugdev"
#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091e", MODE="0664", GROUP="plugdev"
#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0664", GROUP="plugdev"
#Haier
SUBSYSTEM=="usb", ATTR{idVendor}=="201e", MODE="0664", GROUP="plugdev"
#Hisense
SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0664", GROUP="plugdev"
#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0664", GROUP="plugdev"
#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0664", GROUP="plugdev"
#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0664", GROUP="plugdev"
#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0664", GROUP="plugdev"
#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0664", GROUP="plugdev"
#Lenovo
SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0664", GROUP="plugdev"
#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0664", GROUP="plugdev"
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev"
#MTK
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0664", GROUP="plugdev"
#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0664", GROUP="plugdev"
#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0664", GROUP="plugdev"
#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0664", GROUP="plugdev"
#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0664", GROUP="plugdev"
#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10a9", MODE="0664", GROUP="plugdev"
#Pegatron
SUBSYSTEM=="usb", ATTR{idVendor}=="1d4d", MODE="0664", GROUP="plugdev"
#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0664", GROUP="plugdev"
#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0664", GROUP="plugdev"
#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0664", GROUP="plugdev"
#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0664", GROUP="plugdev"
#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0664", GROUP="plugdev"
#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0664", GROUP="plugdev"
#Sony
SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0664", GROUP="plugdev"
#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0664", GROUP="plugdev"
#Teleepoch
SUBSYSTEM=="usb", ATTR{idVendor}=="2340", MODE="0664", GROUP="plugdev"
#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0664", GROUP="plugdev"
#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0664", GROUP="plugdev"

六、安装中文输入法(可选)

推荐搜狗拼音输入法,具体方法可百度(按照搜狗官方的步骤可能出现安装但是没有启用搜狗输入的情况)。

七、后续可参考我的其他博客

  1. 使用Android Studio开发/调试整个Android系统源码
  2. 使用Android Studio内置Version Control工具对android源码进行版本管理/查看