ubuntu 20.04编译Android 11源代码&模拟器

Android 11 系统映像可直接将 ARM 指令转换成 x86 指令,因此以前很多需要真机测试的情况,现在只需要模拟器就可以进行操作了。

由于众所周知的原因,我们是没办法正常下载Android的源代码的,因此只能使用国内的镜像来操作了。

1.安装repo工具以及依赖

2.在需要存储代码的地方创建文件夹

3.使用镜像下载Android源代码

清华大学的镜像

4.Android 模拟器编译(可选)

编译完成之后,产生的模拟器可执行文件及库文件都位于external/qemu/objs/android目录下:

后面就可以像执行 SDK 中的模拟器那样,执行我们编译的模拟器了:

5.列出android-11全部分支

6.编译Android 11系统镜像

7.引入编译环境变量

8.设置编译目标,此处我们指定编译x86_64下的完整调试版本

9.如果需要跟踪调试代码,建议编译为调试类型

10.编译

注意此处如果发生编译失败,原因基本上是编译顺序导致的引用出错,也就是某些模块还没有编译完成,其他模块已经开始尝试链接,导致依赖错误,此时只要把多线程并发编译修改成单线程编译即可,即直接执行

运行镜像

选择system-qemu.img和vendor-qemu.img,这两个镜像是专门为qemu运行制作的,如果选择system.img 和vendor.img,则avd运行失败。

上面运行起来的镜像是从~/AndSrc/aosp/out/debug/target/product/generic/hardware-qemu.ini即可读取配置信息的,但是这个文件直接修改无效,我们如果需要修改参数,只能从启动参数中设置。
比如我们如果需要增大内存,开启GPU的支持,则执行如下命令:

参考链接


发布者

《ubuntu 20.04编译Android 11源代码&模拟器》上有2条评论

  1. 请教下,emulator能否脱离sdk或者aosp独立运行呢?比如使用qemu运行,我编译了emulator源码,但按照帮助命令并不能启动模拟器:
    See -help-build-images for more details.

    If you're neither using the SDK or the Android build system, you
    can still run the emulator by explicitely providing the paths to
    *all* required disk images through a combination of the following
    options: -sysdir, -datadir, -kernel, -ramdisk, -system, -data, -cache
    -sdcard and -snapstorage.

    1. 这个报错说明模拟器是可以的,只是给模拟器的参数有问题,可以试着指定 -sysdir, -datadir, -kernel, -ramdisk, -system, -data, -cache
      -sdcard and -snapstorage 这些参数的位置试试

发表回复

您的电子邮箱地址不会被公开。