在几个 Android 的技术交流群里常常看见做 App 开发的同学想要学习 Android Framework 进而转行 Android 体系开发。同时对于现有的书籍和网络博客,许多同学表明说看不懂学不会。这些书籍和博客都写得很好,可是首要面向的对象是具有 linux 体系开发经验的同学,App 开发的同学学习起来就会有点费劲。

学得懂的 Android Framework 教程聚集成为让 App 开发同学学得懂,学得快,用得上的 Android Framework 教程。

开端教程之前,先简略自我介绍一下:

我叫阿豪,目前久居成都。12 年开端在学校实验室从事 Android 运用、体系和安全相关的研制工作,15 年从国防科技大学指挥自动化专业结业。结业后,在部队干了两年多技术后,复原回到成都,在一家成都本乡软件公司干了一年 Andorid 软件开发,基本一个星期就能干完一个月的活,感觉人快废了,19年初就辞去职务自己创业了,先干了软件外包,后来看挖掘机租赁能赚钱又开端做挖掘机租赁。到了 22 年,才能不够加上环境要素,软件外包和挖掘机生意都乌烟瘴气。22年下半年开端,开端出售固定资产,缩小经营规模,在惨烈的 22 年算是活了下来。4 年的创业之路异常困难,不过走运的是我获得了不同的人生阅历,把父母眼中的“大事”—— 买车、买房、结婚、生子都完成了。到了 23 年,创业的成果让我不再为基本的温饱问题忧愁,我有了大把的自由时间,接下的时间我准备把之前积累的一些 Android Framework 相关的经验共享给咱们,也算是给自己的技术之路画上一个小小的逗号。

今日共享的内容是怎样快速上手 AOSP,首要分为以下几个步骤:

  • 虚拟机装置
  • 开发环境建立
  • 下载编译源码
  • 从一个简略的实践开发需求体会 Framework 开发

虚拟机装置

这儿推荐在 Windows 下运用 VMware 虚拟机软件装置 Ubuntu20.04 进行开发(AOSP 官网推荐的的是 Ubuntu18.04,但 Ubuntu20.04 在 VMware下兼容性更好),装置体系的进程如下:

1. 在官网下载好 Ubuntu20.04 桌面版体系镜像

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

2. VMware 新建虚拟机

打开 VMware,菜单栏挑选 文件 -> 新建虚拟机 后,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

挑选 自定义高级,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

这儿不用改,点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

挑选 稍候装置操作体系,点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

操作体系挑选 Linux,版别挑选 Ubuntu 64位,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

虚拟机称号处取一个你喜欢的姓名,方位挑选剩余空间超过 500G 的路径,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

处理器数量挑选 1,每个处理器的内核数量挑选你 CPU 的线程数,比方我的 CPU 是 amd ryzen 3800x,8核心16线程,那么挑选 16,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

虚拟机内存的设置建议不要超过实践物理机的内存,假如你的物理机内存较小(32G以下),这儿设置为 16G。物理机内存较大(32G以上),这儿设置为 32 G。然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

网络类型挑选 运用桥接网络,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

这儿不改动,直接点击下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

这儿不改动,直接点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

这儿不改动,直接点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

根据你磁盘的空间,最大磁盘巨细尽可能设置大一点,我这儿设置为 1024 G,然后点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

这儿不改动,直接点击 下一步,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

挑选 自定义硬件,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

挑选 新 CD/DVD(SATA),呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

右侧挑选 运用 ISO 映像文件,点击阅览,挑选咱们方才下载好的体系镜像,然后点击 关闭,呈现以下界面:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

然后点击完成,至此,虚拟机新建结束。

3. 体系装置

打开 VMware 虚拟机软件:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

点击左边 Ubuntu 64位 即咱们方才新建的虚拟机,点击右侧 敞开此虚拟机,然后就进入了 Ubuntu 的体系装置流程:

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

左边挑选 English,右侧点击 install Ubuntu

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

点击 continue

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

点击 continue

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

点击 install now

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

点击 continue,点击以后会显现一张地图,这儿就不贴图了(有地图审阅不过),就是一张地图,然后点一下中国地图,下面显现 Shanghai,点击 continue

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

顺次输入:

  • 姓名
  • 电脑姓名
  • 用户名
  • 密码

然后点击 continue,然后等候装置完成,重启虚拟机即可。

开发环境建立

装置好体系后需求装置必要的软件:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python

至此,开发环境就建立好了。

下载编译源码

1. 下载 repo 东西

mkdir ~/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x ~/bin/repo

repo 的运行进程中会测验拜访官方的 git 源更新自己,假如想运用 tuna 的镜像源进行更新,能够将如下内容复制到你的 ~/.bashrc 或者 ~/.zshrc 里。

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

2. 初始化仓库并同步长途代码

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
mkdir aosp 
cd asop
#初始化仓库,-b 指示分支,这儿运用 android10
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41
#同步长途代码
repo sync

-b 后面的值参阅源代码标记和 build。这儿选用了 android-10.0.0_r41 版别用于学习。Android 每年都会更新一个大版别,学习的视点来说,挑选一个不太老的版别即可,不用追新。

3. 编译源码

source build/envsetup.sh
lunch aosp_x86_64-eng
make -j16

4. 运行模拟器

emulator -verbose -cores 4 -show-kernel

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

从一个简略的实践开发需求体会 Framework 开发

需求:去掉原生 Launcher 中的 google 查找栏。

许多产品,比方用于仓库,电商,物流的 pda 等,更多的是考虑功能性和稳定性,UI 的漂亮和易用性是其次的。这些产品一般是不会从头开发和定制 Launcher 的,可是会对 Launcher 做一些修正,比方一个常见的需求是:去掉原生 Launcher 中的 google 查找栏

因为众所周知的原因 google 查找栏在中国是没有方法运用的。在中国出售的产品,肯定是要把它去掉的。

第一步:修正文件 packages/apps/Launcher3/res/layout/search_container_workspace.xml,将以下内容注释掉:

    <!-- <fragment
        android:name="com.android.launcher3.qsb.QsbContainerView$QsbFragment"
        android:layout_width="match_parent"
        android:tag="qsb_view"
        android:layout_height="match_parent"/> -->

第二步:修正文件:packages/apps/Launcher3/src/com/android/launcher3/Workspace.java 将以下内容注释掉

        // CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(), 1);
        // lp.canReorder = false;
        // if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
        //     Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
        // }

第三步:从头编译源码,启动模拟器

make -j16
emulator

学得懂的 Android Framework 教程——玩转 AOSP 之极速上手

能够看到 Google 查找框没有了。

许多同学可能有疑问,你怎样知道这么改就能够了?其实方法就一个——读源码。Launcher 也是一个 Android 运用,和咱们平常开发的 App 没有实质的差异。就像咱们接手别人开发的项目,去处理项目中的 bug,增加新的需求是一样的。

Android Framework 不同的是,代码量大,涉及知识广泛,App 开发同学假如没有人辅导,阅览起来比较费劲。后续内容咱们带着咱们由浅入深,步步分化,为 App 开发的同学解开 Android Framework 的神秘面纱。

总结

本文首要介绍了以下几个方面的内容:

  • 虚拟机装置
  • 开发环境建立
  • 下载编译源码
  • 从一个简略的实践开发需求体会 Framework 开发

基本是倾向实践操作的内容,感兴趣的同学能够按照上面介绍的步骤体会一番。