首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少本机Android应用程序的启动时间

如何减少本机Android应用程序的启动时间
EN

Stack Overflow用户
提问于 2017-12-06 17:06:43
回答 3查看 2.6K关注 0票数 19

目前,我正在努力寻找如何减少Android启动时间的方法。这并不是iOS的问题,但对于安卓,我看到的任何地方都是6-10秒。目标是在3-4秒左右。

这是我所遇到的研究的总结

  • createReactContext:,反应桥被初始化,并开始加载所有本机模块。
  • getMethodDescriptors:使用反射编译(运行时)使用ReactMethod的所有公开方法的列表。

解决办法是存在的,但并不完美:

  1. LazyReactPackage (实验) https://github.com/facebook/react-native/commit/797ca6c219b2a44f88f10c61d91e8cc21e2f306e
  2. 删除所有公开的 ReactMethods https://github.com/facebook/react-native/pull/10084的反射

这些解决方案的问题在于使用注释处理来生成类(编译时)。我正在努力弄清楚如何让这些解决方案在没有运气的情况下运行。

另外,关于减少Android启动时间的其他建议也会有所帮助。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2019-08-26 04:10:34

为此,Facebook发布了新的构建机制爱马仕,这将提高启动时间的速度。但是你需要react native 0.60>来使用这个引擎。https://facebook.github.io/react-native/blog/2019/07/17/hermes

票数 2
EN

Stack Overflow用户

发布于 2021-06-14 19:18:13

基于上面的信息,很难回答Android设备的瓶颈是什么,因为这个问题缺乏很多信息,比如设备规范,您可以在这些规范上进行测试,并做出反应--本地版本等等。

这个问题早在很久以前就有人提出了,我认为当时主要的瓶颈是老JSC的使用。因为RN开始使用自己的JSC (不是Android默认的),所以只有0.59版本。正如其他人所指出的,从RN0.60开始,他们还增加了使用Hermes引擎的能力(这在iOS上也可以从RN0.64获得)。所有这些优化都是为了提高Android设备的性能。

我认为,现在,在新的JSC或Hermes中使用RN0.60不会成为一个问题。而且启动时间与iOS (假设您将在类似设备上进行测试)大致相同(甚至更快)。

但是,如果您仍然认为,您应该优化您的启动时间,您可以查看ram bundles。这种机制只允许您在启动时加载JS包的一部分(在许多应用程序中有很多地方,用户甚至可能看不到这些地方,而且只有在需要的时候,这个特性才允许加载这些部分)。因此,您可以简化您的入口点,并且只加载您的捆绑包的一小部分。

你可以看看反应-本机-束分离器。这个库与几乎所有流行的导航库都很好地集成在一起,并且允许您推迟加载特定的路由。例如,如果您有一个登录屏幕,您可以只在启动时加载此屏幕,而所有其他用户只能在用户看到它们时在后台加载或开始加载它们。复杂应用程序的启动时间与"Hello“应用程序的启动时间几乎相同。

票数 0
EN

Stack Overflow用户

发布于 2019-08-16 10:39:49

在您的项目目录中使用expo优化。您还应该确保没有添加任何额外的包,因为js包将在第一次启动时下载。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47679773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档