【问题标题】:Cordova app performance varies greatly between Android versionsAndroid 版本之间的 Cordova 应用程序性能差异很大
【发布时间】:2022-12-18 12:03:07
【问题描述】:

我的环境:
安卓工作室 2021.3.1
科尔多瓦 11.0.0
gradle-7.5
Android Gradle 插件 7.2
JDK 11(微软开放版)- 11.0.15(微软11.0.15+10-LTS)
节点 v14.15.0
NPM 8.1.2
目标 SDK = 32

插件:media@6.0.0、insomnia、email-composer、wkwebview-file-xhr
其他:jquery、abcjs乐谱库、fontawesome

here 也有人问过类似的问题,但那是 9 多年前的事了,我正在寻找任何更新的信息和我的具体问题。

我正在为我的 Cordova 应用程序在不同 Android 设备上的各种性能而苦苦挣扎。对我来说,Android studio 仿真在 Android 7 上似乎很快,但在 Android 10 上却很慢,之后就无法使用了。该应用程序在我的 Android 7 设备上运行良好。朋友的 Android 10 设备几乎无法运行。 Android 的预启动报告给出了一次崩溃(ANR in com.android.systemui;PID:756;executing service com.android.systemui/.dump.SystemUIAuxiliaryDumpService;)8 台设备中有 2 台出现性能问题,它们都是 Android 8.1,具有从版本 8 到 12 的工作模拟器。

根据研究,该问题似乎与

  1. 用 JavaScript 编辑 html(由于从外部文件引入文本,需要在运行时填充数据等)(我有 142 条 document.write 语句。用 jQuery 替换 innerHTML 与编写 div 有不同的影响吗?)
  2. 使用 $.get(目的是允许使用 txt 文件来填充应用程序,这些文件可以很容易地自行编辑并复制到不同的项目中。它还可以防止有一个巨大的 index.html 文件。我加载了大约。 1 MB 的文本到内存中,然后根据需要替换 html。)
  3. for 循环(我使用结构var i = 0, len = importArray.length; for (; i<len; i++) {
  4. 很多文件引用? (~9 个 css 文件,几个 .js 文件)
  5. 可能使用了 jQuery 或 abcjs 库(我曾经加载 jQuery Mobile 但删除了它,但这并不影响性能)

    该应用程序还必须可用作网页以限制额外工作量(因此我使用 Cordova),例如:https://gospelriver.com/favhymns/。我还使用本地存储而不是数据库,这样它在网络上具有相同的功能,并且更容易维护文本文件。

    以下任何一项与尝试纳入我的项目有关吗?我不知道从哪里开始进一步的故障排除。

    1. 线程(我们甚至可以在插件之外执行此操作吗?我看到诸如“跳过 95 帧!应用程序可能在其主线程上执行了太多工作。”之类的通知。)
    2. 建议使用人行横道here,但this 表示它不适用于 Android 10+(我发现该版本存在问题)。也许存在类似的 webview 工具?
    3. 转换为 Ionic - 消息人士称这不会提高性能,因为它是在 Cordova 上构建的
    4. 我已经重新设计了一次应用程序,一次将一首歌曲而不是整首赞美诗放入索引文件中,但是根据我的示例https://gospelriver.com/favhymns/,我可能需要考虑一种不同的编码方法
    5. 还有别的吗?我曾希望像 Crosswalk 那样快速修复,但我没有看到它。

      如果问题被认为是编码问题,我怀疑我应该弄清楚 Profiler,我尝试使用它并且它显示“不支持的设备” - 但这是一个单独的问题。但是,如果该应用程序一开始几乎没有加载,我不确定它是否会起作用。

【问题讨论】:

    标签: android performance cordova


    【解决方案1】:

    似乎解决了性能问题的内容如下:

    • 升级 Android Studio (2021.3.1 RC1) 以及它建议的其他升级
    • 使用 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 替换表格

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多