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


当前回答

简单的回答:你不能。

@Backslash17:看了这篇文章和下面的安装说明链接,该公司所做的只是在模拟器上启动一个自编译的可执行文件,绕过了android框架。一旦你有了模拟器,你就可以远程登录并拥有一个linux shell。在那里运行一个linux程序当然很简单。 但这对于没有越狱(也就是根权限)和市场上无法交付的手机来说是行不通的。

除非谷歌打开了其他机会,或者有人编写了一个自定义编译器,将Language X编译成Dalvik字节码(Dalvik是运行Android程序的虚拟机),否则您将无法编写本机代码。

其他回答

谷歌发布了一个本地开发工具包(NDK)(根据http://www.youtube.com/watch?v=Z5whfaLH1-E在00:07:30)。

希望这些信息能在谷歌的群组页面(http://groups.google.com/group/android-ndk)上更新,因为上面说还没有发布。

我不确定从哪里可以得到一个简单的下载,但我听说你可以从谷歌的Git存储库在甜甜圈分支下获得一个NDK的副本。

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

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

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

本机C/c++文件libstdc++。*从你的Ubuntu是x86(或x86_64)二进制文件,但Android设备和模拟器是ARM。当然,即使您设置了正确的soname,这也不会起作用。这是一种非常幼稚的方式,不会有任何结果。Android对c++的支持非常有限,这意味着没有例外,标准c++库(包括STL)和RTTI。如果您需要这样的功能,请使用我的自定义NDK发行版

http://crystax.net/android/ndk.php -它支持上面列出的全部c++特性。

为什么有错误:未定义的引用'__cxa_end_cleanup'链接错误。Android stlport

时间。因为没有到libstdc++的链接。答:大错特错。

因为它使用了一些静态库,所以有必要链接完整的libstdc++。答:可以

http://crystax.net/android/ndk.php这里下载软件包

源代码\ cxx-stl \ gnu- libstdc++ \ libs \ armeabi目录。

Android对自身libstdc++的支持是有限的,它必须链接到一个完整的libstdc + +。A这份工作。

在Android中添加文件。mklocal_ldflags = $ (LOCAL_PATH) / libs / libcurl。一个\

 $ (LOCAL_PATH) / libs / liblua.a \
 `$ (LOCAL_PATH) / libs / libstdc + +. A`  

可以编译LOCAL_CPPFLAGS + =- lstdc++ -fexceptions

也许你在找这个?

http://www.mosync.com/

它是使用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/