我想创建一个像Space Invaders这样的简单游戏。我知道我可以使用Android NDK,但我必须移植我使用的库。我不能使用第三方专有库。
我将使用OpenGL,但OpenGL API在Android上似乎有所不同。我必须使用jpeg和png纹理,并编写文本。我可以为Android编译libjpeg,libpng和freetype吗?
我无法具体实现游戏引擎(C ++)和渲染例程(C ++和OpenGL),因为这是复杂的部分。
我准备为每个平台实施一些组件。窗口系统和用户输入没有问题,因为我将为每个系统使用特定的实现,这对我来说很简单。
我在PC上使用SDL及其音频扩展,但它易于使用。我可以使用Android的特定音频库。
由于
答案 0 :(得分:5)
我可以为Android编译libjpeg,libpng和freetype吗?
是的,您必须重新编译专门针对Android的所有本机库。是的,您确实需要您计划使用的所有第三方本机库的源代码,因为通常当我们在Android之外编译和链接这些库时,它们链接到glibc但不幸的是Android由于liscence和性能问题而不使用glibc。 Android使用称为libc的glibc的淡化版本。对于大多数常用功能,它与glibc具有匹配的符号名称。但据我所知,libc没有一些与Strings相关的功能,它肯定没有一些posix支持。如果您的本机库使用任何已弃用的功能,则必须通过使用libc支持的替代功能并相应地编写lib来为这些功能找到解决方法。
另外,正如你指出的那样,你将不得不使用NDK将Java(Android app / fwk)与原生世界(C ++)连接起来。
虽然这听起来很简单,但根据我的经验,在Android上编译本机库(Android移植)传统上非常耗费时间并且不能保证过度使用。