虽然对移植Android很感兴趣,苦于手上没有合适的移动硬件平台,苦闷阿。结合开发社区的一些hacking news纸上谈兵,说说我所认为的理论上的移植步骤吧,欢迎交流,如果有朋友移植成功,不吝赐教!   通过前两天对Android的Linux平台 以及启动过程的初步学习,我觉得Android的意义不仅仅是 手机平 台那么简单,通过对其框架,结构的分析,我们可以将Android应用到任何移动硬件平台上,甚至自己研发出新的更好的框架。连Google自己也说,我 们的目标是,让我们发布的强大的平台能够应用到数千种不同的移动设备上。这是可以理解的,Google就是这样,它的每个策略都比常理要更进一步。不推出 专属的硬件,而是一个通用的移动设备的 软件平台,使Android可以更方便的快速占领 手机 操作系统的市场,而最终可以达到的份额也会非常的可观。   当然,这都是后话了,group上这几天的焦点话题就是,我们如何让Android在现有的硬件平台上跑起来,而不是仅仅用模拟器来模拟它?这 个命题估计对所有hacker都有巨大的吸引力,如果Android能在自己的手机平台上跑起来,所有的开发,就突然变得有意义了。我不是说目前的开发没 有意义,毕竟GoogleN位数的奖金在那里摆着的,呵呵,不过对于上层开发者来说,最终目的还是应用的实际性和流行性,对吧?应用有没有实际价值,实际 硬件平台上跑一跑就知道了。   从Android现有的开源情况看,所有的hacking已经有一个比较明确的指导方向了,就是依靠Benno最先放出的方法来hack各种 image并分析一些东西,从我之前的两篇文章也可以看出大致步骤。我们现在能够得到的东西,包括ramdisk image,systemimage以及data image,当然还有open source的Linux kernel。所以,所有的工作都应该从这几个东西入手。   先看看kernel部分。由于Android基于Linux,因此所有的目标移植平台都应该允许运行Linux,对于尝试阶段的我们来说,最好 是找一款默认就是采用Linux操作系统并提供完善的develop environment的设备,这样,我们只需要找出Google提供的Linux2.6.23kernel和现有的kernel有什么不同,把所有需要 的修改做成patch,patch到现有系统上,就有可能成功移植整个Android,无须重新编译Google的Linux 2.6.23 kernel,然后绞尽脑汁想怎么port到某个设备上。先下载一个standard Linux2.6.23 kernel,然后使用命令   diff -ruN linux-2.6.23/ Google-linux-2.6.23/ >lk.patch   打开lk.patch,God,有3万多行。仔细分析一下,大部分都是和Qemu以及goldfish有关的。我们要做的事情,是让 Android在真实平台上跑起来,所以不管是用于虚拟处理器的Qemu还是SDK模拟的硬件平台Goldfish,都不是我们所需要的,要在patch 里面去掉他们,因为我们希望运行在真实的硬件平台上。恩,说实话,是一个很麻烦的事情,你要分析又30000多行的patch阿……不过里面有一超长段是 关于yaffs的补丁,如果你目标平台所带的内核已经支持yaffs了,就没必要要了。这是我修改后的patch ,放在googlepages上的,要是哪天又被和谐了我也没有办法。   下一步,就是让打了Android patch的内核运行在你的目标硬件上,具体步骤是和不用硬件的开发环境相联系的。当然,还需要导入Android的rootfs以及filesystem。将他们用mkfs.jffs2构建成jffs文件系统即可。   需要注意的是,这个合适的硬件平台是需要挑选的,看看Android模拟器里面的信息:   # cat /proc/cpuinfo   Processor : ARM926EJ-S rev 5 (v5l)   BogoMIPS : 331.77   Features : swp half thumb fastmult vfp edsp java   Google默认的是ARM926EJ-S核心。这就在一定程度上限制了我们能够port的平台选择,Benno曾经试验在Openmoko上 移植Android ,最后失败了,原因就是ARM926EJ-S采用的是ARMv5TEJ指令集,而Openmoko的ARM920T采用的是ARMv4T指令集。所以,不 仅仅是需要能运行兼容EABI的Linux的设备那么简单。   以上是理论步骤的逻辑分析,由于我目前手上没有试验平台,所以也无法验证,如果有朋友最后成功移植了Android,多多交流。

更多相关文章

  1. Android牟利之道(二)--广告平台的介绍
  2. linux和windows平台下,如何下载android sdk的源代码
  3. 手机或android设备连接电脑,但是adb devices找不到设备。
  4. Android平台调用Web Service:示例
  5. Android input输入设备键值从底层到应用层的映射流程
  6. Android智能硬件开发心得总结(一)
  7. BitRaser for Mobile iOS和Android移动设备的安全数据擦除软件
  8. Android、iPhone和Java三个平台一致的加密工具
  9. 列出Android设备中所有启动的服务,及判断某个服务是否开启

随机推荐

  1. Android(安卓)使用Camera 打开预览Demo
  2. android的http工具类
  3. Android(安卓)activity的回传数据
  4. SD卡文件列表
  5. Android(安卓)Multiple dex files define
  6. Android(安卓)接收蓝牙耳机按键操作
  7. Android(安卓)Studio Interface一例
  8. Android(安卓)Studio Property属性动画
  9. Design Patterns for User Interface for
  10. Android(安卓)MediaPlayer 音乐播放