安卓从入门到进阶第一篇(环境搭建)

版权声明:本文为代码GG原创,转发请保留此信息,加入微信代码GG之家,获取更多文章内容,联系代码GG Q 332324956 https://blog.csdn.net/a332324956/article/details/85232506

image

“转发,助力一波!”

1.1 系统配置

1.1.1 开发环境

我们平时使用的电脑环境,基本都是Windows操作系统,为了开发Android去将电脑装成Linux系统,显而易见不太友好,于是市面上便有公司开发出来模拟器,可以模拟一个硬件环境,我们在上面安装Linux系统,来模拟出来一个开发环境。这里我是在Windows 7 64位操作系统,内存为8G(后续需要加大内存),CPU为AMD八核处理器,频率3.30GHZ,具体如下图所示:

image

1.1.2 VMware Workstation

我们这里选择VMware Workstation 12 PRO版本,从网络下载此版本,按照提示一步步安装即可。安装应用,我们时刻记得,尽量安装在纯英文的路径下,防止有些应用出现未知错误。

1.1.3 Ubuntu 16.04

1.1.3.1 下载镜像

我们这里选择Android开发经典的Linux系统Ubuntu, Ubuntu以其友好的桌面系统,以及软件包依赖集成,使得我们使用起来非常方便,这里我们选择Ubuntu 16.04来进行开发。

从官网http://releases.ubuntu.com/ 找到Ubuntu 16.04.5 LTS (Xenial Xerus)

image

击进入下载页面,我们这里选择64-bit PC (AMD64) desktop image进行下载。

image

1.1.3.2 安装镜像

打开VMware Workstation,选择创建新的虚拟机,出来向导界面。

image

我们点击下一步,选择安装程序光盘镜像文件,点击浏览,选择下载的Ubuntu 16.04镜像,点击下一步。

image

后填写全名,用户名,密码以及确认密码信息,点击下一步。

image

给虚拟机起个名称,选择保存虚拟机的路径,此路径对应的磁盘空间,必须充足,至少有200G的空闲空间。确定好后,点击下一步。

image

填写需要的硬盘大小,我们这里填写300G。按照当前Android的代码大小以及编译过程所需的硬盘空间,建议200G以上,这里选择300G。如果在开发过程中发现空间不够,检索Vm扩容,同时配合使用gparted工具进行操作即可。

image

点击下一步,确定后进入安装系统中。 我们只需要保持网路畅通,等待最终完成即可。在安装完后,我们关闭下虚拟机,设置下虚拟的参数,具体为:

image.gif

右键Ubuntu 16.04,选择设置,进入设置主界面。

image

我们将内存改到6G多,太小了编译中会出现莫名其妙的错误,无法编译。修改完后在进到处理器的界面,选择对应的设置下。

image

我们这里改成8核,提高效率。这里的核数跟你当前的硬件CPU核数关联,这里我的CPU是8核的,所以这里配置为8。

1.1.3小结

这一小节,我们通过安装VMware Workstation虚拟机,在虚拟机上安装一个Ubuntu 16.04系统,以此来作为我们Android的开发环境。既然环境已经搭建好了,让我们来下载Android源码。

1.2 源码下载

上一节我们完成了环境搭建,那么这一节就来抓取Android源码。

1.2.1下载repo

因为我们的Android代码比较庞大,所以代码是需要进行有效的管理。市面上主要的代码管理方式有SVN和Git,SVN属于集中式仓库管理,当一个人提交的时候,其他人是不能提交,在小的团队里面,SVN可以满足要求,但是当同一时间提交人数增加时,由于SVN的集中式管理模式,导致一人提交,其他人都会失败,反复提交影响工作效率。记得当时公司使用SVN,在合并代码后进行提交,都要在深夜或者周末,没人的时候进行操作,避免冲突。为了解决集中管理的方式,Git的分布式管理产生。Git使用差分方式,分布式存储的模式进行开发,避免了SVN的问题。Android源码目录较多,如果用一个Git仓库管理,显得笨重不够灵活,于是便建立了多个Git仓,而为了方便管理这些Git仓库,出现了repo工具,repo工具将Git仓库集中起来,进行统一管理,因此我们需要进行下载repo。

