Cordova应用性能在Android版本之间差异很大

vc9ivgsu  于 2022-12-19  发布在  Android
关注(0)|答案(1)|浏览(314)

我的环境:
Android Studio 2021.3.1
cordova 11.0.0
等级-7.5
Android Gradle插件7.2
JDK 11(微软开放版本)- 11.0.15(微软11.0.15+10-LTS)
节点版本14.15.0
国家预防机制8.1.2
目标SDK = 32
插件:media@6.0.0,失眠,电子邮件编辑器,wkwebview-file-xhr
其他:jquery、abcjs音乐符号库、字体
一个类似的问题已经在这里提出,但那是超过9年前,并寻找任何更新的信息和我的具体问题。
我的Cordova应用在不同的Android设备上的性能差异很大,我很纠结。Android studio仿真在Android 7上似乎很快,但在Android 10上很慢,之后就无法使用了。这款应用在我的Android 7设备上运行得很好。一个朋友的Android 10设备几乎无法运行。Android的预发布报告显示了一次崩溃(ANR in com.android.systemui;正在执行服务com.android.systemui/.dump.系统UI辅助转储服务;),8台设备中有2台存在性能问题,这两台设备都是Android 8.1,模拟器版本为8到12。
根据研究,这个问题可能与
1.用JavaScript编辑html(由于从外部文件引入文本,需要在运行时填充数据等)(我有142个document.write语句。用jQuery替换innerHTML和编写div有不同的影响吗?)
1.使用$.get(目的是允许使用txt文件填充应用程序,这些文件可以轻松地自行编辑并复制到不同的项目中。它还可以防止拥有一个巨大的index.html文件。我将大约1 MB的文本加载到内存中,然后根据需要替换html。)

  1. for循环(我使用结构var i = 0, len = importArray.length; for (; i<len; i++) {
    1.许多文件引用?(~9个css文件,几个.js文件)
    1.可能使用jQuery或者abcjs库(我曾经加载jQuery移动的,但是删除了它,但这并不影响性能)
    该应用程序还必须可用作网页,以限制额外的努力(因此我使用 cordova ),例如:我还使用本地存储而不是数据库,这样它在Web上具有相同的功能,并且更容易维护文本文件。
    下面的任何一个相关的尝试合并到我的项目中吗?我不知道从哪里开始进一步的故障排除。
    1.线程化(我们甚至可以在插件之外这样做吗?我看到像“跳过95帧!应用程序可能在其主线程上做了太多的工作”这样的通知。)
  2. Crosswalk建议使用here,但是this声明它不适用于Android 10+(我发现这个版本有问题)。
    1.转换为离子-消息人士说,这不会提高性能,因为它是建立在 cordova
    1.我已经重新设计过一次应用程序,一次只将一首歌曲而不是整个赞美诗拉入索引文件,但是可能需要根据我的示例https://gospelriver.com/favhymns/考虑一种不同的编码方法
    1.还有别的吗?我希望能像《人行横道》那样快速解决问题,但我没有看到。
    如果问题被认为是编码问题,我想我应该找出Profiler,我试着使用它,它显示“没有支持的设备”--但这是另一个问题。不过,如果应用程序一开始就几乎不加载,我不确定它是否能正常工作。
3pvhb19x

3pvhb19x1#

似乎解决了性能问题的方法如下:

  • 升级Android Studio(2021.3.1 RC 1)沿着建议的其他升级
  • 使用proguard(文件〉项目结构〉构建变体〉所有模块/版本〉Minify Enabled = true)和包含以下内容的proguard规则文件:
-keep public class org.apache.cordova.** { *; }
-keep public class nl.xservices.plugins.Insomnia { *; }
-keep public class de.appplant.cordova.emailcomposer.** { *; }
  • 用div替换表

此外,一个用户不得不卸载一个使用古怪权限的冲突应用程序。

相关问题