我们有安卓游戏,它使用OpenGL ES 2.0进行所有图形处理。该游戏适用于装有股票ROM的Android手机,但如果我们测试最新的Paranoid android这是一个自定义ROM,该应用程序崩溃。在不同的API级别(Android版本)上进行测试,它仍然会崩溃。
图形开发人员说我们无法做任何事情,因为它是自定义ROM的错,但我的观点不同。
根据谷歌关于OpenGL ES(link)的兼容性说明,任何Android 2.2或更高版本(API 8)都应该支持OpenGL ES 2.0。因此,Android 2.2或更高版本(API 8)的任何自定义ROM都应该支持我们的应用程序,因此错误在代码中。
我的推理是否正确?总之,如果两个ROM使用相同的Android版本(或API级别),任何ROM(自定义或股票)应该支持相同的应用程序,并且只有Google有权更改某些API级别附带的功能(换句话说,如果Google发布了API 18,所有使用API 18的ROM都具有相同的功能。
答案 0 :(得分:2)
你的推理有两个缺陷。
1)这仅适用于Android官方授权设备和ROM。这并不意味着所有内容都可以使用闪存的随机构建 - OEM可以删除功能。例如,Samsung删除了自动更正服务
2)某些功能需要硬件和驱动程序支持。没有这些代码就没有代码可以打开它们 - 如果你的设备没有摄像头,它就无法在软件中添加一个。 OpenGL就是其中之一。您需要3D硬件及其驱动程序。自定义ROM很可能没有驱动程序,或者驱动程序出现故障。
也就是说,它可能是设备特定的错误或代码中的错误。查看堆栈跟踪并查看崩溃是什么,然后决定是否修复它。