移植 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 ?
28071 次点击
所在节点    Android
109 条回复
Inkroot
2017-03-27 18:26:59 +08:00
赶紧收藏,自己也想移植 Rom 来着。。。
paranoiagu
2017-03-27 19:10:44 +08:00
@phantastar 其实我也不会。驱动肯定是在内核中的。总之我觉得几乎不可能。需要了解的内容太多了。
paranoiagu
2017-03-27 19:12:22 +08:00
@mozartgho 不需要 500g , 120g 妥妥的够了。又不是要编译几十个机型。
feikaras
2017-03-27 20:26:56 +08:00
三个字总结,买手机。
abmin521
2017-03-27 20:34:50 +08:00
我只知道最后一个 HTC 是大部分都开源 kernel 的

PS
根据维基上面说的 5.0/5.0.1/5.0.2(Lollipop)基于 Linux Kernel 3.4.0
但是 htc one x 用了 3.1 的 kernel 也用上了 Android5.1


还是一句话坑多,不是靠这个吃饭的,感觉没必要
Flygoat
2017-03-27 20:41:38 +08:00
解释一下,关于驱动部分, AOSP 也必须使用部分可以从 Stock ROM 提取出的闭源二进制驱动或 Firmware ,位于 AOSP 源码的 vendor 目录下。但大都以库的形式存在,比如 LibRIL.so 这些的。 HAL 层会引用这些库。但是这些库定义的东西目前除了逆向工程和部分厂商开放的文档( Qualcomm 把自家的 RIL 文档全部开放了, Github 里修改过的 kickstart , QCRIL 满天飞)之外没有办法获取。特别是针对这些小众 SoC 。所以,除非获得菊厂的支持,以一己之力搞这个,洗洗睡吧。我在有类似设备有 Qualcomm 文档的情况下花了快半年才给我的三星国内定制版平板上了 AOSP 。
Flygoat
2017-03-27 20:42:43 +08:00
关于 Kernel 的话 Android 版本间的 Fallback 变化其实不大,照着官方的 Changelist 打打 Patch 就好了。
Flygoat
2017-03-27 20:53:08 +08:00
另外找了一下麒麟 950 和 balong720 baseband 连公开的 datasheet 都没有。这个难度。。。。。
phantastar
2017-03-27 21:07:27 +08:00
@Flygoat 嗯嗯感谢,我还没有放弃。请问您的意思是不是说 aosp 和华为官方 vendor 的库对接需要手动调整?
Flygoat
2017-03-27 21:10:50 +08:00
@phantastar #69 不是手动调整的问题,是从头开始写一个 HAL 层
phantastar
2017-03-27 21:13:53 +08:00
@Flygoat HAL 层重写可以使用 Python 吗?还是强制 Java or 汇编?
phantastar
2017-03-27 21:14:38 +08:00
@Flygoat 逆向工程是不是意味着要去读机器码?
Flygoat
2017-03-27 21:16:57 +08:00
@phantastar #72 意味着很可能需要拆机器找引脚定义读 SPI 。最轻的情况是要去逆向原机器里的二进制。读机器是肯定的。
fashioncj
2017-03-27 21:21:46 +08:00
补充几点, jack-server 4G 内存或者 8G 内存基本都会 oom ,需要调整最大 heap ,最好用全局变量。
默认编译线程是核心数 X2 最好。
repo 下载的时候可以直接取出,不要获取之前的变化。能大幅度减少空间。
vendor 的话用已有固件或者手机, extract 脚本运行就好。
kokutou
2017-03-27 21:33:05 +08:00
Flygoat
2017-03-27 21:42:16 +08:00
@phantastar #71 Java 混 C 。。。。。当然估计手机里放个 Python 环境也不是不可以但是怎么 Include 这些库。。。
phantastar
2017-03-27 22:08:07 +08:00
@fashioncj 感谢, repo 不要获取之前的变化是不是说 repo sync 加--current-branch 或者应该是什么?
extract 脚本是不是要自己写😂
phantastar
2017-03-27 22:09:02 +08:00
@Flygoat 那我去搞定 Java 还有 C 好了😰
phantastar
2017-03-27 22:09:52 +08:00
@kokutou 嗯嗯好哒,我去作者咨询一下,十分感谢!
Flygoat
2017-03-27 22:12:15 +08:00
@phantastar #77
直接 repo init 的时候 -b 就好了,刚刚看到有人作了不完美的 CM13 ,应该难度会小很多,主要问题会集中在 RIL 。

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

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

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

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

© 2021 V2EX