1 mengzx 2017-03-27 07:56:15 +08:00 via Android 可以看看 aokp 这些 rom 使用,如果一定要自己编译我也不知道,就是感觉编译这些是不是太费时间了 |
![]() | 2 Shura 2017-03-27 08:03:48 +08:00 via Android 麒麟 soc 的手机最好就不要折腾了,官方开源不完整,很难移植的。至于 m7 因为 soc 是骁龙 600 ,相同 soc 的很容易移植的。 |
3 nxn1987 2017-03-27 08:13:39 +08:00 ![]() 移植最大的问题是驱动,官方开源 kernel 但是不开源驱动的,所以基本上无解。 大厂的 SoC 开源相对规范一些,再加上民间大神多,很多坑都有人解决,所以第三方 ROM 比较活跃。 |
![]() | 4 8rB61FLBPVSxW2C8 2017-03-27 08:18:10 +08:00 via Android 麒麟 CPU ,不用考虑拉,外部连分泄露的代码都没。 HAL 都层搞不了 |
5 paranoiagu 2017-03-27 08:20:12 +08:00 via Android 最大的问题是麒麟似乎没人搞,资料也少。 华为官方有 7.1ROM 吗?有的话,直接用华为自己的内核试试看。 总的来说,不简单。 |
6 phantastar OP @mengzx 嗯嗯谢谢 |
![]() | 7 crysislinux 2017-03-27 09:31:59 +08:00 不如换个手机算了。。 |
8 phantastar OP @paranoiagu 上面有人提到说驱动不开源。请问按您的意思,是不是驱动可以用华为现成的(或者说制作不含驱动的 rom ) |
9 phantastar OP @nxn1987 我现在在想一个问题:有没有办法将华为官方的驱动合并入 aosp ,还望您给出一些意见 |
10 phantastar OP @Shura 嗯嗯我在考虑联系官方 |
11 phantastar OP @HackerOO7 简直要哭了 |
12 phantastar OP @crysislinux 其实这个问题有点像是:如何为一部国产手机制作 rom (又名:菜鸟的成长)(括弧笑) |
13 gam2046 2017-03-27 09:45:06 +08:00 个人感觉比较吭的 都是和驱动相关的,比如第三方 ROM 里 人民群众喜闻乐见的相机不能用啦, WiFi 不正常啦之类的。你这直接说不含驱动的 ROM ,那就没啥意义了,手机上所有硬件都不能用,那为啥不去买个功能机算了。至于驱动从官方其他系统系统中移植的可行性不太懂,但是参考 Windows 的情况,可能会出现与系统不适配的情况(类比, XP 的显卡驱动丢到 Win10 上 很可能也是用不了的)。 综上,楼主的华为可能成为学费机,比较切实可行的方案时,出掉手中的华为回口血,然后重新买个自己喜欢的(比如说亲儿子系列) |
![]() | 14 badec 2017-03-27 09:51:29 +08:00 华为 emui5 已经很贴近原生了,有什么真的很不便的问题吗? lz 的描述只有换一部手机才能解决 |
15 qdk0901 2017-03-27 09:56:18 +08:00 kernel 不升级,一些驱动能重用。 但是原有的 hal 库在新版本上就有可能用不了了 |
16 besto 2017-03-27 10:21:54 +08:00 一台好电脑,最好装 Linux 。 没有底层的库还是不要指望了。 |
17 phantastar OP @gam2046 嗯嗯感谢,我想完美移植,看来难度不小 |
![]() | 18 ovear 2017-03-27 10:30:05 +08:00 via Android 小版本还好,大版本的系统架构可能都不一样,驱动也有很大几率不通用。)比如说 2.3 到 4.0 的触摸屏驱动,就是完全不同的架构。 更大的问题是,如果驱动是在内核里面的。。。而那个内核又不支持你所需的版本。。那就基本残废了 |
![]() | 19 d7101120120 2017-03-27 10:34:34 +08:00 via Android 如果是不喜欢 emui 的图标之类的可以装一个 nova launcher |
![]() | 20 mozartgho 2017-03-27 11:20:22 +08:00 64 位 Linux , 50G 空闲硬盘是必须的。可以看 CM 的 wiki ,另外需要设备厂商开放 Device Tree ,否则没法适配 |
21 jyf 2017-03-27 11:24:25 +08:00 @phantastar 应该可以的 就我了解 ubuntu phone 底层就用的 android 的那一套 但是内核的模块要直接用估计做的工作要多许多 |
![]() | 23 shanjinwei 2017-03-27 12:24:19 +08:00 via Android 这个的工作量相当于重新开发 |
![]() | 24 Cabana 2017-03-27 12:39:24 +08:00 via Android 首先你得找一台编译服务器 |
![]() | 25 kmahyyg 2017-03-27 12:41:50 +08:00 via Android device tree + vendor files ,基本就这两个 github 搜索 android_device_厂商_设备代号,可以有 device tree 。 The muppets 里集合了大多数厂商的 vendor 文件,仍在 github. |
![]() | 26 mozartgho 2017-03-27 12:44:52 +08:00 |
27 phantastar OP @ovear 嗯嗯,我私信了一位 XDA 的华为 ROM 作者,希望能得到一些帮助 |
28 phantastar OP @d7101120120 我想完全照着 pixel 的 ROM 来移植,完完全全的原生安卓那种感觉,目前还不考虑换设备这个问题,我想费费脑筋去解决这个的适配问题 |
29 phantastar OP @mozartgho 嗯嗯我去 CM 那边瞅瞅 |
30 phantastar OP @besto 我完成 repo sync 后大概占用 50+G ,我在考虑顺便换硬盘了 |
31 phantastar OP @shanjinwei 感谢,我可能有点初生牛犊不怕虎,想下手试试 |
32 phantastar OP @Cabana 笔记本 i5 H 版也可以做 Jack 服务器的吧,谷歌官方对服务器的事儿简直就是一笔带过,我要哭了 |
33 phantastar OP @kmahyyg 嗯嗯我查了一下这个 muppets ,很厉害。但是没有 mate8 ,我用您说的语法查询找到了 mate8 国际版的 vendor 和 kernel 。我在想是否有方法能自己去扒取那些没有现成资料的设备的 tree 还有 vendorfiles |
34 phantastar OP @mozartgho 本来想买 240G SSD 的,你这么说的话这下完蛋了 |
35 phantastar OP @badec 嗯,其实我就是自己矫情想搞一搞事情,钻研学习一下 |
36 besto 2017-03-27 14:14:55 +08:00 @phantastar 至少编译 4 小时。另外 4G 内存基本一定会有 OOM 的问题。 |
37 phantastar OP @besto 嗯嗯,编译之前请问都存在哪些必要步骤?似乎网上没有太详细的教程 |
38 RobertYang 2017-03-27 14:58:03 +08:00 via Android @mozartgho 一台机器一个版本 200GB 可用空间完全足够 |
39 RobertYang 2017-03-27 14:59:56 +08:00 via Android @besto 4 小时够编译两台了,还是笔记本。。。 |
40 besto 2017-03-27 15:03:30 +08:00 @RobertYang 最新 Android ,用笔记本 2 小时能编完? |
41 RobertYang 2017-03-27 15:05:52 +08:00 via Android @besto 怎么不能,而且还是用的高通 llvm ,跑的还慢 |
42 besto 2017-03-27 15:11:57 +08:00 ![]() @phantastar 第一步没有任何难度,拿到 AOSP 之后,先编译那个能在模拟器上跑的,检查 android 的编译环境,该装的装好,内存不够, jack server 大小调调好。先保证默认那个能在模拟器上跑的能搞起来。 第二步就比较麻烦了,假设没有 kernel 和任何厂家 native 的代码,那么最好能拿到 kernel image+dtb 的组合,能 root 现有机器,把所有的 binary 都拿出来,做的好的厂家,所有自己的东西会放 /vendor ,不好的,随便放,那就麻烦了。不管怎么样, hal 层的 so 必须得有尤其是 grallc ,另外请分析一下 init.xxxx.rc ,看看里面有没有什么必须要启动的 service ,一并移植了。 第三步,是如何烧进去,自己查教程。。。注意分区表 以上只能说有可能起来, wifi/bt 很可能不可用(这些说不定有 firmware 啥的),如果有 key 签名啥的,很可能就是起不来的。 |
43 besto 2017-03-27 15:15:11 +08:00 @RobertYang 32 核 E5-2450 +48G 内存,全 SSD ,编译一遍用时也得 40 分钟,你确定是原始 Android ,干净的还没有 ccache ? |
44 RobertYang 2017-03-27 15:21:22 +08:00 via Android @besto make clean 之后 2 小时 12 分钟, lineageos cm14.1 ,可能没清 ccache ,晚上我全清了再试下咯 |
45 xingda920813 2017-03-27 15:26:27 +08:00 @kmahyyg CyanogenMod, LineageOS 某一款设备的维护者是怎么制作或取得 device, vendor 和 kernel 的? 换句话说, 如果一款设备比较冷门, Github 上搜不到(也没有维护者), 我怎么自己制作 device 和 vendor? |
46 xingda920813 2017-03-27 15:28:37 +08:00 |
47 besto 2017-03-27 15:29:31 +08:00 @RobertYang 我只能说你得笔记本很强大 :-) 当然系统里可能有些精简。 ccache 倒是不会节约太多时间的。 |
48 RobertYang 2017-03-27 15:32:04 +08:00 via Android @besto i7 6700HQ 在 Win 下面开的 Ubuntu 虚拟机,给分了 8G 内存过去,当然是在 SSD 下面,没你说的那么夸张 |
49 besto 2017-03-27 15:41:35 +08:00 ![]() @xingda920813 并没有,因为懂这个的,基本都是做 rom 的,或是 vendor 自己的人。 |
50 phantastar OP @besto 这位先生不知道能不能微信或者 telegram 与你联系,您指出了大致方向,不过我觉得有些细碎的东西可能还要与你后续联系。 我微信:jack6551 Telegram:https://t.me/androidopensourceproject 群主是我 |
![]() | 51 CuminLo 2017-03-27 16:13:53 +08:00 赶紧收藏。 一直想自己移植,但是技术太差。 希望群主能出了教程之类的,让我们小白也搞搞其他机器的移植。 |
52 honeycomb 2017-03-27 16:14:22 +08:00 via Android @besto 4.3 正式发布的时候,为了开当时还只是隐藏着的 appops 编译过, 4G 内存的虚拟机还勉强够用。 |
54 besto 2017-03-27 16:16:50 +08:00 @phantastar 你可以继续提问,聊天工具上讲实话很难说清楚。说实话坑非常之多,并不是非常推荐自己移植这个。 |
![]() | 55 uleh 2017-03-27 16:23:43 +08:00 1. 移植驱动 2. 根据硬件不同,部分 HAL 可能需要改 3. 1 和 2 搞定,基本就 OK 了。 Framework 再往上可能会有点小问题,但应该不会很多 |
![]() | 57 kmahyyg 2017-03-27 17:23:04 +08:00 via Android ![]() @besto 膜拜大神 @xingda920813 vendor 的话有个专门的 extract-files.sh 可以提取, tree 来自于 kernel+driver ,这个就只能借助官方开源的部分来自己改。 自己在 16G ram +300gb ssd 的 linode 跑过 rr , ccache 100g , e3-1275 v3 *8 ,耗时 1.5h |
![]() | 58 kmahyyg 2017-03-27 17:26:31 +08:00 via Android @besto 搭车问个问题,按照 RR 和 Lineageos+aosp 的 wiki 部署安装编译环境,然后编译 RR 的官方支持机型,私有库齐全,最终提示 build successfully ,但是下载回来的 zip 包里的 system.new.dat 是坏的,这个问题在哪里? 我的编译环境安装脚本:(newbie) https://bitbucket.org/kmahyyg/android-build-env |
59 phantastar OP @besto 好的感谢,我的硬盘被 repo 同步的东西塞满了,这月末薪水下来换上硬盘就干。到时候还要麻烦先生您予以指导。 |
60 phantastar OP @uleh 嗯嗯感谢,我暂时没有了硬盘空间,这段时间要睡饱饱,等待月末搞起 |
61 Inkroot 2017-03-27 18:26:59 +08:00 赶紧收藏,自己也想移植 Rom 来着。。。 |
62 paranoiagu 2017-03-27 19:10:44 +08:00 via Android @phantastar 其实我也不会。驱动肯定是在内核中的。总之我觉得几乎不可能。需要了解的内容太多了。 |
63 paranoiagu 2017-03-27 19:12:22 +08:00 via Android @mozartgho 不需要 500g , 120g 妥妥的够了。又不是要编译几十个机型。 |
![]() | 64 feikaras 2017-03-27 20:26:56 +08:00 三个字总结,买手机。 |
![]() | 65 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 还是一句话坑多,不是靠这个吃饭的,感觉没必要 |
![]() | 66 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 。 |
![]() | 67 Flygoat 2017-03-27 20:42:43 +08:00 关于 Kernel 的话 Android 版本间的 Fallback 变化其实不大,照着官方的 Changelist 打打 Patch 就好了。 |
![]() | 68 Flygoat 2017-03-27 20:53:08 +08:00 另外找了一下麒麟 950 和 balong720 baseband 连公开的 datasheet 都没有。这个难度。。。。。 |
69 phantastar OP @Flygoat 嗯嗯感谢,我还没有放弃。请问您的意思是不是说 aosp 和华为官方 vendor 的库对接需要手动调整? |
![]() | 70 Flygoat 2017-03-27 21:10:50 +08:00 @phantastar #69 不是手动调整的问题,是从头开始写一个 HAL 层 |
71 phantastar OP @Flygoat HAL 层重写可以使用 Python 吗?还是强制 Java or 汇编? |
72 phantastar OP @Flygoat 逆向工程是不是意味着要去读机器码? |
![]() | 73 Flygoat 2017-03-27 21:16:57 +08:00 @phantastar #72 意味着很可能需要拆机器找引脚定义读 SPI 。最轻的情况是要去逆向原机器里的二进制。读机器是肯定的。 |
74 fashioncj 2017-03-27 21:21:46 +08:00 ![]() 补充几点, jack-server 4G 内存或者 8G 内存基本都会 oom ,需要调整最大 heap ,最好用全局变量。 默认编译线程是核心数 X2 最好。 repo 下载的时候可以直接取出,不要获取之前的变化。能大幅度减少空间。 vendor 的话用已有固件或者手机, extract 脚本运行就好。 |
![]() | 75 kokutou 2017-03-27 21:33:05 +08:00 |
![]() | 76 Flygoat 2017-03-27 21:42:16 +08:00 @phantastar #71 Java 混 C 。。。。。当然估计手机里放个 Python 环境也不是不可以但是怎么 Include 这些库。。。 |
77 phantastar OP @fashioncj 感谢, repo 不要获取之前的变化是不是说 repo sync 加--current-branch 或者应该是什么? extract 脚本是不是要自己写 |
78 phantastar OP @Flygoat 那我去搞定 Java 还有 C 好了 |
79 phantastar OP @kokutou 嗯嗯好哒,我去作者咨询一下,十分感谢! |
![]() | 80 Flygoat 2017-03-27 22:12:15 +08:00 ![]() @phantastar #77 直接 repo init 的时候 -b 就好了,刚刚看到有人作了不完美的 CM13 ,应该难度会小很多,主要问题会集中在 RIL 。 |
![]() | 82 kmahyyg 2017-03-27 22:35:42 +08:00 via Android @phantastar repo sync 一般默认就行,偶尔需要--no-clone-bundle |
83 phantastar OP @Flygoat 嗯嗯十分感谢,我心里有点踏实了,后面如果遇到一些零碎问题麻烦还请您多指教 |
84 phantastar OP @kmahyyg 嗯嗯谢谢, clone bundle 是做什么的我不知道,我最近一次 repo 加入了这个命令。另外大家可能还在睡觉,上面还有一位叫 besto 的先生也很专业,你可以看看他是否在线 |
85 besto 2017-03-28 10:29:54 +08:00 ![]() @phantastar Android 标准 hal 层必须是 C/C++,广义 hal 层可以用任何可以跑的语言,前提是搞的定权限问题。 |
86 besto 2017-03-28 10:33:22 +08:00 ![]() @phantastar AOSP 是开源的。我们的一切假定前提是,没有任何 vendor 的支持(有 datasheet 也没啥意义),那么只要保证 vendor 没有过度修改 AOSP 内和 HAL 对接的相关 code 。 |
87 fashioncj 2017-03-28 10:38:24 +08:00 ![]() |
89 phantastar OP @besto #85 嗯嗯感谢,权限问题如果解决起来比较难的话,我还是去熟悉一下 C/C++比较明智。 |
90 phantastar OP @besto #86 怨我之前 AOSP 官网看得一知半解,请问您的意思是不是 AOSP 交给 vendor 后他们可以修改和 HAL 对接的相关 code 以适配自己的硬件? |
92 phantastar OP @fashioncj 十分感谢,我去找一找这个文件 |
93 phantastar OP 刚刚下单了 intel 540s M.2 SSD ,到货后即刻重装 Ubuntu !(我是英特尔 SSD 的死忠粉丝,之前买到一块服务器拆下来的 Intel S3500 480G ,一查居然还有 3 年质保) |
94 besto 2017-03-28 11:59:44 +08:00 @kmahyyg 我这边 vendor 还是可以产生普通的 system.img(Android 7.0) 并没有在 AOSP 里做什么修改,只增加了一些编译脚本和 mk 。这块我不是非常了解,帮你问一下吧。 |
95 besto 2017-03-28 12:06:10 +08:00 ![]() @phantastar Android 的 code 相对混乱。 Android 其实分为 2 部分, AOSP/GMS 还有 partner 可以拿到的 developer branch 。不和 Google 签订协议,也可以拿到 AOSP 的 code ,你想改啥就该啥。如果和 Google 签订 AOSP 的协议,需要过 CTS 认证(理论上不通过 CTS 认证,并且是 Goolgle 认为你过了,不可以称自己为 Android 设备),严格意义上,不可以改任何 google 的 code ,即使是 BUG ,但厂家仍旧可以通过在编译前打 patch 。再进一步可以签订 GMS 的协议,附加在 AOSP 的协议之上,这个包主要会有 Google Play 等那一堆东西,同时需要过 GTS 的测试。 |
96 besto 2017-03-28 12:14:41 +08:00 ![]() @kmahyyg 做 OTA 的同事告诉我,默认就有 system.img 那个 system.new.dat 是 block ota 的东西,要么你再看看? |
97 phantastar OP @besto #95 嗯嗯感谢。我有一问题不解,根据上面诸多内容的汇总,我现在知道移植 AOSP 需要做至少两个工作: 1.提取 vendor 目录中的驱动库。 2.重写 HAL 层。那问题来了,重写 HAL 层所需的软件工具是什么?麒麟官方的 SDK 吗? |
98 phantastar OP @besto 另外: 1.华为官方开源的安卓 6.0kernel 是不是需要改写(需要什么样的工具)?因为我想适配安卓 7.1 。 2.移植驱动的话,又该用什么工具呢? |
99 besto 2017-03-28 15:17:58 +08:00 ![]() @phantastar 说句不太好听的啊,但凡需要重写 HAL 的,绝对搞不定。所以,官方支持到哪个版本,就扒哪个版本的库,可以碰碰运气能不能用。 |