我尝试着将一款游戏移植到Android上,但它是基于C语言,而Android也支持Java,但我相信一定有一种方法能够将C应用带到Android上,有人知道如何实现这一目标吗?
当前回答
Android NDK是一个工具集,允许您使用C和c++等语言在本地代码中实现应用程序的部分内容。对于某些类型的应用程序,这可以帮助您重用用这些语言编写的代码库。
有关如何开始本地开发的更多信息,请点击此链接。
示例应用程序可以在这里找到。
其他回答
官方的立场似乎是,这不是你“想做”的事情。在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
谷歌刚刚发布了NDK。
http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introducing-android-15-ndk-release-1.html
可以在这里找到: http://developer.android.com/sdk/ndk/1.5_r1/index.html
我不确定NDK是否提供了官方Java API的全部覆盖。
来自http://developer.android.com/sdk/ndk/index.html#overview:
请注意,NDK没有 允许您只开发本机 应用程序。Android的主 运行时仍然是Dalvik虚拟的 机器。
有一个计划,允许C/ c++库在Android的下一个SDK版本(代号Eclair?)到目前为止,这还不能通过Android Java SDK实现。但是,您可以获取HUGE开源项目,滚动您自己的库,然后刷新您自己的设备……但是任何想要使用你的库的人都必须同时刷新你的自定义构建。
您可以下载c4droid,然后安装GCC插件并安装到SD上。从shell,我只是遍历到GCC二进制文件所在的目录,然后调用它,使其成为板上可执行文件。
查找/ -name GCC
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
猫>测试
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
./arm-linux-androideabi-gcc test.c -o test
/测试。
你好手臂!
推荐文章
- 警告: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值