在 Ubuntu 下面我编译 android 12 已经尝试过很多次,都失败了。
都是执行下面这步的时候,编译了几个小时以后报错

make sdk sdk_repo -j12


一开始给虚拟机分配了 8GB 的内存条,编译的时候显示RAM最低要16GB。

最后报错

Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat com.intellij.openapi.util.Pair.create(Pair.java:18)at com.intellij.lang.java.parser.DeclarationParser.parseModifierList(DeclarationParser.java:491)at com.intellij.lang.java.parser.DeclarationParser.parseModifierList(DeclarationParser.java:451)at com.intellij.lang.java.parser.DeclarationParser.parse(DeclarationParser.java:283)at com.intellij.lang.java.parser.DeclarationParser.parseClassBodyDeclarations(DeclarationParser.java:231)


尝试过下面的解决办法,都失败了
1.将执行 make sdk sdk_repo -j12 改为 make sdk sdk_repo -j1
2.修改 config.go

cd ~/android-12.1.0_r4/build/soong/java
gedit droiddoc.go


添加下面这一行

Flag("-J-Xmx4096m").

还有

cd build/soong/java/config
gedit config.go


这几种方法怎么实验都会报和原来一样的错误

最后,我只能买了一根16GB 的内存条,电脑现在是8+16,一共 24GB 的内存。然后给虚拟机分配了21616MB 的内存(显示21.1GB),最后编译成功了。

下面是最重要的准备工作:
创建虚拟机,并且分配下图的内存和处理器
建议给虚拟机分配超过 21GB 的内存,不然仍然可能编译报错。

文章目录

  • 1. 安装编译Android源码依赖的软件包
  • 2. 调整 SWAP 空间大小
  • 3. 设置权限
  • 4. 将自定义文件变成swap文件:
  • 5. 配置启动文件
  • 6. 挂载启动swap空间
  • 7. 初始化编译环境
  • 8. 编译
  • 9. 在Ubuntu 中启动Android 虚拟机
  • 10. 在Ubuntu 启动编译好的 Android 模拟器
  • 点击拍照,可以看到是真的能拍照保存,证明模拟器的 camera 使用没有问题。
  • 11. 在Android studio 中创建模拟器(写的很长)
    • 11.1 先把编译好的镜像复制到 windows
    • 11.2 创建新项目,并解决新项目编译报错问题
    • 11.3 使用之前编译好的镜像创建模拟器
    • 11.4 启动和使用创建好的模拟器

1. 安装编译Android源码依赖的软件包

以下命令都要全部执行完

sudo apt-get install -y openjdk-8-jdk
sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg flex bison gperf build-essential
sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install -y libc6-dev-i386
sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install -y lib32z1-dev ccache
sudo apt-get install -y bc python flex bison gperf libsdl-dev libesd0-dev build-essential zip curl
sudo apt-get install -y libssl-dev liblz4-tool
sudo apt-get install -y libesd-java libwxgtk3.0-dev squashfs-tools pngcrush schedtool libxml2
sudo apt-get install -y lzop schedtool lib32readline-dev libswitch-perl libssl-dev

其中 ,下载到第五个的时候报下面的错误

解决办法:

sudo vim /etc/apt/sources.list

在行尾添加如下两行的内容

deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

更新软件源并重新安装:

sudo apt-get update && sudo apt-get install libesd0-dev

2. 调整 SWAP 空间大小

查看 SWAP 空间大小

free -h


创建SWAP文件及分配大小

这里使用自己创建SWAP文件,名字可以随便取,为了方便取成SWAPfile,执行如下命令:

sudo dd if=/dev/zero of=/SWAPfile bs=1M count=20480

解释如下:

if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

这里bs=1M,意味着输入输出块的大小为1MBytes,count=20480意味着我总共给这个将来的SWAP分区文件分配了1M * 20480= 20G的空间。

3. 设置权限

终端中进入root(也可以不进入),输入如下命令:

sudo chmod 0600 /SWAPfile

4. 将自定义文件变成swap文件:

sudo mkswap /SWAPfile

5. 配置启动文件

如果只是在终端里面配置好SWAP就不管了,那么在下次重新启动PC的时候SWAP又变成初始的默认值了,这里需要将其设置成启动时默认挂载swap空间,命令如下:

sudo gedit /etc/fstab

在最末增加新的一行

/SWAPfile          swap       swap     defaults       0       0

6. 挂载启动swap空间

sudo swapon    /SWAPfile

到这里就配置完全部流程了,可以执行 free -h 命令看看swap空间的大小是否有改变,最后再重新启动电脑,执行 free -h 看是否依然生效。

重启 Ubuntu 后,其 Swap 空间也会是这个 21 GB

下面开始编译Android模拟器

7. 初始化编译环境

配置环境变量

cd android-12.1.0_r4/
source build/envsetup.sh

lunch

一共有77个产品可以选择


这77个产品里面没有模拟器,我们 ctrl+c 退出

用下面的命令来选择模拟器

lunch sdk_phone_x86_64

8. 编译

使用下面的命令编译出可以在 windows 运行的 img,我花了大概5个半小时。

make sdk sdk_repo -j12

cd ~/android-12.1.0_r4
make clean
source build/envsetup.sh
lunch sdk_phone_x86_64
make sdk sdk_repo -j12

2022年 9月26日凌晨分 1:24 我终于编译成功了!!!

9. 在Ubuntu 中启动Android 虚拟机

cd ~/android-12.1.0_r4
emulator

报错

emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
CPU acceleration status: KVM requires a CPU that supports vmx or svm


解决办法:
1.先关闭虚拟机
2.勾选虚拟化Intel VT-x/EPT和AMD-V/RVI(V)

10. 在Ubuntu 启动编译好的 Android 模拟器

执行

