这问题实在太大了,就标题提出的问题泛泛而谈吧。总的来说,ROM 移植通常首先要看设备硬件的相似度;其次是计划要移植哪些部分;最后就是要有一颗机不变砖誓不休的决心。

不建议移植的几种情况:不同厂商

不同主板

隔代设备

与以上相反的情况皆可一试,可以通过掷骰子估计成功率。针对题主的具体问题,我想说大概没有人会移植 Nexus 系列的手机系统,因为系统就是 AOSP + Gapps 嘛,前者源代码是公开的,直接编译就行,要什么移植...

既然要移植,也就意味着你不想从源代码编译,你手头只有移植源的 ROM 文件以及移植目标的内核源代码(MIUI 及寨厂设备除外)。ROM

一般由内核与系统镜像组成。移植内核需要花费大量的时间,并且不是懂 Java 就能搞定的,必须精通 C

并了解内核驱动的实现。所以如无必要,请直接采用官方内核。我所知道的社区内核移植,通常是将 OEM

发布的硬件驱动移植到新版本的内核中去。如果有现成的相同或相近设备的内核源代码,你会有种买彩票中奖的感觉。移植的重点在于内核基址的修改,CPU

频率的调整,主板资源的配置(内存池、显示设备、摄像头、传感器、闪灯等)以及各附属硬件的驱动等。内核的基础部分(文件系统,android

相关驱动等)都是通用的,不需要太多修改。如果你想挑战自我且不畏失败,那就给自己一次挑战内核的机会。:P

内核镜像除了内核本身外还有 init 的启动文件,即 ramdisk(boot.img 中)。如果要移植,那这个包中的文件你必须仔细阅读并修改。否则在 adb 启动之前你很难知道系统卡屏错误出自哪里。

好了,如果你直接使用官方或第三方内核,系统镜像移植中需要注意的是与硬件相关的部分。这部分一般包括

HAL(camera/sensor/light/hwcomposer/power 等)与私有驱动库(vendor 与 EGL 中的所有私有驱动及 OMX

驱动库),它们与内核是配套使用的。另外就是应用程序所依赖的 frameworks 中修改。这部分需要对反编译 jar/apk

程序有所了解,通常会有教程之类(比较烦琐)。你不必客气,如狼似虎地学习吧,少年!具体修改因 ROM 而异。最后再确认下 root 权限,/system/build.prop

小修小补,再换个开机动画调个铃声加个个性签名之类,不在话下。

综上,希望你能如愿以偿地卡在开机第一屏。Lol