2012-03-29 107 views
0

我将实施aodv协议作为研究项目的Linux模块,并且我需要在Android上稍后实现它。我想知道是否可以将我的代码编译到android内核中并且拥有我的模块在Linux中工作(内核2.6)。将模块从Linux移植到Android

任何建议将不胜感激。

(PS目前已经在Android上一些AODV的实现,例如AODV上,Android和大华JAdhoc,但是,这些都是在Java中实现,不涉及内核)

回答

0

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

这主要是真实的,但有你要记住几件事情:

  • 便携性:如果你正在写在x86你的实现,然后移动模块向ARM申请Android,请注意不要使用两者都不存在的任何功能。但是,对于像网络协议这样的东西,你可能不会遇到很多这样的问题。唯一想到的就是NIC。 Dalvik:通用Linux发行版往往运行得相当接近操作系统,这意味着它们经常进行系统调用或libc调用,而与内核交互的语义大多会传递给应用程序。然而,Android本质上建立在一个Java环境之上,大多数应用程序只与该框架进行交互。对于您来说,这意味着您需要了解可能需要修改Android框架以便使应用程序可以看到更改。

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

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

希望这会有所帮助。

+0

非常感谢!我对android是绿色的,我没有意识到可能存在严重的问题,使得在android框架内的应用程序可见变化,需要做一些研究。 – Jonathan 2012-03-30 02:58:58

+0

非常欢迎。我建议对答案进行投票,而不是出于自我推销,但因为给它更高的分数意味着搜索相似事物的人更有可能看到它。祝你好运! – Alex 2012-03-30 14:43:21