下载AOSP源码、编译、导入AS、运行在模拟器上
因为官方的地址需要*,目前国内可以利用清华大学的镜像库:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
-
AOSP和Android源码的区别:AOSP+Gapps(谷歌服务包)=原生
安卓官方原生系统是指谷歌搭载在nexus系统产品上的,AOSP指的是开源安卓项目,前者集成了谷歌服务,而AOSP没有,并且可以供开发者进行编译使用
-
下载AOSP
!!!建议使用使用tar包下载源码,见3 !!!
!!!移动硬盘如果不是NTFS的,必须要设置大小写敏感!!!
最好使用外接的硬盘来进行存储,因为AOSP占用空间比较大,公司的电脑存储空间有限。(源码下载加上编译 150G都不够用 ^^)
-
首先下载 repo 工具。(repo 是针对Android 源码多达几百个项目git库的整合,Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织)
代码块
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo
-
新建一个存储源码的目录,并且在终端中进入该目录
代码块
cd /Volume/lllll(外接硬盘的名称)/
mkdir AndroidSourceCode
cd AndroidSourceCode
如果你的硬盘是ntfs的,那么不能直接进行读写 需要做一下修改,参考这个文章:https://blog.csdn.net/u013247765/article/details/77932144/
-
初始化仓库并进行代码下载
代码块
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
#某个分支
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b pie_dev
repo sync
-
-
使用tar包下载源码
-
下载 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
-
代码块
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
-
-
开始编译
在这之前 先下载 JDK 和 XCode(c代码编译需要 xcode sdk 里面的文件)。
-
代码块
make clobber
source build/envsetup.sh
lunch aosp_x86-eng
make -j4 #(这里的数字是根据系统配置来的,比如2核2线程的就可以选择j4)
-
我遇到了一个错误:
代码块
system/core/adb/sysdeps.h:28:10: fatal error: 'error.h' file not found
#include <error.h>
^~~~~~~~~
1 error generated.
17:19:40 ninja failed with: exit status 1
下载了一个XCode就好了。
-
下载 nexus drivers : 能*的用 https://developers.google.com/android/nexus/drivers 不能*的 https://developers.google.cn/android/drivers?hl=zh-tw
下载之后使用 tar 命令解压会得到两个.sh 文件
extract-google_devices-crosshatch.sh
extract-qcom-crosshatch.sh
把这两个文件放到源码下面, 然后使用./xxx.sh 执行这两个文件,会下载相应的驱动到vendor目录中
-
#### build completed successfully (04:42:35 (hh:mm:ss)) ####
编译成功
-
-
导入到AS
-
先生成导入map文件
代码块
soruce build/envsetup.sh
mmm development/tools/idegen/
[100% 2942/2942] Install: out/host/darwin-x86/framework/idegen.jar
#### build completed successfully (23:14 (mm:ss)) ####
sudo ./development/tools/idegen/idegen.sh
-
打开Android Studio,点击File->Open,选择刚才生成的android.ipr文件即可,然后就是漫长的等待,注意此时是将源码完全导入到AS中了,不出意外,你会觉得AS运行会卡顿。
-
红色的表示已经被忽略了,没有导入,那么也可以通过以下方法来对指定的包进行修改是否导入
-
在修改完后,我们可以在android.iml可以看到,我们忽略导入了那些包
-
-
emulator 运行模拟器。