安卓系统真的存在于除ARM以外的其他平台上吗?

7
我想将一个用C++编写的应用程序移植到安卓系统。将应用程序从C++转换成Java需要很多工作,我更愿意将这些精力用于优化应用程序,而不是解决转换错误和重构问题。
NDK似乎是一个好的选择,但实际上,如果某个平台(如果它占有相当比例的市场份额)不支持或将来不支持NDK,我不想错过它。
安卓声称支持MIPS、ARM、X86和其他平台……但实际上,我看到的所有实现都只在ARM(或兼容ARM)上运行。 我在这个网站上验证了这一点: http://www.pdadb.net/ 使用NDK是否是一个糟糕的决定? 有没有非ARM设备运行或将要运行安卓系统? 在哪里可以找到更多信息?
提前感谢!

3
如果有人在不同的架构上运行Android,那么问题应该只是将其编译成不同的架构。除非你在使用内联汇编或其他内容。 - ewanm89
你完成了你的游戏吗?我很想玩。 - AZ_
同时,请分享您采用的解决方案。 - AZ_
4个回答

5
此时问题不在于CPU架构导致市场份额下降,因为目前非ARM Android设备非常少,问题在于您可能因需要用户运行Android 2.3或更高版本而失去市场份额,因为您必须使用该版本才能创建一个具有窗口、传感器和输入子系统访问权限的完全本机应用程序。
避免重写代码是一个好的目标,但由于Android的不同Window和生命周期API,您可能仍需要重写部分代码。现在,您将不得不用C++而不是Java来重写一些重要的代码部分。
您可以尝试混合方法,在Java中编写大部分UI,然后调用现有的C++代码。
您是在制作游戏吗?那么您可能需要处理这些问题,并继续使用NDK。如果不是,请尽量在Java中实现尽可能多的程序,并使用NDK来处理需要快速完成的复杂、测试过的代码部分。

是的!这是一个游戏。忘了说了:P 基本上我会在Java中进行OpenGLES/声音和系统调用。但我不想触及C++代码,因为转换它需要大量的工作。 我的计划是使用Android 2.1进行开发,在几个月内将超过95%(可能也支持1.6) 我担心在6个月内必须用Java重新制作游戏...我怎么能确定我没问题? - user548569
遗憾的是,我不能确定你是否会没问题,但我相信你不会突然发现自己需要用Java重新编写所有内容。此外,正如NDK文档中所说:“您还可以同时为两种[ARM]架构构建并将所有内容存储在最终的.apk文件中。”因此,你未来的情况应该是稳定的。祝你好运! - Nate

3

以下是文档中的内容:

The latest release of the NDK supports these ARM instruction sets:

ARMv5TE (including Thumb-1 instructions)
ARMv7-A (including Thumb-2 and VFPv3-D16 instructions, with optional support for     NEON/VFPv3-D32 instructions)

Future releases of the NDK will also support:

x86 instructions (see CPU-ARCH-ABIS.HTML for more information)

2

使用NDK是一个不好的决定吗?

对于算法,使用NDK是可以的。对于游戏开发,使用NDK也是可以的。但对于普通应用程序的实现,使用NDK并没有太大帮助。

是否有任何非ARM设备运行或将要运行Android?

Google TV采用x86(Atom)架构。


@richq:嗯,是的,那个回答很糟糕。我澄清了答案。感谢你指出来! - CommonsWare


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接