自己编译 Android 源码烧写到手机里,需要做什么准备工作?

2022-03-23 20:41:15 +08:00
 amiwrong123

目前手里有书《深入理解 Android 内核设计思想》《深入理解 Android 卷 I 》,我可以按照书上的步骤编译出 img 来。这两本书里都有介绍怎么编译 Android 源码。

但之前确实没有烧写过手机,只是之前买过小米手机(忘了什么型号,这手机还掉了),然后升级过 ROM ,我记得步骤是先解锁,然后用 论坛上的方法来 线刷。

  1. 第一个问题,我是从淘宝上随便买一个二手安卓手机就可以吗(如何询问卖家,哪种二手手机才是我需要的 可以烧写的手机)?是不是最好买小米的,因为小米的可以解锁

  2. 如果把自己编译出来的 img ,烧写进手机里,我可以之后自己再去百度。不过大佬们也可以推荐点 博客或者教程。

搞这个事的目的,主要是为了研究 Android 源码,光看书总觉得少了点什么。理论上,我可以加打印日志,或者修改源码了。

9419 次点击
所在节点    Android
24 条回复
Donahue
2022-03-23 20:45:08 +08:00
研究源码可能虚拟机也可以?不懂但是感觉物理机刷机很麻烦
0o0O0o0O0o
2022-03-23 20:55:01 +08:00
> 如何询问卖家,哪种二手手机才是我需要的
在这里挑设备
https://developers.google.com/android/images

> 如果(何)把自己编译出来的 img ,烧写进手机里
你完成了第一点,第二点的确是搜索一下就能知道。
amiwrong123
2022-03-23 21:11:01 +08:00
@0o0O0o0O0o #2
谢谢,所以我只能选择 Nexus and Pixel 了呗。网页里只有这两个
learningman
2022-03-23 21:12:07 +08:00
任意 lineage 的 offical 机型都可以吧,官方给的编译教程还挺友好的
0o0O0o0O0o
2022-03-23 21:15:58 +08:00
@amiwrong123 不是必须,但这样选择一般能轻松很多。

也可以和 #4 一样考虑别的开源分支
gam2046
2022-03-23 21:17:01 +08:00
想学习,淘宝上购买一些全志、瑞芯微的开发板,而不是二手手机。

像 lineageos 这类系统,是没有 vendor 代码。当然对 vndk 不感兴趣是不需要了解这部分,仅仅学习 framework 部分也足够。

不过开发板价格也就一两百,并不贵。

同理,如果只是想学习 framework ,虚拟机同样可以满足要求,AOSP 编译后直接直接上 AVD 。
WebKit
2022-03-23 21:22:37 +08:00
aosp 是没有驱动的。如果你只是要刷自己编译的 rom ,买个以前的 pixel 就可以
amiwrong123
2022-03-23 22:15:45 +08:00
@gam2046 #6
谢谢回答。但为什么推荐 开发板而不是手机,我有点没懂,因为我感觉不是手机的话,你就没测试一些 app 了,可能也没法去使用 audio 子系统了。(可能我的理解有点肤浅,见谅)

另外你说的 vndk ,我应该也是需要学习的,因为目前处于 车载安卓 framework 开发 行业。能先把 framework 学习明白了就很不错了。

不过好像虚拟机也是不错的选择。

