AOSP 极速上手

AOSP 极速上手

今天分享的内容是怎么快速上手 AOSP,主要分为以下几个步骤:

硬件要求 虚拟机安装 开发环境搭建 下载编译源码 从一个简单的实际开发需求体验 Framework 开发 # 硬件要求 用于 Android Framework 开发的电脑需要较强的 CPU,大内存,大存储,一般来说需要满足以下要求:

CPU 不低于 6 核心,建议 8 核及以上 内存不低于 32G,建议 64G 存储空间不低于 500G,建议 1TB SSD # 虚拟机安装 这里推荐在 Windows 下使用 VMware 虚拟机软件安装 Ubuntu20.04 进行开发(AOSP 官网推荐的的是 Ubuntu18.04,但 Ubuntu20.04 在 VMware下兼容性更好,实测也没有任何兼容性问题),安装系统的过程如下:

# 1. 在官网 (opens new window)下载好 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,然后等待安装完成,重启虚拟机即可。

系统安装完成后,关闭虚拟机,点击 编辑虚拟机设置:

选择处理器,并勾选上虚拟化引擎两个选项(如果是 Intel 处理器,勾选第一个即可):

# 开发环境搭建 安装好系统后需要安装必要的软件:

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至此,开发环境就搭建好了。

# 下载编译源码 # 1. 下载 repo 工具 mkdir ~/bin

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

chmod +x ~/bin/repo

123repo 的运行过程中会尝试访问官方的 git 源更新自己,如果想使用 tuna 的镜像源进行更新,可以将如下内容复制到你的 ~/.bashrc 或者 ~/.zshrc 里。

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

PATH=~/bin:$PATH

12然后 source 一下:

source ~/.bashrc

#如果使用的是 zsh

#source ~/.zshrc

123# 2. 初始化仓库并同步远程代码 git config --global user.email "you@example.com"

git config --global user.name "Your Name"

mkdir aosp

cd aosp

#初始化仓库,-b 指示分支,这里使用 android10

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41

#同步远程代码

repo sync

12345678-b 后面的值参考源代码标记和 build (opens new window)。这里选用了 android-10.0.0_r41 版本用于学习。Android 每年都会更新一个大版本,学习的角度来说,选择一个不太老的版本即可,不必追新。

这里可能会遇到类型 SyntaxError: invalid syntax ‘python’: No such file or directory 等错误,这是 repo 和 Python 版本不一致导致的,我们可以用如下方式解决:

# 安装 python3

sudo apt install python3

# 下载最新的 repo

curl https://storage.googleapis.com/git-repo-downloads/repo-1 > ~/bin/repo

chmod a+x ~/bin/repo

# 使用 python3 执行 repo

python3 ~/bin/repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41

1234567还有一种比较简单的方法,直接建立软链接:

# 安装 python3

sudo apt install python3

sudo apt install python-is-python3

# # 建立软链接

# sudo ln -s /usr/bin/python3.6 /usr/bin/python

123456# 3. 编译源码 source build/envsetup.sh

# 如果是 Android13

# lunch sdk_phone_x86_64

lunch aosp_x86_64-eng

make -j16

12345# 4. 运行模拟器 emulator -verbose -cores 4 -show-kernel

1

# 从一个简单的实际开发需求体验 Framework 开发 需求:去掉原生 Launcher 中的 google 搜索栏。

很多产品,比如用于仓库,电商,物流的 pda 等,更多的是考虑功能性和稳定性,UI 的美观和易用性是其次的。这些产品一般是不会重新开发和定制 Launcher 的,但是会对 Launcher 做一些修改,比如一个常见的需求是:去掉原生 Launcher 中的 google 搜索栏。

由于众所周知的原因 google 搜索栏在中国是没有办法使用的。在中国销售的产品,肯定是要把它去掉的。

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

12345第二步:修改文件: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");

// }

12345第三步:重新编译源码,启动模拟器

make -j16

emulator

12

可以看到 Google 搜索框没有了。

很多同学可能有疑问,你怎么知道这么改就可以了?其实办法就一个——读源码。Launcher 也是一个 Android 应用,和我们平时开发的 App 没有本质的区别。就像我们接手别人开发的项目,去解决项目中的 bug,添加新的需求是一样的。

Android Framework 不同的是,代码量大,涉及知识广泛,App 开发同学如果没有人指导,阅读起来比较吃力。后续内容我们带着大家由浅入深,步步分解,为 App 开发的同学解开 Android Framework 的神秘面纱。

# 配置好的虚拟机 如果你不想配置系统,可以使用我配置好的 vmware 17 虚拟机:

链接:https://pan.baidu.com/s/1_XHOpEr7egN1cQs1uSZ2ug

提取码:1234

下载下来,使用7zip解压,vmware17打开,根据自己电脑情况调整虚拟机的内存和cpu核心数

账号: android

密码: android

源码路径:~/aosp/android10_r41

进入源码路径:

source build/envsetup.sh

lunch aosp_x86_64-eng

m

emulator

1234就可以看到启动的模拟器了

# 总结 本文主要介绍了以下几个方面的内容:

虚拟机安装 开发环境搭建 下载编译源码 从一个简单的实际开发需求体验 Framework 开发 基本是偏向实际操作的内容,感兴趣的同学可以按照上面介绍的步骤体验一番。

相关推荐

英国365bet官方 魅族 魅蓝Note 2(2015年06月上市)

魅族 魅蓝Note 2(2015年06月上市)

📅 07-02 👁️ 8111
office365人工客服电话 轻松上手!Java开发者必看:百度地图API调用全攻略

轻松上手!Java开发者必看:百度地图API调用全攻略

📅 07-12 👁️ 8124
英国365bet官方 iphone4s手机电池

iphone4s手机电池

📅 07-16 👁️ 6559
英国365bet官方 《微店实名认证与证件认证规则》

《微店实名认证与证件认证规则》

📅 06-28 👁️ 4408