移植 AOSP 的必要条件都有哪些?

2017-03-27 05:30:15 +08:00
 phantastar
最近被华为 mate8 系统上的各种不便搞得头大,遂决定直接移植 aosp 到手机上。
看了 aosp 官网和 XDA university 的介绍,似乎都没有给出 Nexus 设备以外的详细移植介绍。
所以小弟在这里想麻烦各位 V 友给予一些提示,小弟初次接触 Android 移植,还请各位大大给予一条明路:
1.aosp 移植方面有没有详细教程,应该去哪里寻找?(这个有的话小弟就可以自己去琢磨了)
2.aosp 移植的必要前提有哪些?(官网的 preparation 步骤已经完成)
3.只有 Android6.0 的 kernel 源码,可以移植 Android7.1 吗?(华为官方只开放了 mate8 Android6.0 的 kernel 源代码,目前 mate8 最高可以升级至官方 Android7.0)
4.华为官方的 kernel 源码应该怎样利用以结合 aosp ?
5.如果 mate8 因 kernel 限制而只能移植 Android6.0 aosp ,那么 HTC one M7 这类官方停更机型为什么可以打破限制,出现第三方的最新版本系统 ROM ?
28057 次点击
所在节点    Android
109 条回复
RobertYang
2017-03-27 15:05:52 +08:00
@besto 怎么不能,而且还是用的高通 llvm ,跑的还慢
besto
2017-03-27 15:11:57 +08:00
@phantastar
第一步没有任何难度,拿到 AOSP 之后,先编译那个能在模拟器上跑的,检查 android 的编译环境,该装的装好,内存不够, jack server 大小调调好。先保证默认那个能在模拟器上跑的能搞起来。
第二步就比较麻烦了,假设没有 kernel 和任何厂家 native 的代码,那么最好能拿到 kernel image+dtb 的组合,能 root 现有机器,把所有的 binary 都拿出来,做的好的厂家,所有自己的东西会放 /vendor ,不好的,随便放,那就麻烦了。不管怎么样, hal 层的 so 必须得有尤其是 gralloc ,另外请分析一下 init.xxxx.rc ,看看里面有没有什么必须要启动的 service ,一并移植了。
第三步,是如何烧进去,自己查教程。。。注意分区表

以上只能说有可能起来, wifi/bt 很可能不可用(这些说不定有 firmware 啥的),如果有 key 签名啥的,很可能就是起不来的。
besto
2017-03-27 15:15:11 +08:00
@RobertYang 32 核 E5-2450 +48G 内存,全 SSD ,编译一遍用时也得 40 分钟,你确定是原始 Android ,干净的还没有 ccache ?
RobertYang
2017-03-27 15:21:22 +08:00
@besto make clean 之后 2 小时 12 分钟, lineageos cm14.1 ,可能没清 ccache ,晚上我全清了再试下咯
xingda920813
2017-03-27 15:26:27 +08:00
@kmahyyg

CyanogenMod, LineageOS 某一款设备的维护者是怎么制作或取得 device, vendor 和 kernel 的?

换句话说, 如果一款设备比较冷门, Github 上搜不到(也没有维护者), 我怎么自己制作 device 和 vendor?
xingda920813
2017-03-27 15:28:37 +08:00
@besto

第二步有什么教程或参考资料没? 感觉涉及到厂商的东西很不好取得.

以前 CyanogenMod 的 Wiki 上写的也不是很详细.
besto
2017-03-27 15:29:31 +08:00
@RobertYang 我只能说你得笔记本很强大 :-) 当然系统里可能有些精简。 ccache 倒是不会节约太多时间的。
RobertYang
2017-03-27 15:32:04 +08:00
@besto i7 6700HQ 在 Win 下面开的 Ubuntu 虚拟机,给分了 8G 内存过去,当然是在 SSD 下面,没你说的那么夸张
besto
2017-03-27 15:41:35 +08:00
@xingda920813 并没有,因为懂这个的,基本都是做 rom 的,或是 vendor 自己的人。
phantastar
2017-03-27 16:04:32 +08:00
@besto 这位先生不知道能不能微信或者 telegram 与你联系,您指出了大致方向,不过我觉得有些细碎的东西可能还要与你后续联系。
我微信:jack6551
Telegram:https://t.me/androidopensourceproject
群主是我
CuminLo
2017-03-27 16:13:53 +08:00
赶紧收藏。
一直想自己移植,但是技术太差。
希望群主能出了教程之类的,让我们小白也搞搞其他机器的移植。
honeycomb
2017-03-27 16:14:22 +08:00
@besto 4.3 正式发布的时候,为了开当时还只是隐藏着的 appops 编译过, 4G 内存的虚拟机还勉强够用。
besto
2017-03-27 16:15:38 +08:00
@honeycomb 名字很有个性。
besto
2017-03-27 16:16:50 +08:00
@phantastar 你可以继续提问,聊天工具上讲实话很难说清楚。说实话坑非常之多,并不是非常推荐自己移植这个。
uleh
2017-03-27 16:23:43 +08:00
1. 移植驱动
2. 根据硬件不同,部分 HAL 可能需要改
3. 1 和 2 搞定,基本就 OK 了。 Framework 再往上可能会有点小问题,但应该不会很多
honeycomb
2017-03-27 16:51:21 +08:00
@besto 注册的时候弄错了,原本想用 Honeypot 。
kmahyyg
2017-03-27 17:23:04 +08:00
@besto 膜拜大神

@xingda920813 vendor 的话有个专门的 extract-files.sh 可以提取, tree 来自于 kernel+driver ,这个就只能借助官方开源的部分来自己改。

自己在 16G ram +300gb ssd 的 linode 跑过 rr , ccache 100g , e3-1275 v3 *8 ,耗时 1.5h
kmahyyg
2017-03-27 17:26:31 +08:00
@besto 搭车问个问题,按照 RR 和 Lineageos+aosp 的 wiki 部署安装编译环境,然后编译 RR 的官方支持机型,私有库齐全,最终提示 build successfully ,但是下载回来的 zip 包里的 system.new.dat 是坏的,这个问题在哪里?

我的编译环境安装脚本:(newbie) https://bitbucket.org/kmahyyg/android-build-env
phantastar
2017-03-27 17:39:17 +08:00
@besto 好的感谢,我的硬盘被 repo 同步的东西塞满了,这月末薪水下来换上硬盘就干。到时候还要麻烦先生您予以指导。
phantastar
2017-03-27 17:41:06 +08:00
@uleh 嗯嗯感谢,我暂时没有了硬盘空间,这段时间要睡饱饱,等待月末搞起😆

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

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

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

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

© 2021 V2EX