当前位置: 首页 > news >正文

Ubuntu 22.04.3编译AOSP13刷机

文章目录

  • 设备信息
  • 下载AOSP并切换分支
  • 获取设备驱动
  • 编译系统
  • 编译遇到的问题Cannot allocate memory
  • Ubuntu设置USB调试
  • 刷机
  • 参考链接

设备信息

手机:Pixel 4XL

下载AOSP并切换分支

在清华大学开源软件镜像站下载初始化包aosp-latest.tar。
解压缩,切换到Pixel 4XL对应的AOSP 13分支然后同步代码。

tar xf aosp-latest.tar
cd aosp
repo init -b android-13.0.0_r31 #切换代码分支
repo sync

获取设备驱动

在https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn中获取build ID。
以android-13.0.0_r31为例,对应build ID为TP1A.221005.002.B2
示例
根据build ID在https://developers.google.com/android/drivers?hl=zh-cn中下载驱动文件。
示例
驱动文件解压缩后是sh脚本文件,把sh脚本文件移动到aosp根目录下并执行,输入 I ACCEPT 获取驱动文件。

编译系统

在aosp根目录执行下面命令。

source build/envsetup.sh
lunch XXX
m

编译遇到的问题Cannot allocate memory

解决方法:

ulimit -n 20480

分析部分:

从表面上看,分配内存失败,以为是内存不够,但是我这是64G的内存,以前在16G内存+16G虚拟内存情况下都能正常编译,现在转到服务器上怎么就有问题呢?报错期间,查看内存是有剩余的。期间从网上找了不同的解决方法,一个是去掉oat,WITH_DEXPREOPT 和WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY改为false,测试无效;另一个是修改dalvik.vm.dex2oat-Xmx 和dalvik.vm.image-dex2oat-Xmx等配置,调大,仍然无效。没办法,自己看看dex2oatd代码,从报错的位置跟到mapmem,发现mmap报错位置是fd.get()==-1,难道是内有文件描述符的问题吗?通过cat /proc/sys/fs/file-nr命令查看,10720 0 9223372036854775807服务器最大文件描述符很大,根本用不完,那就是每个用户的数量受限了?ulimit -n查看是1024,既然服务器这么大,那调整一下,ulimit -n 20480。再次编译的时候,没有报错,一次通过,删除out目录,再次重新编译,也是一次通过。
原文链接:https://blog.csdn.net/fuyl1985/article/details/134378503

Ubuntu设置USB调试

Ubuntu设置后才能adb连接到手机。

sudo usermod -aG plugdev $LOGNAME
apt-get install android-sdk-platform-tools-common

刷机

adb reboot bootloader
fastboot devices #确认是否连接上手机
fastboot flashall -w #刷机

参考链接

https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn
https://yanke.info/?id=128
https://blog.csdn.net/fuyl1985/article/details/134378503
https://developer.android.com/studio/run/device.html?hl=zh-cn#setting-up
https://source.android.com/docs/setup/build/running?hl=zh-cn

相关文章:

  • R语言如何实现多元线性回归
  • HTML新手入门笔记整理:块元素和行内元素
  • Django之importlib模块
  • angular 实现模块共享
  • WebSocket了解
  • ErphpdownV16.21插件 安装教程和插件下载
  • 初次使用vs code时go模块安装失败的解决办法
  • SASS的导入文件详细教程
  • 基于OPC UA 的运动控制读书笔记(1)
  • HCIA-RS基础:动态路由协议基础
  • 支持Arm CCA的TF-A威胁模型
  • 系列九、声明式事务(xml方式)
  • pop链反序列化 [MRCTF2020]Ezpop1
  • 微信小程序便民小工具源码
  • Kotlin学习——kt中的类,数据类 枚举类 密封类,以及对象
  • 【刷算法】从上往下打印二叉树
  • 345-反转字符串中的元音字母
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • golang中接口赋值与方法集
  • Java方法详解
  • js中forEach回调同异步问题
  • Python_OOP
  • python大佬养成计划----difflib模块
  • Redux系列x:源码分析
  • Zsh 开发指南(第十四篇 文件读写)
  • 解析带emoji和链接的聊天系统消息
  • 前端知识点整理(待续)
  • 区块链将重新定义世界
  • 微信小程序实战练习(仿五洲到家微信版)
  • 为什么要用IPython/Jupyter?
  • 自定义函数
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​人工智能书单(数学基础篇)
  • #微信小程序(布局、渲染层基础知识)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)STL算法之遍历容器
  • (第27天)Oracle 数据泵转换分区表
  • **CI中自动类加载的用法总结
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net8 Blazor 尝鲜
  • .NET中的Exception处理(C#)
  • /bin/rm: 参数列表过长"的解决办法
  • @angular/cli项目构建--Dynamic.Form
  • @EnableConfigurationProperties注解使用
  • [1204 寻找子串位置] 解题报告
  • [20150321]索引空块的问题.txt
  • [20160807][系统设计的三次迭代]
  • [20181219]script使用小技巧.txt
  • [2669]2-2 Time类的定义
  • [Android学习笔记]ScrollView的使用
  • [Angular] 笔记 18:Angular Router
  • [C++]:for循环for(int num : nums)
  • [CakePHP] 在Controller中使用Helper