目前对安卓 framework 的学习还是有点迷茫,对 AMS 、PMS 、WMS 之类的服务也没有接触到,所以我觉得 可以写个简单 app (比如我会使用到 activity )来从使用的方式来理解一下,也是找一下 自顶向下 理解的感觉。
Chowe
2022-03-23 22:58:12 +08:00
买个 rk 的开发板,除了通话功能外,其他你都能在上面使用,还有社区和文档,算是比较友好的
gam2046
2022-03-24 07:51:43 +08:00
开发板可以做几乎手机上所有的事情,可以正常安装应用以及使用 Android 全部功能,同时因为开发板资料齐全,即使要使用语音通话一类功能也可以通过相关模块支持。(当然啦,应该需要你自己实现 vendor

而手机,即使是小米对于开源支持还不错的,也只是开源了内核。从内核到实际能用的 ROM 中间还差了好几步。

即使是 OEM 厂商,几乎也没有厂家会直接从 AOSP 开始开发,工程量实在巨大,vendtor 的调试令人头秃。通常是 OEM 像 SoC 厂家直接购买一套母版 AOSP 代码,在此基础上开发。因此市面上部分手机从出厂到报废都没升级过 Android 大版本,就是厂家不愿意掏钱去向 SoC 厂家买新版本的代码。

所以罗永浩说国内手机厂商都是组装厂,并不是毫无依据的。
FranzKafka95
2022-03-24 08:08:20 +08:00
@gam2046 哥们有没有合适的开发板推荐,比如说如果我要开发 Camera/ Audio 相关的
gam2046
2022-03-24 08:24:01 +08:00
@FranzKafka95 #11 不太明白你的需求。如果是 framework 、vendor 相关音视频开发,非特殊需求的话,音频上没什么开发需求了(变声?大雾
摄像头方向的多用于自动美颜、拍月亮啥的。随便选择一款便宜的开发板即可(全志一般会更便宜些,厂家也不藏资料,RK 有些资料遮遮掩掩),让商家帮你配置好摄像头,并且确认能够提供摄像头驱动代码在内的相关资料,对性能不需要太多的要求,咸鱼上有 100 出头的。甚至模拟器也是可以完成任务的。

而同样的需求,在应用层也是可以完成的,甚至会更简单,毕竟应用层可以用标准的 c++(非要用 Java 当然也不是不可以)应用层开发就随便找个淘汰手机、模拟器都可以。

说实话,上来就整 vndk 那一套玩意,难度挺大的,通常还要伴随对内核的了解,至少我当初学的非常困难。许多需求其实在 framework 里也可以完成,只是不优雅而已。

我看小米、华为这些厂家对于摄像头的优化,极少部分功能是在驱动上完成的,几乎全在应用层实现。
yolee599
2022-03-24 08:46:00 +08:00
因为手机厂家会定制化开发一些东西,这些资料你是无法拿到的,还有厂家定制的源码不开源的,即使是不开源的你也无法拿到任何库供你使用。比如显示屏驱动,你你知道开背光用的哪个芯片管脚吗?还有手机厂家用的方案不是普通人能接触到的,比如高通,手机厂家想要获取技术支持要和签 NDA 协议,交几百万的钱才行,资料不可能流出来了,泄密了要赔钱的。

而开发板专门用于开发的,商家会给你提供原理图和 SDK ,用的是比较通用的方案,资料的公开性也更高一点。
zinwalin
2022-03-24 13:30:19 +08:00
建议用真机, 我用的是 Pixel 3 , 闲鱼上有那种屏幕有小部分破碎的机器,300 多块钱,用来学习 AOSP 源码很方便。

编译的机器配置要求挺高,我用的是 AMD 5950x , 应该是家用机比较快的选择,全新编译大概是 40 分钟左右,小修改编译大概是 3 分钟左右。SSD 建议用 980 Pro 这类高速硬盘,内存频率也可以适当提高。

系统方面,我只推荐用 Ubuntu, 比较好的选择是 Ubuntu 20.04 , 可以用 Desktop 或 Server 版本,看你的需求,学习的话,还是 Desktop 版本方便一些。
zinwalin
2022-03-24 13:31:31 +08:00
@WebKit 是的。买谷歌的亲儿子,驱动问题很好解决,有专门的下载链接,下载后在 aosp 的根目录下执行.sh 的脚本就行。
debuggeeker
2022-03-24 15:02:00 +08:00
这种情况下最好就是 nexus 或者 pixel ,下 aosp ,官方提供对应型号的驱动包,一起编译,得到 img 之后,回到 fastboot ,刷 img 就行了。编译的时候记得编译 arm 的。如果是编译虚拟机跑的模拟器就是 x86 就行了。
zhongchaowade
2022-03-24 15:32:50 +08:00
rk3399 性能真的不错,性价比很高
@FranzKafka95
lee1997
2022-03-24 18:52:56 +08:00
@zinwalin 请问你的 5950x 花 40 分钟是编译 Android 12 吗
zinwalin
2022-03-24 21:42:50 +08:00
@lee1997 Android 10, Android 10 Go
StrorageBox
2022-03-24 22:13:49 +08:00
如何自己编译一个 rom?

你需要准备
1. 类 unix 系统的主机(作为编译服务器,推荐 ubuntu)。
2. 一部已经被支持 LineageOS 的手机,相对于 google 亲儿子,这种也许更便宜(不过坑也更多,上面有人说的 pixel3 是个好主意)。
3. 可能需要一部能解锁 bootloader 、fastboot 的 win pc 。

编译 rom
针对你手机不同的支持,可以选择不同 asop 分支的代码,在此就以 LineageOS 的源码为例
1. 在编译服务器中,使用 repo 来初始化 asop 仓库。repo 是 Android 中专门管理多组 git 的工具,很方便。
2. 同样还是使用 repo ,切换成指定分支,如 stage 等
3. lunch 指定不同的编译架构,因为编译服务器的架构必定与手机的架构不同,这里使用要制定交叉编译的具体版本和一些其他参数
4. make

如果都齐备了,开始
1. 首先将你的手机解锁,刷入第三方 Recovery ,推荐 TWRP 。
2. 然后就可以刷入编译好的 rom 了。

如上只是粗略的步骤,里面还有不少坑,比如 mac 编译的问题,等等。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842458

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX