一,学习android系统源码下载,编译的作用
1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统
2,编译自己的 userdebug(原生root权限) rom, 方便调试。
2,可以看到系统所有的 source code,修改自己感兴趣的部分,编译,运行后,可以看到效果;通过阅读源码解决问题。
3,学习源码中优秀的设计思想,架构,设计模式,代码风格;针对自己需要实现的功能,可以参考,联系人,电话,图库,短信,邮件,浏览器等系统app的实现。
二,关于AOSP
Android Open Source Project, 官网链接 aosp 官网
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > source_info.png 陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > android_framework_details.png
该文档参考 AOSP官网指导,在 ubuntu14.04下,配置下载,编译源码的环境,同步源码,编译源码,运行到 nexus5X上。
当前可用最新源码
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > new _nsource.png
对于 nexus5X 设备可用的最新代码为分支为:android-7.1.2_r8
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > new-able.png
所以我们下载该分支代码即可,编译之后就可以运行到 nexus5X 上
三,简单说下,我们平时使用的 android 手机是如何研发出来的
android手机组成:硬件(CPU芯片,触屏,话筒,扬声器,相机,天线,电池,PCB,各种IC等) + 软件:android系统(内核,rom系统,第三方配件驱动等)
oem厂商基于某一平台(高通,联发科,展讯)规划好自己的产品,买来硬件(或者自己生产),组装,烧录系统(根据自己的硬件设备,配件,修改后的aosp,加上第三方驱动)。
现在的像高通等芯片厂商的集成度,越来越高,研制一部android手机的门槛越来越低,但是做一部,高性能,流畅,高度优化,美观,高用户体验的产品,还是需要投入大量资源的。
比如基于高通8953平台,研发一部android手机,8953平台就是骁龙625,高通会拿到 aosp源码,针对自己的平台加入相关的驱动,接口代码,厂商购买8953平台,可以拿到 高通修改后的aosp源码,平台说明文档,其他硬件接口文档等。如果厂商想使用莱卡的摄像头,三星的OLED曲面屏幕,这些配件厂商会提供相关的硬件驱动和接口文档,oem厂商集成到系统中,可以进行个性化定制,包括功能,性能,ui等。
下面是一个基于 高通8953平台的工程机:
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > IMG_20170410_191705.jpg 陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > IMG_20170410_192516.jpg
推荐一本我觉得还不错的电子书,百度网盘链接 ANDROID系统服务开发_13706555.pdf 链接: https://pan.baidu.com/s/1nvAyxiL 密码: 2ucq
感兴趣的同学可以参考一下,该书为韩国android rom开发者所著,比较容易理解,有很多示意图。
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > book.png
四,编译环境配置
官网指导文档
1,硬件要求
64位;150G可用硬盘;如果使用虚拟机 最少16G RAM
2,软件要求
官方建议使用 长期支持的 ubuntu,其他的 LINUX 系统,mac 系统也可以,也可以在 windows 里面安装虚拟机;
个人建议,使用官方推荐系统 ubuntu,因为,有官方支持,文档资料较多,遇到问题,方便在网上寻找解决办法。
陈荣刚 > android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试 > software.png
1> 本文档编译最新源码,使用 ubuntu14.04 必须安装的软件包有:
OpenJDK 8
aloe@aloe-pc:~ java−versionopenjdkversion“1.8.045−internal”OpenJDKRuntimeEnvironment(build1.8.045−internal−b14)OpenJDK64−BitServerVM(build25.45−b02,mixedmode)aloe@aloe−pc: j a v a − v e r s i o n o p e n j d k v e r s i o n “ 1.8.0 4 5 − i n t e r n a l ” O p e n J D K R u n t i m e E n v i r o n m e n t ( b u i l d 1.8.0 4 5 − i n t e r n a l − b 14 ) O p e n J D K 64 − B i t S e r v e r V M ( b u i l d 25.45 − b 02 , m i x e d m o d e ) a l o e @ a l o e − p c : javac -version
javac 1.8.0_45-internal
aloe@aloe-pc:~ aloe@aloe−pc: a l o e @ a l o e − p c :
aloe@aloe-pc:~ python–versionPython2.7.6aloe@aloe−pc: p y t h o n – v e r s i o n P y t h o n 2.7.6 a l o e @ a l o e − p c : git –version
git version 1.9.1
aloe@aloe-pc:~$ make –version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
android 源码控制管理工具使用的是 git,google 把git封装为repo,repo就是一个 python脚本,源码编译系统使用 make工具,所以必须 需要 JDK,git,python,make
链接: https://pan.baidu.com/s/1cAKL1k 密码: x3dq GNU+MakeFile中文手册.pdf 关于android源码的 build的编译系统,推荐一本电子书,百度网盘链接.
2> OpenJDK 8 的安装
oracle jdk 安装,直接下载安装包,解压到 /usr/lib/jvm/ 目录下,目录不存在,自己创建,在 .bashrc 配置环境变量即可.
添加软件源: sudo add-apt-repository ppa:openjdk-r/ppa
更新源: sudo apt-get update
安装 openjdk-8-jdk sudo apt-get install openjdk-8-jdk
我安装后的 /usr/lib/jvm/目录如下:
total 52
drwxr-xr-x 7 root root 4096 2月 11 21:18 .
drwxr-xr-x 172 root root 20480 5月 7 12:25 ..
lrwxrwxrwx 1 root root 24 3月 23 2014 default-java -> java-1.7.0-openjdk-amd64
lrwxrwxrwx 1 root root 20 8月 12 2016 java-1.7.0-openjdk-amd64 -> java-7-openjdk-amd64
-rw-r–r– 1 root root 2439 2月 8 09:10 .java-1.7.0-openjdk-amd64.jinfo
lrwxrwxrwx 1 root root 20 4月 20 2015 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
-rw-r–r– 1 root root 2546 4月 20 2015 .java-1.8.0-openjdk-amd64.jinfo
drwxr-xr-x 7 root root 4096 2月 11 21:18 java-7-openjdk-amd64
drwxrwxrwx 7 root root 4096 9月 18 2016 java-8-openjdk-amd64
drwxrwxrwx 8 aloe aloe 4096 3月 27 2013 jdk1.6.0_45
drwxrwxrwx 8 aloe aloe 4096 4月 11 2015 jdk1.7.0_79
drwxrwxrwx 8 aloe aloe 4096 4月 1 2016 jdk1.8.0_92
我需要编译不同版本的源码,所以安装了不同版本的 jdk,我需要使用那个版本的 jdk在用户目录下,配置aloe@aloe-pc:~$ vim .bashrc 即可:
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92
export JRE_HOME= JAVAHOME/jreexportCLASSPATH=.: J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/lib: JREHOME/libexportPATH= J R E H O M E / l i b e x p o r t P A T H = {JAVA_HOME}/bin: PATHexportPATH= P A T H e x p o r t P A T H = {CLASSPATH}:$PATH
export ANDROID_HOME=/home/aloe/develop/Sdk
export ANDROID_HOME=/media/aloe/c1493149-2d3a-4cb0-b260-7242e91f962a/android/Sdk
export PATH= ANDROIDHOME