2012-08-24 22 views
12

我即将将一个大型C++项目(某种库项目,它绝对不包含GUI)移植到Android。它实际上是一个Visual C++项目,但它将作为中间步骤移植到Linux。我知道Android并不是一个“完整的”Linux,并且并不声称提供所有的POSIX功能,但我也知道使用NDK在Android上有很多“POSIXish功能”。什么是Android中最重要的POSIX功能?

现在我的实际问题是:

哪些是不可用在Android上的完整的POSIX组相比,最大/最重要的功能是什么?因此,在从Visual C++移植到Linux GCC时,我可以牢记这一点。

我试图找到在谷歌的东西,但什么也没找到真正有用的,只是在这里有一些东西,提到有Android上的一些POSIX的功能...

+2

也许这可以帮助你 - http://mobilepearls.com/labs/native-android-api/和这里一些更多的见解-http://stackoverflow.com/questions/10235403/porting-embedded-visual-c代码到Android和这里https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/xZES51OYakY –

+0

http://stackoverflow.com/questions/4610086/pthread-cancel-alternatives -in-android-ndk – crossle

回答

3

仿生由谷歌一个重新编码。它很小,但针对Android进行了优化。

我知道它唯一缺乏的大事实际上就是pthread_cancel()函数。

我的经验是,如果你将它成功移植到GNU/Linux上,而不需要pthread_cancel()调用,那么你应该大部分都可以。

顺便说一句,你试图建立什么样的图书馆?它使用什么?网络,线程...

PS:即使是Linux也不完全是POSIX。

2

共享内存也是您可能在Android中发现的不同实现。尝试在android内核上使用shm_open和shm_unlink时遇到了困难。 Android实现异步共享内存(ashmem)。

+0

是的,你必须调用ashmem_create_region并通过绑定程序在进程之间共享返回的文件描述符以对其进行映射。 – olegst