Josh 将应用启动时间缩短了 30%,客户留存率提高了 30%
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
Josh 于 2020 年 8 月发布,是印度开发的一款短视频应用。它也是印度增长最快的短视频应用之一,月活用户数超过 1.24 亿,日活用户数超过 6,000 万。
对于任何应用开发者来说,针对各种设备(高端、中端、低端)优化 Josh 并保持标准体验都是一项艰巨的任务,Josh 的开发者从一开始就明白这一点。改进 Android Vitals 是该公司短时间内取得的一项重要任务,而该公司重视通过缩短应用启动时间和响应速度来提升用户满意度。
此外,应用响应速度和启动时间也很重要,因为视频是用户与应用互动和使用的主要广告格式。视频流中的任何卡顿或不同互动的中断都可能很快导致用户失去兴趣并退出应用。
通过投资提升应用启动时间性能,Josh 将普通用户的应用启动时间缩短了 30%,在旧款设备和低端设备上有大约 10% 的用户的应用启动时间缩短了 3 倍。
面临的挑战
Josh 应用见证了快速增长,在不到一年的时间内,月活用户数 (MAU) 超过 1 亿。通常,在推出由产品主导或事件主导的功能的竞争中,应用优化就位于后方。Google 的应用审核和结构性反馈帮助他们及早发现这些问题,并为问题找到解决办法。
具体做法
在监控 Android Vitals 时,发现了改进应用启动的机会。该团队决定优先缩短冷启动时间,因为这样会自动缩短温启动和热启动时间。
借助多种自定义跟踪记录、systrace、Android Studio 性能分析器和 Perfetto,该团队能够进行广泛的调查并找出瓶颈问题。很明显,应用类的 onCreate 和其他同步方法所花费的时间是可以优化的。
以下是该团队的具体做法 -
- 对在应用启动期间执行的每个代码块进行性能分析。
- 使用 Perfetto、Systrace、Dumpsys 等 Android 性能工具分析系统跟踪数据。
- 我们研究了第三方 SDK 在应用启动期间的影响,并停用了部分第三方 SDK 的自动启动功能。
- 淘汰了旧版库
- 部分模块延迟并在后台执行
- 缩减了启动时启动画面上使用的可绘制对象的大小,并针对屏幕尺寸优化了它们
通过单独测试以上所有项目、模拟冷启动和集成新的 Jetpack Macrobenchmark 库来确认它们对应用的积极影响。
成果
这些变化不仅让所有指标实现了即时提升,还有助于提升整体用户体验,并给 Josh 的开发团队带来宝贵的经验。
- 跳出率和留存率的提升帮助 Josh 留住了与基准相比超过 100 万的用户。关注这两个指标也提升了应用内的整体互动度。
- 在应用发布后,启动方面的改进后,Play 商店的评分呈现出上升趋势。
- 对于老款设备和低端设备,应用启动时间缩短了 30%;对于旧款设备和低端设备用户,应用启动时间缩短了约 10%,大大提升了这些应用的响应速度。
更重要的是,这项改进 Android Vitals 的练习将整个团队凝聚在一起,增强了团队(尤其是初级成员)的动力。它强化了 Vitals 的重要性,甚至还促使该团队在其他应用中运用了一些经验教训。
“当生态系统中的合作伙伴齐心协力时,整个生态系统共同成长。数据和分析的力量前所未有。作为一个以创作者为先、以内容为主、以消费者为中心的平台,我们一直致力于打造极度依赖于应用的稳定性打造的最终用户体验。Josh 见证了该工具发布后的快速增长。通过与 Google Play 团队密切合作,我们得以尽早发现并解决应用稳定性和优化等方面的难题。通过与 Google 合作,我们不仅提升了稳定性,还提高了用户留存率和互动度”
- Shailendra Sharma,VerSe Innovation 产品和工程高级副总裁。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2022-02-08。
[null,null,["最后更新时间 (UTC):2022-02-08。"],[],[],null,["# Josh sees increased customer retention by improving app startup time by 30%\n\nJosh is a made-in-India, short-video app launched in August 2020. It is also one of the fastest growing short-video apps in India with over 124 million MAUs and 60 million DAUs.\n\nOptimizing Josh across a range of devices (high, mid, low end) and maintaining a standard experience across all of them is a tall order for any app developer, and the developers at Josh understood this from the very beginning. Improving Android Vitals was a major task in their sprints and importance was given to creating user delight by improving the app startup time and responsiveness.\n\nApp responsiveness and startup time were also important as video was the primary format users engaged with and consumed on the app. Any sputtering in the video stream or breaks in the different interactions could quickly result in the user losing interest and quitting the app.\n\nBy investing in app startup time performance, Josh improved app startup time by 30% for the average user and became 3x faster for \\~10% users on older and low end devices.\n\n### The Challenge\n\nJosh app has witnessed a rapid pace of growth to over 100 million MAU in less than a year. Often in the race to push out product-led or event-led features, app optimization takes a back seat. App audits and structural feedback from Google helped them identify these issues early on and lay down a path to fix them.\n\n### How They Did It\n\nWhile monitoring Android vitals, an opportunity to improve app startup was identified. The team decided to prioritize improving the cold startup times, as this would automatically improve the warm and hot start times.\n\nUsing multiple custom traces, systrace, Android Studio Profiler and Perfetto, the team was able to do an extensive investigation and identify the bottlenecks. It was clear that the time taken by the Application class' onCreate and other synchronous methods could be optimized.\n\nHere's what the team did specifically -\n\n- Profiled every block of code that executes during App startup.\n- Analyzed system traces using Android performance tools like Perfetto, Systrace, Dumpsys etc.\n- Impact of 3rd party SDKs during app startup was investigated and autostart of some 3rd party SDKs was disabled.\n- Eliminated legacy libraries\n- Some modules were deferred and executed in the background\n- Reduced the size of the drawables used on the splash screen on startup and optimized them for screen size\n\nAll the above were thoroughly validated by testing in isolation to confirm their positive impact on the app, emulating cold starts and integrating the new Jetpack [Macrobenchmark](https://developer.android.com/studio/profile/macrobenchmark-intro) library.\n\n### Results\n\nThese changes didn't just lead to an immediate improvement across all the metrics, it also helped enhance overall user experience, along with invaluable learnings for the development team at Josh.\n\n- Improving bounce rates and retention helped Josh **retain 1M+** users compared to the baseline. Focusing on these two metrics improved the overall engagement within the app as well.\n- Play Store **ratings showed an upward positive trend**, post the launch of the app with startup improvements.\n- App startup time improved by **30% for the average user and became 3x faster for \\~10% users on older and low end devices**, thereby helping improve app responsiveness significantly for these users.\n\nMore importantly, this exercise in improving Android Vitals brought the whole team together, increasing the motivation of the team, especially the junior members. It cemented the importance of Vitals and even led to the team using some of the learnings in their other apps.\n\u003e *\"When partners in an ecosystem come together, the ecosystem grows together. The power of data and analytics is unprecedented. As a creator-first, content-forward and consumer-focused platform, we have always focused on creating the ultimate user experience, which relies heavily on the app's stability. Josh witnessed immediate accelerated growth following its launch. Working closely with the Google Play team helped us identify and rectify challenges like app stability and optimization early on. Our efforts with Google have helped us drive improved stability and enhancements in user retention and engagement\"*\n\u003e\n\u003e **-- Shailendra Sharma, SVP Product and Engineering, VerSe Innovation.**"]]