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


当前回答

看看谷歌ndk组,它看起来很有前途,ndk的第一个版本将在2009年上半年发布。

更新: 它发布于http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

其他回答

通常情况下,你必须:

安装谷歌Android NDK。它 包含库,头文件,makfile 示例和GCC工具链 从您的C代码构建一个可执行文件 对于ARM,优化和链接它 如果需要,提供了库 使用提供的连接到电话 Adb接口和测试您的 可执行的

如果你想要销售一款应用:

用你的C代码构建一个库 创建简单的Java代码 使用这个库 将这个库嵌入应用程序 包文件 测试你的应用 免费出售或分发

看看谷歌ndk组,它看起来很有前途,ndk的第一个版本将在2009年上半年发布。

更新: 它发布于http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

本机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

对于任何通过谷歌来了解这一点的人,请注意,从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

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

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

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