今天分享的内容是怎么快速上手 AOSP,主要分为以下几个步骤:
- 硬件要求
- 虚拟机安装
- 开发环境搭建
- 下载编译源码
- 从一个简单的实际开发需求体验 Framework 开发
硬件要求
用于 Android Framework 开发的电脑需要较强的 CPU,大内存,大存储,一般来说需要满足以下要求:
- CPU 不低于 6 核心,建议 8 核及以上
- 内存不低于 32G,建议 64G
- 存储空间不低于 500G,建议 1TB SSD
虚拟机安装
这里推荐在 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:
网络类型选择 使用桥接网络
,然后点击 下一步
,出现以下界面:
这里不改动,直接点击下一步,出现以下界面:
这里不改动,直接点击 下一步
,出现以下界面:
这里不改动,直接点击 下一步
,出现以下界面:
根据你磁盘的空间,最大磁盘大小
尽可能设置大一点,我这里设置为 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
然后 source 一下:
source ~/.bashrc
#如果使用的是 zsh
#source ~/.zshrc
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 开发
基本是偏向实际操作的内容,感兴趣的同学可以按照上面介绍的步骤体验一番。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/20414,转载请注明出处。
评论0