环境:
ArchLinux: 6.2.13-arch1-1 (64-bit)
JAVA:openjdk version "9"
PYTHON: Python 2.7.18
----------
i5双核
16G内存
1T硬盘
android-10.0.0_r47之下载、编译、运行
- 下载初始化包,约60G:https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
- 解压预下载包,解压出aosp目录,只有隐藏文件夹.repo
cd ~
tar xf aosp-latest.tar
- 查看分支,获取同步版本名
cd .repo/manifests
git branch -a
- 在aosp目录选择需要同步的版本
cd ~/aosp
repo init -b android-10.0.0_r47
repo sync -c # 只同步当前分支,得到完整目录
repo start android-10.0.0_r47_dev --all # 创建分支用于开发
- 初始化编译环境
注意 若也是编译android10,为了编译顺利,建议线去看AOSP编译问题,提前做好设置
source build/envsetup.sh
- 删除上一次编译的结果,初次编译可以不需要这一步
make clobber
- 根据列表,选择与设备对应的编译版本
lunch
- 开始编译,编译需要十几个小时
make -j4
- 模拟器运行
emulator
- 编译SDK
注意: 每次执行make命令,都会先清空out目录,所以先备份一下之前make处来的out目录下的文件,再make sdk
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发android。
source build/envsetup.sh
lunch sdk-eng
# or
#lunch sdk-userdebug
# or
#lunch sdk-user
make -j4 sdk
下载AOSP源码编译、调试、刷机AOSP 源码整编单编Android源码编译SDK
编译报错
AIDEGen + Android Studio 查看和修改系统源码
去 google 官方下载 Android Studio,并将其放到 /opt 目录下。
接下来,选择我们的目标 Product:
source build/envsetup.sh
lunch aosp_x86_64-eng
做好以上准备工作后,我们就可以打开系统模块了,这里我们以 Settings 为例:
Settings 更换为其他模块名或是模块存在的路径即可打开其他模块
aidegen Settings -i s -s # -i 表示使用ide,s 表示 Android Studio ,-s 表示跳过编译
Android 系统开发工具推荐使用 AIDEGen 将 AOSP 项目导入 Android Studio
切换manifest分支,即android版本分支
当前分支为android-5.1.1_r15,需要切换为android-5.1.1_r26 (仍然使用中科大的镜像源)
cd .repo/manifests
git branch -a | grep android- | cut -d / -f 3
git branch -a | cut -d / -f 3 # 获取分支名
repo init -b android-5.1.1_r26
repo sync -c
切换源
修改aosp/.repo/manifests.git/config文件下面位置
[remote "origin"]
# 清华地址
#url = http://aosp.tuna.tsinghua.edu.cn/platform/manifest
# 科大地址
url = git://mirrors.ustc.edu.cn/aosp/platform/manifest
fetch = +refs/heads/*:refs/remotes/origin/*
[manifest]
其他
Android init启动流程初识(基于Android10源码分析)
优化
Android Profiler(一)CPU Profiler
Android Profiler(二)Memory Profiler