当我们说「适配」的时候,我们做了什么

当我们说「适配」的时候,我们做了什么
0

#1

本文旨在尽可能通俗易懂地介绍开发者们「适配」一款新手机的工作流程。

1. 初探

嗯,我买到了部一加5。能解锁 bootloader 不?好的可以(不能解锁的就算了)

这部手机是骁龙 835 的。我查一下…哦,骁龙 835 的型号是 MSM8998

这手机的内核有开源吗?有!拉代码拉代码…(没有开源的话,只能用预编译内核了)

2. 先跑起来再说

先提一个概念。适配一款手机,需要编写一大堆编译配置文件,这些文件集中放到一个代码仓里就是我们说的「device 库」。

编写 device 是一个很复杂的过程,很多编译参数需要去考究去查。如果已经有现成的骁龙 835 的机型,大部分可以参考;如果没有,一般是参考同厂商前一代型号的 device。但仍然很多参数需要改。

这一步基本上就是写 device…尝试编译…炸了,改,编译…炸了,改,编译…好的终于编译完毕了(可能耗时一个星期)。

重启进 fastboot,刷镜像…炸了,卡厂商 LOGO…改,编译,刷,炸,改,编译,刷…好了,终于能看到开机动画了。

咦,一直是动画…adb logcat 看看是哪个部件炸了…改,编译,刷,炸…咦缺了些私有库。补,编译,炸,改…………………………

3. 修,修,修…

欧耶,终于进桌面了。boom,「XXX 屡次停止运行」。好,看 logcat,改……

咦,没有基带?找找找…改改改…咦?蓝牙怎么挂了?Wi-Fi 也挂了???改…………

我日,怎么相机也挂了?改改改改改………

好的,基本上就又一个星期过去了。

这时候大致上可以叫龙猪跑个 EXPERIMENTAL 出来玩玩了。

4. 优化

厂商开源的内核可能不是最新的,有些有能力的适配者会自己更新一些东西。

  • 内核 tag 老了?合!
  • Wi-Fi(qcacld)驱动太旧?合!
  • SDCardFS 也老了?合!
  • 内核版本也老了!合!!!(此条仅限极少数非常牛逼的适配者)
  • …………哎哟我去,怎么炸了?

有时候更新 adreno 私有库可以提升一点 3D 性能,于是找来各种不同厂商同 SoC 的 ROM,找找哪个 adreno 版本最高,拷进去。

加上各种非必须但挺有用的功能…

  • 适配按键灯、通知灯一类的控制逻辑(liblights)
  • 尽可能多地适配 MKHW 里的功能
  • 内核里一些驱动的修改,厂商的接口可能和魔趣本身的要求不一样,要适配(比如说让振动力度可调节,就需要改几个节点)
  • 给一些功能做进 ConfigPanel/KeyHandler 里(比如一加的三段式开关控制)…

可能又耗时一个星期。

到这里,基本上就可以上每夜版了。


有没有入门级的适配教程,新手该怎么适配手机ROM呢
不知道现在大佬研究坚果PRO2的ROM怎么样了
想问一下红米4高配 markw能升级到奥利奥吗
恳请各位大神考虑一下华为Mate9!
z17蓝牙问题咨询
#2

滋磁dalao科普


#3

前排膜拜适配大佬:grin:


#4

dalao!大佬!


#5

非最前排膜拜dalao!


#6

大神就是牛逼啊。适配太深奥了


#7

感觉起来就是很深奥的样子!


#8

谢谢各位大佬们的辛勤付出,感谢!


#9

非高通,联发科CPU求适配的自己看看,还有用的人很少的手机,也看看,绝望不:smirk::smirk:


#10

厉害了 我的大佬


#11

8.0之后的机器应该不会这么麻烦了
因为有Project Treble。


#12

真的很不容易,感谢各位机型的维护者。。


#13

wow非常牛逼的适配者😮涨姿势了


#14

大佬给力。给一加五的希望


#15

想多了,8.0依然有许多是粤利粤


#16

啥都别说了,用捐赠解决一切问题,没捐的赶紧补上。


#18

谢谢适配大佬,辛苦了!!!


#19

老大们确实难得!买了5t后我会多点来学习的!希望之后能用上魔趣就马上捐赠!!!


#20

感谢大佬,涨知识!


#21

之前尝试编译过努比亚z7mini 还为此翻到过楼主的博客,解决了问题。一直不知道前期怎么看哪里有问题,后来发现可以通过logcat查看。现在想问一个问题,就是怎么看哪些东西是什么库的,然后知道有更新可以去合的?