创建放置repo的路径,设置环境变量

mkdir ~/bin PATH=~/bin:$PATH

首先让我们安装curl工具,此工具用来下载repo,我们使用

sudo apt-get install curl 安装。

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo   #使用tuna的git-repo镜像

下载完后,将其配置成可执行。

chmod a+x ~/bin/repo

1.2.2 抓取代码

首先我们安装git

sudo apt-get install git

并且配置git的全局信息

git config --global user.name “codegg” git config --global user.email [email protected]

这两个信息会在你抓取代码,以及提交代码的时候使用。

由于国内访问Google的速度过慢,我们使用国内的镜像代码,而这里我们使用清华镜像的代码,于是输入如下命令,进行下载。

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

下载完后,将其解压开来

tar vxf aosp-latest.tar

解压完成,我们进入目录cd aosp

现在我们使用repo进行同步,首先使用

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r3

进行初始化,-b参数来选择对应的Android版本,我们这里选择android-9.0.0_r3,如果想选择别的版本,在

https://source.android.com/source/build-numbers.html#source-code-tags-and-builds中选择对应的版本,替换-b参数后的内容即可。

初始化完成后,我们使用repo sync 更新代码,此过程比较漫长,可以稍微打个盹去了。

1.2.3 小结

通过这一章节,我们知道了Android源码使用的是Git分布式管理方式,同时Git整个是由repo进行管理。通过repo,将对应Android版本的代码抓取下来。既然已经下载下来代码,那么我们先编译版本出来看看。

1.3 编译环境

1.3.1 配置软件包源

我们需要安装编译中使用的软件,而如果用国外的源去下载,就太慢了,于是我们使用国内清华地址进行下载源。具体操作为:

cd /etc/apt/

sudo gedit sources.list

将下面这些信息配置上,同时记得将之前的备份,防止出错。

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

预发布软件源,不建议启用

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

1.3.2 安装软件包

输入如下命令,进行安装即可。

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf

sudo apt-get install zip curl zlib1g-dev gcc-multilib g+±multilib

sudo apt-get install libc6-dev-i386

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install lib32z-dev ccache

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install libssl-dev

sudo apt-get install aptitude

1.3.3 编译

编译时记得我们的虚拟机必须配置很大的内存,这里我使用7.5G编译通过。尽量将自己的电脑升级到12G以上内存。

使用source ./build/envsetup.sh命令,将当前工程下的项目检索出来,同时生成一些简单命令,以供后续使用。输入命令后的界面如下:

image

然后输入lunch

image

我们这里选择2,arm64的eng版本。

然后我们输入

make -j4 | tee build.log

便开始漫长的编译过程,直到完成。模拟器编译很慢,只能慢慢等着,当编译完成后,会显示编译100%,完成。

然后我们输入emulator启动模拟器,运行起来的效果会是如下:

image

1.3.4 小结

这一节完成源码的编译,以及模拟器的启动,让我们将整个的编译流程顺了下来。小插曲,模拟器启动过程一直出现异常,经过几十分钟后,能到桌面,但是没法使用,于是后面的讲解会通过另一种方式来展示。本来计划的是可以一路在源码中修改编译,现在看来这个方式不行。当然,如果有人知道Android 9源码编译出来的img,在乌班图下模拟器不能正常运行的原因,欢迎交流。如果你的电脑顺利运行起来,也请告诉我下电脑配置。

下一节会来讲解源码各个目录的含义,以及我们常用的目录,同时编译出来的out目录下,都有什么内容,做到全面的讲解。这里不仅是理论,重要的是实战。这里会少讲代码,尽量让你手把手的实战,跟踪流程。

后续的课程主要讲解内容为

操作系统原理简介

安卓启动流程 系统框架 APK运行机制 文件系统 RECOVERY代码 View显示框架 虚拟机简单讲解 HOOK原理剖析 JNI实现原理 调试一切 破解反编译

欢迎大家加入星球,一起学习!

image

不惧风霜

大话Android安全攻防

猜你喜欢

转载自blog.csdn.net/a332324956/article/details/85232506