AndroidStudio 导入AOSP

AOSP: Android开放源代码项目(Android Open Source Project)

下载AndroidStudio—https://developer.android.com/studio/index.html

配置JDK

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

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

编译Android源码

初始化环境

运行源代码根目录下的/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个线程并行编译

导入Android Studio

编译idegen模块

进入源码根目录下,执行下面命令

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, mmm编译命令的使用

-m: 编译所有的模块
-mm: 编译当前目录下的模块,当前目录下要有Android.mk文件
-mmm: 编译指定路径下的模块,指定路径下要有Android.mk文件

猜你喜欢

转载自blog.csdn.net/dzkdxyx/article/details/77413511