我尝试着将一款游戏移植到Android上,但它是基于C语言,而Android也支持Java,但我相信一定有一种方法能够将C应用带到Android上,有人知道如何实现这一目标吗?


当前回答

对于任何通过谷歌来了解这一点的人,请注意,从SDK 1.6开始,Android现在有一个官方的原生SDK。

你可以从这里下载Android NDK (Native Development Kit): https://developer.android.com/ndk/downloads/index.html

还有一篇关于NDK的博文: http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

其他回答

我不确定NDK是否提供了官方Java API的全部覆盖。

来自http://developer.android.com/sdk/ndk/index.html#overview:

请注意,NDK没有 允许您只开发本机 应用程序。Android的主 运行时仍然是Dalvik虚拟的 机器。

官方的立场似乎是,这不是你“想做”的事情。在Android开发者列表中可以看到这个帖子。谷歌设想android运行在各种不同的设备上(cpu,显示器等)。因此,启用开发的最佳方法是使用针对Dalvik VM的(可移植的)托管代码。因此,Android SDK不支持C/ c++。

但是,看看这一页:

Android包括一套C/ c++ 各种组件使用的库 Android系统。这些 功能向开发人员公开 通过Android应用程序 框架。

托管应用程序框架似乎是在这些库之上分层的。该页面继续列出C/ c++库:标准C库、媒体、3D、SQL lite等。

因此,您所需要的只是一个编译器链,它将C/ c++编译到适当的CPU(在G1的情况下是ARM)。这里有一些关于如何做到这一点的简短说明。

我不知道的是哪里可以找到这些库提供的api的描述。我猜可能有头文件隐藏在SDK的某个地方,但文档可能是粗略的/缺失的。但我认为这是可以做到的!

希望有用。声明一下,我没有写过任何原生的android应用程序——只是一些简单的托管应用程序。

Andy

谷歌刚刚发布了NDK。

http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introducing-android-15-ndk-release-1.html

可以在这里找到: http://developer.android.com/sdk/ndk/1.5_r1/index.html

我不知道教程,但一个很好的开发工具:Ideaworks Labs的Airplay SDK。(最近更名为“Marmelade”)使用C/ c++,你可以为Windows Mobile, iphone, Android开发应用。我唯一不喜欢的组件是GUI编写器——一个bug,但你总是可以用记事本代替它。

这篇博客文章可能是一个好的开始:http://benno.id.au/blog/2007/11/13/android-native-apps 不幸的是,很多重要的东西都“留给读者做练习”。