在几个 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 桌面版体系镜像
2. VMware 新建虚拟机
打开 VMware,菜单栏挑选 文件 -> 新建虚拟机
后,呈现以下界面:
挑选 自定义高级
,然后点击 下一步
,呈现以下界面:
这儿不用改,点击 下一步
,呈现以下界面:
挑选 稍候装置操作体系
,点击 下一步
,呈现以下界面:
操作体系挑选 Linux
,版别挑选 Ubuntu 64位
,然后点击 下一步
,呈现以下界面:
虚拟机称号
处取一个你喜欢的姓名,方位
挑选剩余空间超过 500G 的路径,然后点击 下一步
,呈现以下界面:
处理器数量
挑选 1,每个处理器的内核数量
挑选你 CPU 的线程数,比方我的 CPU 是 amd ryzen 3800x,8核心16线程,那么挑选 16,然后点击 下一步
,呈现以下界面:
虚拟机内存的设置建议不要超过实践物理机的内存,假如你的物理机内存较小(32G以下),这儿设置为 16G。物理机内存较大(32G以上),这儿设置为 32 G。然后点击 下一步
,呈现以下界面:
网络类型挑选 运用桥接网络
,然后点击 下一步
,呈现以下界面:
这儿不改动,直接点击下一步,呈现以下界面:
这儿不改动,直接点击 下一步
,呈现以下界面:
这儿不改动,直接点击 下一步
,呈现以下界面:
根据你磁盘的空间,最大磁盘巨细
尽可能设置大一点,我这儿设置为 1024 G,然后点击 下一步
,呈现以下界面:
这儿不改动,直接点击 下一步
,呈现以下界面:
挑选 自定义硬件
,呈现以下界面:
挑选 新 CD/DVD(SATA)
,呈现以下界面:
右侧挑选 运用 ISO 映像文件
,点击阅览,挑选咱们方才下载好的体系镜像,然后点击 关闭
,呈现以下界面:
然后点击完成,至此,虚拟机新建结束。
3. 体系装置
打开 VMware 虚拟机软件:
点击左边 Ubuntu 64位
即咱们方才新建的虚拟机,点击右侧 敞开此虚拟机
,然后就进入了 Ubuntu 的体系装置流程:
左边挑选 English
,右侧点击 install Ubuntu
:
点击 continue
:
点击 continue
:
点击 install now
:
点击 continue
,点击以后会显现一张地图,这儿就不贴图了(有地图审阅不过),就是一张地图,然后点一下中国地图,下面显现 Shanghai
,点击 continue
:
顺次输入:
- 姓名
- 电脑姓名
- 用户名
- 密码
然后点击 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
从一个简略的实践开发需求体会 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
能够看到 Google 查找框没有了。
许多同学可能有疑问,你怎样知道这么改就能够了?其实方法就一个——读源码。Launcher 也是一个 Android 运用,和咱们平常开发的 App 没有实质的差异。就像咱们接手别人开发的项目,去处理项目中的 bug,增加新的需求是一样的。
Android Framework 不同的是,代码量大,涉及知识广泛,App 开发同学假如没有人辅导,阅览起来比较费劲。后续内容咱们带着咱们由浅入深,步步分化,为 App 开发的同学解开 Android Framework 的神秘面纱。
总结
本文首要介绍了以下几个方面的内容:
- 虚拟机装置
- 开发环境建立
- 下载编译源码
- 从一个简略的实践开发需求体会 Framework 开发
基本是倾向实践操作的内容,感兴趣的同学能够按照上面介绍的步骤体会一番。