我尝试着将一款游戏移植到Android上,但它是基于C语言,而Android也支持Java,但我相信一定有一种方法能够将C应用带到Android上,有人知道如何实现这一目标吗?
当前回答
也许你在找这个?
http://www.mosync.com/
它是使用c++为多个移动平台开发的中间层。
其他回答
简单的回答:你不能。
@Backslash17:看了这篇文章和下面的安装说明链接,该公司所做的只是在模拟器上启动一个自编译的可执行文件,绕过了android框架。一旦你有了模拟器,你就可以远程登录并拥有一个linux shell。在那里运行一个linux程序当然很简单。 但这对于没有越狱(也就是根权限)和市场上无法交付的手机来说是行不通的。
除非谷歌打开了其他机会,或者有人编写了一个自定义编译器,将Language X编译成Dalvik字节码(Dalvik是运行Android程序的虚拟机),否则您将无法编写本机代码。
从这一点来看,似乎是有可能的:
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."
我不知道教程,但一个很好的开发工具:Ideaworks Labs的Airplay SDK。(最近更名为“Marmelade”)使用C/ c++,你可以为Windows Mobile, iphone, Android开发应用。我唯一不喜欢的组件是GUI编写器——一个bug,但你总是可以用记事本代替它。
对于任何通过谷歌来了解这一点的人,请注意,从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
您可以使用nestedvm将C(或其他GCC语言)转换为Java字节码,并将其用作您的端口的基础。例如,《Simon Tathams》的Android移植版本。
我预计这种方法已经被NDK淘汰了,但如果一些网络或其他东西不允许人们升级他们的手机,它可能不会被淘汰。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- decltype(auto)的一些用途是什么?
- 碎片中的onCreateOptionsMenu
- Shared_ptr转换为数组:应该使用它吗?
- 使用C返回一个数组
- Printf与std::字符串?
- 禁用复制构造函数
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- 只接受特定类型的c++模板
- c#和Java中的泛型有什么不同?和模板在c++ ?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值