我对以下功能很感兴趣:
- 编写一个完全用C++编写的Android Market应用程序(实际上是现有产品的端口)。
- 使用快速屏幕缓冲区像素推送(或者使用OpenGL ES来实现)。
- 获取用户输入并将其传递到C++代码中。
编写这样的应用程序是否合法?市场政策是否对此类事情有所限制?
从Android 2.3(姜饼)开始,使用NDK r5是可以实现的,尽管我认为只有支持本地应用程序的设备上才必须安装Gingerbread。
来自native-activity示例:
Android SDK提供了一个帮助类NativeActivity,允许您编写完全本地化的活动。通过本地活动,可以编写完全本地化的应用程序。NativeActivity处理Android框架与本地代码之间的通信,因此您不必对其进行子类化或调用其方法。您需要做的就是在AndroidManifest.xml文件中声明您的应用程序为本地应用程序,并开始创建您的本地应用程序。
没有100%的本地解决方案,但我认为你正在寻找的是Android NDK(Native Development Kit)
从他们的网站上可以看到:“请注意,NDK不能让您开发仅限本机的应用程序。 Android的主要运行时仍然是Dalvik虚拟机。”
我相信它可以让你从Android应用程序中调用自己的本地代码
我个人从未在我的游戏中使用过它,但我确信它会在很多方面有所帮助(例如能够管理自己的内存而不会因垃圾收集器而出现“卡顿”)
这个帖子中的对话可以帮助您。 http://groups.google.com/group/android-ndk/browse_thread/thread/50362904ae0574cf
本质上, 可以制作仅限原生应用程序,而Android市场也不会限制您。 但是由于对本地开发的支持有限,很可能会使用一些非标准功能,在未来的版本中可能会出现问题。
http://developer.android.com/guide/basics/what-is-android.html
“Android SDK提供了使用Java编程语言在Android平台上开始开发应用程序所需的工具和API。”
http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars
一般来说,你不需要这样做。虽然JNI提供了一些有限的C++支持,但它主要是为了补充Java代码而不是替代它。没有针对C++的框架/API支持(据我所知),因此这并不是一个真正的选择。