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


当前回答

有一个计划,允许C/ c++库在Android的下一个SDK版本(代号Eclair?)到目前为止,这还不能通过Android Java SDK实现。但是,您可以获取HUGE开源项目,滚动您自己的库,然后刷新您自己的设备……但是任何想要使用你的库的人都必须同时刷新你的自定义构建。

其他回答

通常情况下,你必须:

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

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

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

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

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

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

也许你在找这个?

http://www.mosync.com/

它是使用c++为多个移动平台开发的中间层。

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

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."

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