Android系统篇(一)——建立Android系统开发环境

《深入解析Android5.0系统》 一书笔记

在开始研究Android系统之前,我们要准备好一些开发的资料,比如Ubuntu,源码,开发资料等,Android系统本身来说,非常的庞大,应用使用的是JAVA语言,底层使用C/C++,所以,如果条件允许的话,尽可能的多掌握一些吧。

一.Ubuntu

我们更多的可能会选择 Window + Ubuntu 来进行工作,所以我们会比较依赖虚拟机,在我之前的博客中已经有介绍了,这里不会重复介绍

Android源码浅析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置

Android源码浅析(二)——Ubuntu Root,Git,VMware Tools,安装输入法,主题美化,Dock,安装JDK和配置环境

Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机

Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名

Android源码浅析(六)——SecureCRT远程连接Linux,配置端点和字节码

这里我选择的是最新的Ubuntu 17.10.1 算是尝尝鲜吧。

紧接着,我们需要安装一些必要的工具,比如git,vim之类的,我们来看下命令

sudo apt-get install git

sudo apt-get install vim

sudo apt-get install repo

sudo apt-get install curl

sudo apt-get install make

到这里,我们的准备工作算是可以了,我们现在需要准备一些开发工具

二.开发工具

我们需要安装一下便利于我们开发的东西,比如JDK

1.JDK

我这里安装的是JDK1.7,在哪里下载的话,自己官网或者其他地方随便搜索以下就出来了

//解压
sudo tar zxvf jdk-7u79-linux-x64.tar.gz 
//移动
sudo mv jdk1.7.0_79 /usr/lib/jdk/
//配置
vim ~/.bashrc
//末尾处
export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_79
export JRE_HOME=${JAVA_HOME}/jre   
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
export PATH=${JAVA_HOME}/bin:$PATH   

2.OpenJDK

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk

3.Android Studio/SDK

Android Studio 中文社区

下载下来解压,然后自动安装SDK即可,前提是有JDK

4.Source Insight

Source Insight

Source Insight是个神器,可以很方便的搜索,查找源码中的内容

三.下载源码

PS:参考 Google 教程 https://source.android.com/source/downloading.html, 将 https://android.googlesource.com/ 全部使用 https://aosp.tuna.tsinghua.edu.cn/ 代替即可。

在国内想要下载一份源码,实际上并不是那么容易的….

这里我们通过清华大学的源去下载

清华大学开源软件镜像站

1.下载repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://aosp.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

这里写图片描述

这里的代码应该很好理解吧,创建一个bin的文件夹来指定这个文件夹是PATH,然后去下载repo,并且给予权限

2.同步源码

mkdir Aosp
cd Aosp
//repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
//指定版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.0.0_r1
repo sync

正常来讲,我们上面的命令,是创建一个Aosp的文件夹然后init初始化后直接去同步代码的,但是我们实际操作过程中,会碰到几个小问题

  • a.repo sync 没有反应

这个可能是最开始curl repo的时候repo有问题,我们可以进入bin目录下

vim repo

看下你的repo脚本里有没有内容,如果没有的话,需要参考

git-repo帮助

按照上面的提示,首先在你的bin目录下

//删除原先的无用repo
rm -rf repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
  • b.无法连接源

这里要注意下,repo的运行过程中会尝试访问官方的git源更新自己

这里写图片描述

如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

注意重启或者刷新终端,这样我们就可以继续init了

这里写图片描述

到这里,我们就可以repo sync 来同步这份源码了。

在这里说一下,就是在sync过程中碰到的一些错误

这里写图片描述

这个错误:

error: Exited sync due to fetch errors

可以参考 When running repo sync error: Exited sync due to fetch errors

输入

repo sync -f -j8

即可解决

碰到的第二个问题

RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function

这里写图片描述

这是由于git默认缓存大小不足导致的,使用下面的命令增加缓存大小

git config --global http.postBuffer 2000000000

碰到的第三个问题

Cannot fetch platform/packages/apps/OMA-DM

这里写图片描述

据说很多人下载Android5.0的源码的时候都碰到了这个问题

我的解决是

这里写图片描述

在进入 .repo目录下的xml配置文件中注释掉这一行

这里写图片描述

终于,漫长的N个小时过去了,这份5.0的AOSP源码也下载下来了,不过我们还需要去下载一样东西,那就是kernel

四.下载Kernel

内核我们需要单独的去下载,并且每个厂家的都不一样,所以都会有些差异的,具体可参考这篇博客:

不翻墙下载Android内核源码

我使用的是google 自己手机的tegra的内核

cd device/asus/grouper/
//查看记录
git log kernel
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/tegra.git
cd tegra/
git checkout 5d8ecd2

五.源码编译

事实上编译才是重头戏,因为很多问题都会出现,我们需要一步步的来排查,首先我们来看下编译源码的步骤

source build/envsetup.sh
//选择编译目标版本
lunch
//多线程编译
make -j8

这里我选择的是aosp_x86-eng

这里写图片描述

但是在编译过程中,会出现很多问题,我这里并没有去编译,因为我只是去看源码,主要还是一个个去解,再写出来很麻烦,所以我想下次编译的时候专门写一篇。

本篇文章先写到这里,下篇我们来学习下Build环境

PS:有兴趣的朋友可以加群讨论下:484167109

猜你喜欢

转载自blog.csdn.net/qq_26787115/article/details/79543340
今日推荐