cd ~/android-12.1.0_r4
sudo su
source build/envsetup.sh
lunch sdk_phone_x86_64
emulator

成功启动


**点击 ok **

打开摄像头


点击拍照,可以看到是真的能拍照保存,证明模拟器的 camera 使用没有问题。

除此之外,我们也可以将我们编译好的Android12镜像,拷贝到Windows 下,用来在 Android Studio 创建模拟器。

11. 在Android studio 中创建模拟器(写的很长)

11.1 先把编译好的镜像复制到 windows

进入到

~/android-12.1.0_r4/out/host/linux-x86/sdk/sdk_phone_x86_64

拷贝到了 windows,然后解压

11.2 创建新项目,并解决新项目编译报错问题

因为使用 Android Studio 运行项目会遇到各种配置问题,现在来教大家解决这些报错,然后再教大家使用之前编译好的 镜像 来创建模拟器。

打开 Android Studio
随便创建一个项目,然后点击运行,报错

现在来设置 jdk 的版本为 jdk 11 或以上,我设置的是 jdk 14(要提前在 jdk 官网下载,然后保存到本地,并且设置好java的环境变量)
设置 gradle 的目录(因为C盘空间有限,我把 gradle 移到别的盘了)

重新编译后成功

另外:如果有遇到下面的错误,只要将 compileSdk 和 targetSdk 改为 32 后重新编译即可。

改成32后再编译

11.3 使用之前编译好的镜像创建模拟器

先进入到 Android SDK 的目录,然后进入 system-images 目录

然后在 system-images 目录下创建 android-32 文件夹

然后进入刚才创建的 android-32 目录下创建 google_apis 文件夹

最后,我们把之前复制过来的镜像文件里的一部分复制到 google_apis 文件夹

这里面的内容如下

复制过来

现在就能在Android Studio 根据这个镜像来创建模拟器了

11.4 启动和使用创建好的模拟器

新版Android Studio 模拟器界面都不一样了


打开 camera app,点击拍照

后面我们会基于今天的这个模拟器,进行 Android Camera 的测试。

Android Camera 测试环境搭建:编译Android模拟器相关推荐

  1. 高通Android智能平台环境搭建_编译流程分析

    高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...

  2. 高版本Android真机逆向测试环境搭建

    高版本Android真机逆向测试环境搭建 618购入了新机Xiaomi K50,真滴便宜又好用,续航很强界面很丝滑.正好拿来做逆向测试机? 怎么可能!这也太奢侈了!不过淘汰的Xiaomi Note 7 ...

  3. Flutter 环境搭建 与 Android 应用的调试

    Flutter 环境搭建 与 Android 应用的调试 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_2855 ...

  4. Android源码环境搭建(aosp Ubuntu 16.04)

    Android源码环境搭建(aosp Ubuntu 16.04) FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298 FrameWork ...

  5. Eclipse IDE 使用技巧和Android App 开发环境搭建和配置

    写在前面: 本片文章只是记录了自己学习时的一些笔记,纯粹是为了自己后面方便查找,片言碎语,不适合大家浏览,请大家不要参考这篇文章. 正文: Eclipse IDE 使用技巧               ...

  6. CTS测试中Camera FOV Calibration标准测试环境搭建

    CTS测试分为自动测试和手动测试,CTS Verifier测试是CTS测试的手动测试部分.以下是CTS Verifier测试的Camera FOV Calibration测试环境搭建. 安装CTS V ...

  7. 14天学会安卓开发(第一天)Android架构与环境搭建

    14天学会安卓开发 作者:神秘的N (英文名  corder_raine) 联系方式:369428455(反馈) 交流群 :284552167(示例,原文档下载) 版权为作者所有,如有转载请注明出处 ...

  8. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  9. SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建——5.Android手机端与robot端ROS网络通信...

    SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建--5.Android手机端与robot端ROS网络通信 摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整 ...

最新文章

  1. 《Effective Java读书笔记》--序列化
  2. 011_fastdfs-client-java模块
  3. 获取python包的路径
  4. 【Dreamweaver】前端初学者开发利器Dreamweaver快捷键大全
  5. sprintf()函数
  6. C++基础与深度解析第五章: 语句
  7. centos7.3 kvm虚拟化全自动化部署(0915金测OK)
  8. OpenCV自动内存管理
  9. Wget漏洞(CVE-2016-4971)利用方式解析
  10. 在苹果Mac上Word、Excel 界面变黑如何解决?
  11. C语言实现24点游戏算法
  12. UCenter的百科
  13. 计算机应用一级考试win10,2016年计算机一级考试试题「Windows」
  14. [翻译]为EXPRESSION WEB 4添翼—如何支持HTML5设计开发!
  15. 第一章 命题逻辑 1.7 推理理论
  16. matlab中输入数学字母,Matlab希腊字母和数学符号
  17. 短线股票怎么操作怎样才能炒好短线股票
  18. php获取qq群列表,自己获取QQ群列表(上)
  19. PDF转word免费在线转换
  20. Pycharm win7 键盘错乱/或者显示乱码

热门文章

  1. 小唐开始学 Spring Boot——(1)IDEA 2021.3.2和Maven的安装配置
  2. 上接星辰,下抵炊烟:一颗中国AI定海针的故事
  3. 页面操作权限-vue
  4. 记一次堡垒机使用putty连接机器出现信息丢失问题
  5. 机会均等,看你懂不懂得珍惜。
  6. 计算机科学与技术专业未来规划,大一计算机科学与技术专业职业生涯发展规划书...
  7. Java新版本API发送新浪微博可能会出现的问题呢
  8. c语言考试程序设计模板,期末考试C语言程序设计
  9. Werkzeug——python web开发工具包
  10. mysql 受影响行数_关于受影响行数的详细介绍