下载编译源码
系统架构:
Linux:Linux内核和驱动模块(USB Camera 蓝牙等)
Libraries:提供动态库,Android运行时库、Dalvik虚拟机等,大部分是C 和C++写的,可以看成是native层
Framework:基于Java写的,是Android平台上Java世界的基石
Application:与用户直接交互,是用Java开发的
Java虽然有与平台无关的特性,但是Java和具体平台之间的隔离是由JNI层来实现的,Java是通过JNI层调用Linux OS中的系统调用来完成对应功能的,例如创建了一个文件或者一个socket。还有一个核心的native世界,为整个系统高效平稳地运行提供了强有力的支持,Java由JNI层通过IPC方式与native世界交互,而Android平台最神秘的IPC就是Binder了。
1 下载Android源码
获取源码的地址:
https://source.android.com/source/downloading.html
下载repo并配置权限
AOSP采用了多仓库管理的方式对源码进行管理,
1 mkdir ~/bin
PATH=~/bin:$PATH 将bin目录配置到环境变量中去
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2 在根目录下创建文件夹并进入这个目录下执行
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b froyo --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
3 repo sync
下载完成就可以看到目录下的结构:
查看当前源码的分支 切换分支可以
repo init -b android-4.2.2_r1
repo sync
遇到的问题:
1
解决方案:
在环境变量里永久配置下REPO_URL即可
export REPO_URL=git-repo - Git at Google
然后配置使其生效 source /etc/profile
2
解决方案 关闭CA验证
git config --global http.sslverify false
git config --global https.sslverify false
编译源码:
Android源码和JDK之间的对应关系:
一 下载jdk :官网Java Archive | Oracle
然后解压
问题1:
Ubuntu jdk install.sfx.XXX: not found
解决方案:机位和jdk的位数不匹配,机位是64的 jdk下载了32(i586)位的。
二 配置环境变量
进入/etc/profile 在末尾加入:
export JAVA_HOME=/develop/jdk1.5.0_22
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
同步source /etc/profile
三 编译源码:make -j8
问题1:Android can only be built by version 3.81
解决方案:build/core/main.mk下修改