AOSP: Android开放源代码项目(Android Open Source Project)
下载AndroidStudio—https://developer.android.com/studio/index.html
android N的源代码使用的是jdk1.8,所以下面以JDK8为例
//添加openjdk的源
sudo add-apt-repository ppa:openjdk-r/ppa
//会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑
sudo apt-get update
//下载jdk
sudo apt-get install openjdk-8-jdk
//配置java环境
sudo gedit /etc/profile
$将下面配置语句放到文件末尾
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre;
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH;
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH;
//查看使用的java版本
java -version
//本地安装了多个版本的jdk,可通过下面命令设置默认的java版本
sudo update-alternatives --config java
repo是Google为了简化git而专门写的一个提升效率的脚本
//在用户home目录下创建一个bin文件夹
mkdir ~/bin
//下载repo工具
curl http://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
//给repo添加执行权限
chmod a+x ~/bin/repo
//把~/bin加到path里面
vi ~/.bashrc
//把PATH=~/bin:$PATH加到文件最后
上面的配置是一种选择,亦可将repo直接复制到/usr/bin目录下
// /usr/bin目录本身就在系统环境变量中,所以就可以省略配置repo配置环境变量的问题
sudo cp repo /usr/bin/
//给repo添加执行权限
chmod a+x /usr/bin/repo
如果无法访问google,则可直接下载repo文件: https://pan.baidu.com/s/1hr6x7Qc 密码: wgi9
android源码官方下载文档—-https://source.android.com/source/downloading
运行源代码根目录下的/build/envsetup.sh脚本
. build/envsetup.sh (或source build/envsetup.sh)
用lunch命令选择编译目标和目标版本
lunch
选择你机型相关的版本(Build-BuildType),其中
user表示用户版,有限的访问权限,适合product环境;adb默认是关闭的
userdebug,和user类似,具有root和debug权限;
eng 表示工程师版, 可调试;adb默认是打开的
如何确认user/eng版本
adb shell getprop ro.build.type
返回值如果是user即user版本,eng即eng版本
make -j8//开启8个线程并行编译
进入源码根目录下,执行下面命令
cd development/tools/idegen
//编译
mmm
//回到根目录
croot
//执行如下脚本,生成IDE项目文件
development/tools/idegen/idegen.sh
如果看下如下信息表明执行成功,则在AOSP的根目录下可看到android.ipr, android.iml文件
Read excludes: 25ms
Traversed tree: 143813ms
打开AndroidStudio,点击File—>Open,选择根目录下生成的android.ipr,等待加载完成,就大功告成了
-m: 编译所有的模块
-mm: 编译当前目录下的模块,当前目录下要有Android.mk文件
-mmm: 编译指定路径下的模块,指定路径下要有Android.mk文件