Android源代码结构
Android代码的工程分为3个部分
- 核心工程(Core Project):建立Android 系统的基础,在根目录的各个文件夹中
- 扩展工程(External Project):使用其他开源项目扩展的功能,在external 文件夹中。
包(Package):提供Android 的应用程序和服务,在package 文件夹中。
- Android 的核心工程
Android 的核心工程包含了对Android系统基本运行的支持,以及Android系统的编译系统,工程的内容如下表:
- Android 扩展工程
Android 的扩展工程包含在external文件夹中,是一些经过修改后适应Android系统的开源工程。有一些工程在主机上运行,也有些在目标机上运行。由于包含的扩展工程就多,就不一一列出。 - Android 中的Java程序包
Android中的Java程序包是Android系统架构第4层的内容,主要包括应用程序(Application)和内容提供器(Content Providers)两个部分,还有一个目录inputmethods是输入法的部分。
应用程序(Application)在package/apps目录中,主要包括:
AlarmClock,Browser,Calculator,Calendar,Camera,Contacts,E-mail,GoogleSearch HTML Viewer,IM,Launcher,Mms,Music,PackageInstaller,Phone Settings,SoundRecorder,Stk,Sync,Updater,VoiceDialer。
内容提供者(Content Providers)在package/providers目录中,主要包括:CalendarProvider,ContactsProvider,DownloadProvider,DrmProvider,GoogleContactsProvider,GoogleSubsribedFeedsProvidercImProvider,MediaProvider SettingsProvider,SubscribedFeedsProvider,TelephonyProvider。
- Android 的核心工程
使用Linux编译Android源码
下载安装虚拟机VM,开启VM共享设置,解压缩VM Tool 的.tar.gz文件
sudo tar zxvf ./jdk-7u45-linux-x64.tar.gz
设置JAVA环境变量
环境变量在 .bashrc 文件中设置。
vi ~/.bashrc
在该文件的末尾,加上以上几行代码:
export JAVA_HOME=/jdk/jdk1.8
export CLASSPATH=${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
修改“~/.bashrc”文件和修改“/etc/profile”的区别:
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,文件被读取。
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
看完上面描述,你应该知道了原因了,就是“~/.bashrc”的环境变量只对shell有用,而“/etc/profile”而能针对于任何用户的任意程序。
配置默认JDK版本
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_25/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_25/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8.0_25/bin/jar 300
检查:
sudo update-alternatives --config java
修改环境变量时VIM命令
为了让更改立即生效,请在终端执行如下命令:
source ~/.bashrc
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
环境变量验证和在Windows环境下一样
java -version
然后下载编译的依赖包
Installing required packages (Ubuntu 14.04)
You will need a 64-bit version of Ubuntu. Ubuntu 14.04 is recommended.
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
官方说明:http://source.android.com/source/initializing.html
安装Repo工具
Make sure you have a bin/ directory in your home directory and that it is included in your path:
确保home目录下有bin文件夹
官方说明:http://source.android.com/source/downloading.html
mkdir ~/bin
PATH=~/bin:$PATH
然后下载
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
初始化Repo
repo init -u https://android.googlesource.com/platform/manifest
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
同步代码
repo sync