运行APK时android性能不佳,在浏览器中无法正常运行


12

我已经使用Phaser引擎在HTML5中创建了一个小型游戏项目(尝试了1.1.5和1.1.6)。然后要将其移植到移动平台,请使用适用于Windows Phone 8,Android和iOS的Phonegap / Cordova。

在我的游戏中,大约有10个元素具有动画效果(从a点移动到b点并同时旋转一些)。在iOS和Windows Phone 8上,我没有遇到任何问题。

但是对于Android,性能是不可接受的。另一方面,如果我通过设备浏览器运行游戏,则游戏运行平稳,没有任何滞后。但是,已编译的APK会非常生涩,并且元素的移动速度非常缓慢且呈闪烁状态。

我已检查清单文件中的android硬件加速标志设置为“ true”。也尝试将其更改为false,但这并未反映出性能的任何变化。

我已经在三星S2设备上的Android 4.2上进行了检查,在性能上更好。但是在Asus Nexus Tab 7(运行Android 4.4)上,它非常生涩,而OS和Device都是最新的。还检查了另一台运行Android 4.3的设备(三星Galaxy Grand Duos),在该设备上的性能也根本不好。

在我的游戏中,尝试了两种WebGL / Canvas渲染(Phaser引擎使用Pixi.js,如果不支持WebGL,则会回退到2d canvas),但是没有任何变化。与easyljs类似。

如果还有其他人遇到类似的问题,并且可以建议采取任何方式获得本机般的性能。我检查了cocoonjs的示例,尽管它们看起来很平滑并且可以接受,但我不能这样做。


3
这个问题写得很好。我想知道您是否运行了基准测试或探查工具来缩小可能的罪魁祸首,并且是否通过简单的步骤与phonegap联系以重现此问题?
AturSams 2014年

我还没有写phonegap。尝试了探查器,在框架或代码库中找不到任何异常。也许这就是为什么一切在桌面以及移动浏览器上都能流畅运行的原因。一个发现是,Android对于基于WebView的应用程序和浏览器本身具有不同的运行时。但是找不到任何迹象表明为什么这么小的补间会在APK(WebView)模式下造成如此大的延迟。实际上,此问题出现在运行KitKat的Nexus选项卡上,据说它具有最快的网络视图(基于Chrome)。
devilzk83 2014年

就我而言,这是非常肤浅的观察。看来您可能正遇到错误。我不明白为什么高端设备之间的性能会有很大的差异。
AturSams 2014年

1
我很好奇您为什么不想走CocoonJS路线。我相信Phaser和Pixi在CocoonJS中都运行良好。是什么让您无法尝试该选项?
杰夫2014年

2
导致无法显示CSS3和Canvas渲染的错误是基于Chromium的新Webview,这对Android上的Cordova / Phonegap开发人员来说是一个彻底的惨败... ?我希望它能快速修复,并且希望能透明地修复,尤其是对于使用第3方锁定Android版本的手机上的人而言。。。彻底失败。 。更多信息:groups.google.com/forum

Answers:


2

导致此问题的基于Chromium的WebView最终于2014年中期在KitKat版本4.4.3 / 4.4.4中进行了更新,但是考虑到一些供应商对于他们的哪部手机进行了更新以及哪些手机做了更新,这似乎有些武断,这实在令人不安。不。例如,三星Galaxy S4仍然陷于4.4.2。

请遵循其他答案给出的建议:如果您有基于画布的游戏,则应避免使用PhoneGap,除非可以确定排除运行4.4.3以下版本的KitKat的手机而陷入困境。


1

尝试在libgdx中重新制作游戏。Libgdx足够快,并且没有类似的问题,并且可以在所有平台上使用。不幸的是,这只是我现在能想到的,而且我不喜欢将js转换为android java或任何掩体所做的想法。尽管需要一些时间,但请对LibGDX进行测试。


1

对于大多数游戏开发者来说,这似乎是一个问题。 类似问题

“我经常听说,当想要制作画布游戏时,phonegap并不是最佳选择。它更适合于Web应用程序到本地应用程序。”

它似乎正在为Android手机渲染问题。有些引擎无法处理更多的精灵渲染。我知道10个对象很容易渲染,但是渲染功能肯定会出现问题。

我的建议是您选择cocoonjs


1

我在Phaser中遇到了同样的问题(使用这个简单的游戏)。不幸的是,使用HTML5和Web / canvas渲染时,您只能靠手机摆布-会有用户使用损坏的浏览器或性能不佳的浏览器(例如我的浏览器)。

就像@ captainbuzz123建议的那样,唯一真正的解决方案是迁移到非HTML5平台。我现在选择的工具是OpenFL

虽然我的(非常简单的)Phaser应用程序在手机上以8-12FPS的速度运行,但使用OpenFL(因为它已转换为C ++并通过Android NDK运行),但我最终在手机上获得了非常流畅,流畅的性能。

绝对值得一试。


1

2020年第一周的更新:

Cocoonjs也许对这个问题在过去的固溶体,但它们都关闭..从他们的报价官方网站,说这一切

非常遗憾的是,我们宣布将停止提供我们所钟爱的服务Cocoon。

我们成立Ludei / Cocoon是因为我们相信应用程序和游戏开发的未来将基于HTML5。不幸的是,这没有发生,原生开发比以往任何时候都强大。

这实际上反映了2019年移动HTML5的发展..不是不可能的,但是效果不如预期...

在使用PhaserCordova针对IOS和Android 构建了一些生产游戏之后,我开始转向本机开发。甚至对中端设备上最简单的机制也无法达到最高性能

只是分享我的下一个技术/堆栈解决方案选项,供任何在当前或不久的将来看到的人使用:

  • 适用于IOS的SpriteKit和适用于Android的LibGDX:这可能是性能最高的解决方案,尽管它需要分别针对每个平台进行开发。但是也将是最“低级”的解决方案

  • Cocos2D-X不确定它是否得到了很好的支持,它仍然是一个有效的选择,但它应该非常成熟且性能出色,您可以使用C ++编写并为存在的任何平台构建

  • Corona似乎是一个有趣的(免费的)跨平台和高性能框架,使用Lua将需要对其进行测试,而不是此处提到的其他解决方案

  • 使用UnityGodot之类的现代引擎之一。不知道这与提到的框架性能相比如何

希望这对任何人有帮助。


0

前几天看到这个,很可能值得一看来解决这个问题。听起来对我来说是个不错的主意:http//tmtg.net/glesjs/

实际上,在浏览器中运行正常,但在Phonegap / Cordova上运行却无法正常工作。Android上的整个canvas / webGL情况(对于iOS而言无法说)对我来说似乎一直很可怕。绝对需要GOogle投入更多精力,也许棒棒糖会有所改善!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.