Answers:
Android API是Java。自2010年以来,Google为C / C ++开发人员提供了NDK(一种SDK)。
NDK提供两种方式:
NDK提供了一些C / C ++ API:
但是许多API仅是Java(也可以通过JNI获得)。
NDK 5版本是第一个可用于C ++开发人员的版本,因为它提供:
最痛苦的操作是在android设备上进行调试。因此,我开发了自己的多平台框架(OS X,Windows,Linux,iOS和Android),以首先在台式机平台上调试,然后在iOS平台(在Simulator上)和Last(Android)上进行调试。
android模拟器(不是模拟器)的性能较差,无法模拟OpenGL ES2.x。我建议开发真正的设备。
您可以找到许多有用的信息:
我已经成功地使用Android NDK将两个SDL + OpenGL游戏移植到Android,发现它出奇的简单。我有一个200行的Java包装器,它创建GL上下文并提供实用程序类,例如输入,声音和图像加载,以供C ++代码回调。NDK中的“ San-Angeles”示例程序是一个很好的起点。
顺便说一下,无需使用Java就可以构建C / C ++程序,但是我发现通过不时地回调JVM来访问某些OS级方法很方便。
我认为,如果您的游戏已经可以在Linux上编译,那么您会感到宾至如归。在我当前项目中的100多个文件中,只有4个具有#ifdef ANDROID_NDK
指令(图像和声音相关的类)。
实际上,大部分时间用于移植游戏是由于我不知道的已知模拟器错误。
ANDROID_NDK_ROOT
设置,它是在$PATH
(连同[sdk_location]/tools
和[sdl_location]/platform-tools
); 转到项目目录;使用编译NDK代码ndk-build
; 编译Java代码并使用编译包ant compile
; 使用上载到仿真器或连接的设备ant install
。至于引擎的开源,我还没有决定,但是我已经在博客
从1.5版到Android NDK,Android都支持本机应用程序,它将很好地覆盖您的目标受众。您仍然需要一个简单的Android Java应用程序,该应用程序通过JNI加载应用程序的本机端并向前传递例如输入和渲染调用。
NDK有多个版本,但是您可以使用最新的NDK并选择要支持的目标API。从Android 2.3版开始,您可以在本机端执行更多操作,并且需要较少的Java代码,但是当前对2.3的设备支持非常有限。
原生Android C / C ++开发至少在全屏游戏中是可行的解决方案,移植现有C / C ++ OpenGL ES应用程序所需的工作量很小。