当前位置: 首页 > 网络应用技术

可以在中国使用Android推送基线配置文件吗?我要求Google工程师验证!

时间:2023-03-07 23:45:09 网络应用技术

  您好,我是Zhu Tao。这是“沉思”的第三篇文章。

  今天,让我们看一下基线概况的底部原理。

  在今年的Google I/O会议上,Android正式推出了基线配置文件,这不仅在Android和Jetpack的主题演讲中提到了这一点。即使是Jetpack组成的主题,Android Studio也都有其数字。

  乍一看,我被它给了我!真是太棒了!而且该应用程序更加复杂,重大改进!老实说,乍一看,我什至不相信它。

  当正式引入基线轮廓时,放置了一张图片,这似乎在中间起着重要作用。

  Google Play?Intercectioni在我心中感到很冷。您能在中国使用如此出色的事情吗?我很害怕,以至于我急忙找到了该文件,并仔细研究了基线配置文件的用法和原则。

  它可以在中国使用基线配置文件,但是云概况不可用。

  为了保险,我还在Twitter上找到了Google工程师,另一方证实了我的想法。

  没关系!学习!

  实际上,基线配置文件不是新事物。它不是喷气背包库,它只是Android系统中存在的文件。

  在这里,我们必须从Android系统的开发开始。

  看到这一点,您是否已经猜到了基线配置文件的底部原理?

  不难找到吗?结束不一定是最佳的。

  Google的想法实际上非常简单:让开发人员提前计数热代码,然后将代码键入APK,然后将相应规则保存在此目录中。总的来说,它分为两个步骤:1。统计热点代码;2.将规则保留在特定目录中。

  基线配置文件实际上是一个文件。它将记录我们应用的热代码,该代码最终放置在APK目录中。与之,Art Virtual Machine可以执行相应的AOT汇编。

  尽管我们还可以手动将相应的方法添加到基线配置文件中,但Google建议我们在JetPack中使用MacRobench Marks。这是Android中的性能优化库。有了这个库,我们可以:

  唯一需要注意的是,我们需要在root之后在AOSP 9.0+系统上收集有关热代码的信息。最后,Macrobenchmark将将统计热代码信息放在文件中。

  我们获取此统计数据的文档并将其重命名并将其放入项目中。

  在先前的分析之后,我们知道基线需要写入系统的特定目录以指导AOT编译。这是如何做到的?

  目前,我们需要使用另一个JetPack库:profileinstaller。从其名称来看,我们可以看到它的函数是在系统目录中编写apk中的基线。

  它的用法也非常简单:

  引入依赖性,无话可说,常规操作。然后是初始化设置。

  可以看出,它是通过集成的androidx.startup库来初始化的,该库使用内容提供商的想法,这也是常规操作。LET的分析源代码!

  通常,ProfileInstaller的代码结构非常简单:

  通过对先前XML的分析,我们知道它必须是该功能的入口,让我们看一下其逻辑。

  然后,让我们看一下如何实现延迟:

  可以看出,为了防止应用程序正常执行的概要文件的写入,它被延迟约5秒钟。最后,将执行执行真实的写作操作。

  在这里,程序将创建一个带有许多线程的线程池,然后将执行过程交给ProfileInstaller以编写配置文件文件。

  主要逻辑是确定当前是否被迫编写配置文件文件(正常情况不是强制性的),以及是否以前写了。

  最后,要遵循关键逻辑!让我们看一下它的逻辑。

  从上面的注释中,我们可以看到主要是确定当前设备是否支持配置文件文件的编写,如果支持,它将继续。

  到目前为止,我们的整个基线资料技术解决方案已经分析!

  在研究基线概况的过程中,我还发现了一些小细节,每个人都可能需要注意。

  谁是这个故事的特定来源?无论如何,我忘记了Google工程师所说的。

  实际上,由于其基本原则,它具有JetPack copose.com的起源,因此其核心代码经常被调用,因此性能要求很高。

  在开发Google内部的JetPack组成的过程中,他们发现:组成的应用程序将在初始安装和启动阶段中被卡住!。

  为什么是这样?

  您肯定可以猜测,对吗?没错!因为艺术默认情况下,它不会编译构成的核心代码,而是由JIT执行。这是生命的威胁。就像构图底部的快照系统和插槽表一样,它们是热代码。他们会经常在短时间内被调用。JIT根本无法满足撰写的性能要求。

  该怎么做?当然是基线概况!实际上,这是第一个最早在2021年撰写的JetPack首次介绍。在2022年的Google I/O会议上,今年是由该官员正式推广的。

  多亏了Android团队,让我们的开发人员有一个新的视角来优化应用程序的性能。

  好的,谢谢您的阅读,让我们...嗯...我不知道什么时候写下一篇文章,无论如何,下次再见!

  原始:https://juejin.cn/post/7104230480391864356