Android移植可分为两个部分:应用移植和系统移植。应用移植是指将应用程序移植到某一特定硬件平台上。由于不同硬件平台之间的差异,Android SDK API也有可能存在差异,或者将应用程序从低版本Android移植到高版本的Android上。为了保证应用程序可以在新的硬件平台上正常运行,需要对源码进行一些修改。当然,如果没有或无法获取源码,只有重新在新的平台上实现了。一般Android应用移植并不涉及驱动和HAL程序库的移植。
Android系统移植是指让Android操作系统在某一特定硬件平台上运行。使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件平台的CPU架构。Linux内核本身已经支持很多常用的CPU架构,因此将Android在不同的CPU框架之间移植并不用做过多的改动。想要Android在不同硬件平台上正常运行,只支持CPU架构还不行,必须要让Android可以识别平台上的各种硬件。这些工作主要也是由Linux内核完成的。其中主角就是Linux驱动。
学习Linux驱动编程一定要了解Linux驱动只与Linux内核有关,与用户使用的Linux系统无关。也就是说,不管哪个Linux系统,只要使用了同样的Linux内核,驱动就可以通用。唯一可以判断Linux内核是否相同的方法就是Linux内核版本号。其实,学习Android驱动开发,实际上就是学习Linux驱动开发,只是Android增加了一个HAL,这是Android特有的。一般Android都会有对应的HAL,不过HAL也不是必须的,通过NDK也可以直接访问Linux驱动。
时间: 2024-10-15 11:46:50