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


当前回答

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

其他回答

从这一点来看,似乎是有可能的:

http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/(现在只能通过WayBack Machine购买)

"the fact is only Java language is supported doesn’t mean that you cannot develop applications in other languages. This have been proved by many developers, hackers and experts in application development for mobile. The guys at Elements Interactive B.V., the company behind Edgelib library, succeeded to run native C++ applications on the Android platform, even that at this time there is still many issues on display and sound … etc. This include the S-Tris2 game and a 3D animation demo of Edgelib."

Android NDK是一个工具集,允许您使用C和c++等语言在本地代码中实现应用程序的部分内容。对于某些类型的应用程序,这可以帮助您重用用这些语言编写的代码库。

有关如何开始本地开发的更多信息,请点击此链接。

示例应用程序可以在这里找到。

自2009年以来,这一问题有了进展。 用于Android的Qt(c++框架) 视频开始。

这三个步骤是很好的,并储存在这篇文章。

1)如何将原生c代码移植到android上

2) http://www.integratingstuff.com/2010/12/12/calling-native-c-code-through-jni-in-android-applications/

3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

官方的立场似乎是,这不是你“想做”的事情。在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