将模块从Linux迁移到Android

时间:2012-03-29 07:47:02

标签: android module kernel protocols implementation

我打算将aodv协议作为研究项目的linux模块实现,我需要稍后在Android上实现它。我想知道我是否可以将我的代码编译到android内核中,让我的模块像Linux一样工作(内核2.6上)。

任何建议都将不胜感激。

(P.S。在Android上已经有一些aodv实现,例如aodv-on-android和UoB JAdhoc,但是,这些是用Java实现的,不涉及内核)

1 个答案:

答案 0 :(得分:0)

标语是:Android是Linux,所以你在Linux上做的任何事情(便携式)应该很容易在Android上实现。

这绝对是正确的,但是您需要记住以下几点:

  • 可移植性:如果您在x86上编写实现,然后将模块移动到ARM for Android,请注意不要使用两者上不存在的任何功能。但是,对于像网络协议这样的东西,你可能不会遇到很多这些问题。想到的唯一一个是NIC。

  • Dalvik:通用Linux发行版往往运行得非常接近操作系统,这意味着它们会定期进行系统调用或libc调用,并且与内核交互的语义主要转移到应用程序。然而,Android基本上构建了一个Java环境,大多数应用程序只与该框架交互。对您而言,这意味着您需要了解修改Android框架的可能性,以便对应用程序进行更改。

  • 但是,上述要点取决于您的使用案例。如果您计划为现有应用程序扩充路由以使用aodv,那么您将希望破解Dalvik。如果您要编写一个概念证明应用程序,那么您可以使用NDK编写与C中的aodv交互的部分,并避免必须修改应用程序框架。

  • 您可能已经知道这一点,但内核构建的系统非常复杂,您应该能够通过编写模块一次,并通过更改配置为两个体系结构或平台编译它。

希望这会有所帮助。