目前手里有书《深入理解 Android 内核设计思想》《深入理解 Android 卷 I 》,我可以按照书上的步骤编译出 img 来。这两本书里都有介绍怎么编译 Android 源码。
但之前确实没有烧写过手机,只是之前买过小米手机(忘了什么型号,这手机还掉了),然后升级过 ROM ,我记得步骤是先解锁,然后用 论坛上的方法来 线刷。
第一个问题,我是从淘宝上随便买一个二手安卓手机就可以吗(如何询问卖家,哪种二手手机才是我需要的 可以烧写的手机)?是不是最好买小米的,因为小米的可以解锁
如果把自己编译出来的 img ,烧写进手机里,我可以之后自己再去百度。不过大佬们也可以推荐点 博客或者教程。
搞这个事的目的,主要是为了研究 Android 源码,光看书总觉得少了点什么。理论上,我可以加打印日志,或者修改源码了。
1
Donahue 2022-03-23 20:45:08 +08:00
研究源码可能虚拟机也可以?不懂但是感觉物理机刷机很麻烦
|
2
0o0O0o0O0o 2022-03-23 20:55:01 +08:00 1
> 如何询问卖家,哪种二手手机才是我需要的
在这里挑设备 https://developers.google.com/android/images > 如果(何)把自己编译出来的 img ,烧写进手机里 你完成了第一点,第二点的确是搜索一下就能知道。 |
3
amiwrong123 OP @0o0O0o0O0o #2
谢谢,所以我只能选择 Nexus and Pixel 了呗。网页里只有这两个 |
4
learningman 2022-03-23 21:12:07 +08:00 1
任意 lineage 的 offical 机型都可以吧,官方给的编译教程还挺友好的
|
5
0o0O0o0O0o 2022-03-23 21:15:58 +08:00 1
|
6
gam2046 2022-03-23 21:17:01 +08:00 1
想学习,淘宝上购买一些全志、瑞芯微的开发板,而不是二手手机。
像 lineageos 这类系统,是没有 vendor 代码。当然对 vndk 不感兴趣是不需要了解这部分,仅仅学习 framework 部分也足够。 不过开发板价格也就一两百,并不贵。 同理,如果只是想学习 framework ,虚拟机同样可以满足要求,AOSP 编译后直接直接上 AVD 。 |
7
WebKit 2022-03-23 21:22:37 +08:00 via Android
aosp 是没有驱动的。如果你只是要刷自己编译的 rom ,买个以前的 pixel 就可以
|
8
amiwrong123 OP @gam2046 #6
谢谢回答。但为什么推荐 开发板而不是手机,我有点没懂,因为我感觉不是手机的话,你就没测试一些 app 了,可能也没法去使用 audio 子系统了。(可能我的理解有点肤浅,见谅) 另外你说的 vndk ,我应该也是需要学习的,因为目前处于 车载安卓 framework 开发 行业。能先把 framework 学习明白了就很不错了。 不过好像虚拟机也是不错的选择。 目前对安卓 framework 的学习还是有点迷茫,对 AMS 、PMS 、WMS 之类的服务也没有接触到,所以我觉得 可以写个简单 app (比如我会使用到 activity )来从使用的方式来理解一下,也是找一下 自顶向下 理解的感觉。 |
9
Chowe 2022-03-23 22:58:12 +08:00 via iPhone 1
买个 rk 的开发板,除了通话功能外,其他你都能在上面使用,还有社区和文档,算是比较友好的
|
10
gam2046 2022-03-24 07:51:43 +08:00 3
开发板可以做几乎手机上所有的事情,可以正常安装应用以及使用 Android 全部功能,同时因为开发板资料齐全,即使要使用语音通话一类功能也可以通过相关模块支持。(当然啦,应该需要你自己实现 vendor
而手机,即使是小米对于开源支持还不错的,也只是开源了内核。从内核到实际能用的 ROM 中间还差了好几步。 即使是 OEM 厂商,几乎也没有厂家会直接从 AOSP 开始开发,工程量实在巨大,vendtor 的调试令人头秃。通常是 OEM 像 SoC 厂家直接购买一套母版 AOSP 代码,在此基础上开发。因此市面上部分手机从出厂到报废都没升级过 Android 大版本,就是厂家不愿意掏钱去向 SoC 厂家买新版本的代码。 所以罗永浩说国内手机厂商都是组装厂,并不是毫无依据的。 |
11
FranzKafka95 2022-03-24 08:08:20 +08:00 via Android
@gam2046 哥们有没有合适的开发板推荐,比如说如果我要开发 Camera/ Audio 相关的
|
12
gam2046 2022-03-24 08:24:01 +08:00
@FranzKafka95 #11 不太明白你的需求。如果是 framework 、vendor 相关音视频开发,非特殊需求的话,音频上没什么开发需求了(变声?大雾
摄像头方向的多用于自动美颜、拍月亮啥的。随便选择一款便宜的开发板即可(全志一般会更便宜些,厂家也不藏资料,RK 有些资料遮遮掩掩),让商家帮你配置好摄像头,并且确认能够提供摄像头驱动代码在内的相关资料,对性能不需要太多的要求,咸鱼上有 100 出头的。甚至模拟器也是可以完成任务的。 而同样的需求,在应用层也是可以完成的,甚至会更简单,毕竟应用层可以用标准的 c++(非要用 Java 当然也不是不可以)应用层开发就随便找个淘汰手机、模拟器都可以。 说实话,上来就整 vndk 那一套玩意,难度挺大的,通常还要伴随对内核的了解,至少我当初学的非常困难。许多需求其实在 framework 里也可以完成,只是不优雅而已。 我看小米、华为这些厂家对于摄像头的优化,极少部分功能是在驱动上完成的,几乎全在应用层实现。 |
13
yolee599 2022-03-24 08:46:00 +08:00 via Android 1
因为手机厂家会定制化开发一些东西,这些资料你是无法拿到的,还有厂家定制的源码不开源的,即使是不开源的你也无法拿到任何库供你使用。比如显示屏驱动,你你知道开背光用的哪个芯片管脚吗?还有手机厂家用的方案不是普通人能接触到的,比如高通,手机厂家想要获取技术支持要和签 NDA 协议,交几百万的钱才行,资料不可能流出来了,泄密了要赔钱的。
而开发板专门用于开发的,商家会给你提供原理图和 SDK ,用的是比较通用的方案,资料的公开性也更高一点。 |
14
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 版本方便一些。 |
15
zinwalin 2022-03-24 13:31:31 +08:00
@WebKit 是的。买谷歌的亲儿子,驱动问题很好解决,有专门的下载链接,下载后在 aosp 的根目录下执行.sh 的脚本就行。
|
16
debuggeeker 2022-03-24 15:02:00 +08:00
这种情况下最好就是 nexus 或者 pixel ,下 aosp ,官方提供对应型号的驱动包,一起编译,得到 img 之后,回到 fastboot ,刷 img 就行了。编译的时候记得编译 arm 的。如果是编译虚拟机跑的模拟器就是 x86 就行了。
|
17
zhongchaowade 2022-03-24 15:32:50 +08:00
rk3399 性能真的不错,性价比很高
@FranzKafka95 |
20
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 编译的问题,等等。 |
21
shangyu7 2022-03-25 17:27:47 +08:00
这都要问,不建议继续搞下去
|
22
huruwo 2022-03-25 18:24:08 +08:00
纯净的 ubuntu 环境编译 ASOP 完成步骤
### 下载同步 repo 源码 #### 1.安装 repo repo:管理多个 git 项目的项目管理工具 ``` sudo apt install repo ``` #### 2.安装 curl curl:下载工具 ``` sudo apt-get install curl ``` #### 3.下载全局 repo 配置文件 参考 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ ``` mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo ``` 下载完成检测 ``` huruwo@ubuntu:~/bin$ ls repo ``` #### 4.设置更新镜像地址 ``` sudo gedit ~/.bashrc ``` 新增代码 ``` # repo export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' ``` 配置生效 ``` source ~/.bashrc ``` ![599c69079316046551daba98c6bfc61f.png](en-resource://database/1886:1) #### 5.配置 git config 信息 ``` git config --global user.email "[email protected]" git config --global user.name "huruwo" ``` #### 6.查询适配的系统版本 初始化 repo https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds ![deda6924d9dbfb70dcb2bd25548eda0f.png](en-resource://database/1888:1) 选择 android-10.0.0_r30 进行下载编译 ``` python3 ~/bin/repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r30 ``` 初始化仓库 不要很久 #### 7.同步代码 耗时最久 还容易失败的操作 `` python3 ~/bin/repo sync ``` ### 编译 #### 1.安装 open jdk ``` sudo apt install openjdk-8-jdk-headless ``` |
23
nicevar 2022-03-27 11:54:47 +08:00
楼主可能连 fastboot 这东西都还不知道,更不要说 EDL 了,手机不是随便就能刷 ROM 的,驱动、BL 解锁、校验这些东西都有影响,这些问题不解决,ROM 刷进去你也没法开机启动,你需要有一整套开发板还得配备资料齐全,从头开始学习,uboot/UEFI 之类的,再往前还得知道数电模电,坑很大,如果知识储备相差很远真不如在模拟器玩玩就好了。
|
24
SupperMary 2022-04-06 00:29:35 +08:00
楼上说的蛮全的。小小的给几个关键点
如果你不需要调试 WiFi ,蓝牙这些硬件,只是单纯的看 framework 的话,直接用虚拟机就可以。 如果你需要调试硬件,推荐 pixel 或者配套安卓源码的机子。 编译环境:Ubuntu ,CPU 频率尽量高,核数尽量多,最好使用固态来编译。 |