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

Youku Android Bag Slimming Control Thinky

时间:2023-03-05 23:45:53 网络应用技术

  稳定性,性能和包装,在移动基本用户体验领域的“三点世界”是该应用程序携带业务获得稳定,高效,低成本和快速增长的重要基石。下载转换率的袋子尺寸,提取新成本非常重要。这已成为行业的共识。近年来,极端。

  Youku在过去两年中尤其是在Android套餐的规模的持续投资,实践和积累5年,尤其是在较低的可持续治理状态下。这些思维,解决方案设计,技术建设和治理实践是统一的总结并整理并分享了它们。我希望帮助更多的学生在应用程序中负责或参与,以更好地控制包装规模。

  本文侧重于整体治理思想,依靠治理实践,并讲述了纤巧的技术,治理模型,治理策略以及背后的思维和选择。

  一开始,首先让Youku在过去5年中更改包装的大小:

  从2020年9月开始,从分水岭开始,从治理模型的角度来看,它可以分为“非常不同的样式”的两个阶段:特殊治理和正常治理。BaoSlimming治理也属于软件工程。接下来,重点介绍“手术”,“陶”和“人”的三个维度开始审查和摘要:

  从2017年初到2020年9月,总共经历了三个特殊治理和两次篮板。

  2017.05 -2018.03,第一个特殊治理。在纤细效果方面,从73MB的最高点到51MB,减肥的比例约为30%。

  2018.04 -2018.09,第一个篮板期。在此期间,“模块 - 级”软件包大小安装座用作控制方法。由于缺乏相关的分析技术支持,申请人和批准方对股票和增量状况缺乏一致的一致理解,这导致了控制的逐渐流动。减少。负责治理的学生已被撤回。尽管建筑团队仍负责关注与UP相关的事项,但几乎没有投资治理的倡议。袋子的大小接近自然状态的“野蛮生长”。

  2018.10 -2019.02,第二个特殊治理。在减小效果的条款中,最高点从80MB降低到40MB,减肥的比例为50%。除了持续积累实践经验外,技术手段的主动探索和初步降水的特征是:

  2019.03-2020.03,第二个篮板时期。在此期间,基于虚拟功能组的概念(多个模块聚集体),确定了袋子大小的能力,但不能与R&D有效合并流程。在同一时间,申请人和批准方缺乏“一个功能/业务,它被占用了多少?您可以减肥多少,有什么细节,减肥空间是多少?”对这些关键问题的共识认知导致转型成本很高,半年后的管理和控制开始变得困难。

  从增长曲线的角度来看,它可以分为两个部分:2019.09之前的6个月,这是一个缓慢的生长(尽管中间存在一个增长峰值,但很快就会受到控制)。连续控制,另一个手,因为在此期间没有大型的新框架,新功能和新业务访问;2019年后的6个月,由于诸如Flutter之类的新框架的集中爆炸,该袋子的大小具有“疯狂的飞涨”。2020.03在2020.03中,它甚至达到了最高的126MB水位。

  2020.04-2020.09,第三个特殊治理。在纤细效果方面,袋子的大小最终缩小到小于100MB。尽管这次仍然是一种特殊的模型,它与第二个特殊治理完全不同:参与:团队更广泛,不仅是核心业务团队,而且是所有客户团队。领导学生和参加同学的方式,同学和参与学生之间的合作方式。从“集中分销”和“被动完成”(承包商团队模式)来协助和输出(PVP团队模式),也就是领导学生为各种辅助工具提供更全面,更具体和更具启发性的分析能力,工具和利用体重减轻的目标,并可以将火力集中在分析和实施体重动作的分析和实施包装的大小:

  自2020年9月以来(准确,已经超过一年半),进入正常治理阶段,包装尺寸从期间开始时为100MB,并在2022年3月底逐渐减少到64.9MB(64.4MB)五月)。

  在此阶段,包装大小的容量已经完成了一个关键的演变:与研发过程无缝结合,及时对超级限制的感知以及拦截和阻塞,这大大降低了整体控制成本。在同一时间,分析技术和减肥技术的迭代,探索和应用从未停止:DEX排名优化,7Z压缩,D8,R8和其他整体减肥技术已启动。阿里的更多应用程序进一步促进了功能的快速发展和丰富。另一方面,治理策略正在逐渐改善。客户的每个研发团队都围绕着自己的行李尺寸阈值,以将袋子的大小提高到每日研发迭代的基础上,作为稳定性和性能。

  此前,通过手术,道和人的三个维度对历史进行了审查。相比之下,不难发现它们具有截然不同的特征。基于此,您可以将袋子的重量分为两种模式:特殊公式和标准化。前者很短。时间很快,后者旨在维持长期可持续维护(甚至逐渐减少)。看到这一点,可能会有一个问题:治理模式与手术之间的关系是什么?,“”?“如果您必须区分它,我认为它可以被视为不同的思维观点。还可以认为,前者是后者的较高抽象水平:“手术”的能力,选择“ tao”的原理以及选择“ tao”的选择,以及选择“ tao”和the的选择。“人类”安排提供的保证共同确定目前有哪种治理模型;反过来,它也适用,即治理模式对“手术,道和人类”的内容和边界有明确的要求。

  特殊治理通常在包裹的大小继续上升到一定价值之后设置一个特殊的项目集中时间治理。通常,许多团队和多个人员参与,同时,将有明确的项目负责人来制定严格的严格和固定的里程碑。这次,由于一段时间内的积累,将有更多由无用和冗余功能代表的减肥项目,这些功能相对容易识别和解决。因此,它通常对减肥有效。在Coursemagement和Control中,大小的篮板几乎是不可避免的。

  特殊项目治理的“精神核心”是目标优先事项。当然,没有问题,但是在此过程中,通常很容易忽略减肥转化带来的其他负面影响。例如,不适当的远程转换将带来损坏和APK施工过程的用户,大量的“苗条黑色技术”导致包装时间的显着增加。没有标准的选择和平衡,只有选择在“此时的场景”之后做出。

  正常治理意味着,在长期版本的迭代过程中,它始终可以控制增量量,并在保持包装的当前包装大小的前提下“稳定和降低”。通常,在标准化治理阶段,头部,头部问题基本上没有存在。有必要在业务功能和代码源中进行更全面,精细和深入分析和思考,以便在版本迭代的过程中逐渐“消化”。总体管理和控制,以及团队,业务和功能的形成。在治理节奏方面,整体减肥目标调整周期很长,与此同时,不再实现薄粒子大小的稀疏里程碑。它采用了一种相对宽松和灵活的方式来为特定负责任的团队和开发人员提供自主权。

  就纤细的效果而言,它可以保持当前的水位而不会反弹,甚至慢慢降低。标准化治理的“精神核心”是首选的经验。减轻日常研发过程的重量事件与稳定性(崩溃/错误等),性能(启动速度/页面开关/流利度等)以及已支付的技术项目相同除了业务需求和功能外,还要注意并考虑业务需求和功能。

  在时间,人力,节奏,效果和精神“核心”的五个纬度上,两者的比较情况如下:下面:

  标准化与特殊项目之间的关系不仅是“更好”的,因此清楚地表明它。首先,两者具有进化关系,类似于代际进化,例如“石材伪影,青铜,农业和工业”,例如人类文明。正常的治理也对生产率也是有效的。(分析和减肥技术)在持续改进的情况下,促进了生产关系(治理模型)(嗯,这种隐喻不一定是准确的)。

  其次,两者具有不同的应用程序。特殊治理用于快速减少包装的大小,而标准化治理用于低成本可持续维护或放慢速度。如果应用程序的大小较高,那么无论与同一产品相比,该应用程序的大小都更高而且,显然需要通过特殊治理的规模快速降低它,然后将归一化治理连接起来以获得“长期稳定”。如果App已经处于正常化的治理模式,但是由于某些原因,需要进一步减少,那么您需要切换到特殊的治理模式,然后在实现目标后继续恢复正常化的治理模式。

  标准化治理的相对特殊治理需要被视为一个系统的项目。总体治理思维如下:

  从特殊形式到正常化,首先更改将重点从“事物”更改为“人”:每个字节是由人(开发人员)添加的。标准化形式。该解决方案主要包括两个方面:技术支持和治理策略。两者是必不可少的。

  整个技术支持系统的核心是对包装大小的精确分析,也就是说,在APK中,对于任何物理元素(类别,资源,SOS等),在APK文件中获得其实际职业值。将执行各种合并,裁缝,优化,格式转换等。同时,APK中不同类型元素的压缩速率也不同。Errors使得很难掌握体重减轻的重点,并且无法准确预测预先体重减轻的影响,这对正常治理过程产生了非常负面的影响。

  第一个点可以减小,这是指诸如班级,资源等要素中的“不合理”项目。如果对其进行了转换或优化,则可以减小包装的大小。这些纤薄的项目很好,并且不容易通过手动发现,但是不能低估它们以积累。通过基于工具的分析的能力,他们可以快速找出这些减肥项目。另一方面,另一方面,“空间”来判断:一个功能/业务/团队,在此期间,无论目前是否稀薄,它都可以减少/增加。

  属于汇总的第二点是将APK大小拆卸到有效的负责实体。根据该应用程序中涉及的研发团队和迭代模型,负责任的实体可以是组织结构中的特定团队,也可以是业务/功能/ModulePrinCipal.int。拆卸的目的是澄清职责,即,团队/业务/功能/模块对APK大小的“贡献”是什么?

  研发过程的第三点是代码启动的“必须通过”。在此过程中,它需要具有及时的增量感知,并且超过限制后的拦截和阻止能力。只能以这种方式控制低(人力)的成本。此外,这也是分散策略的重要技术支持,可以避免许多效率低下的逐步定位调查,沟通和遵循。

  第四点辅助工具是为研发学生提供一系列有效和有效的工具,以减轻体重以提高效率并降低风险。在现在,参考分析,代码归因/热量分析,模块下载/版本号同步&查询与比较,ProgaURD比较(映射,用法)分析,APK信息查询/对比度/抗复杂性等。

  在上述技术支持系统的特定实施方面,它主要由“分析工具”和“包装尺寸刺刀容量”引入,这将在稍后引入。

  在标准化治理模式下,治理策略的核心是权力下放。特别是对于多个团队参与研究和发展的应用程序,最熟悉每个功能的人必须是(团队)同学,他们直接负责日常生活。合理,开放,透明,高效和低成本的可持续治理状况。在提供业务增长和创新的同时,它提供了更多的包装尺寸和空间,并控制了预期范围内的整个包装大小。

  分析技术遵守字节级的精神“更真实”,而对袋子的真正职业的指导原则是公平,公平,无辜的,并且实现了对不同粒径的数量占用(元素,功能,业务,业务,团队,团队,团队),Andon,它提供了一种实用有效的减肥能力来指导和判断体重减轻。LET的答案首先:为什么分析工具很重要,这很重要吗?

  首先,由于您必须减肥,因此各种“大小”就像一个阴影,例如:“ XXX模块有多大?相对于以前的版本,APK的APK增加了1MB,但与以前的版本不同,该功能带来的尺寸变化是不同的?目标? ”

  工程领域有一些著名的判断:“没有学位,没有改进”,“没有重量和没有管理”,大小分析工具的核心价值之一是提供此措施:各种测量粒度与Java类一样小,小Java类,班级,小Java类,班级,班级和小Java类,如Java类,以及一类Java,小且小,小如爪哇班级和Java class.sources,然后再到模块(JAR/AAR),然后转到独立的功能,业务甚至团队。从这个衍生工具,由于有测量,您可以履行有效的责任,制定减肥目标和有效性估计。突然开朗吗?

  其次,根据测量能力,考虑到长期的观点,在实际的减肥处理过程中,您需要回答“该应用程序更稀释到极限,其他地方可以减肥?”或从另一个角度看一个场景以查看一个场景:您负责整个减肥工作。有三个业务,您可能会发现负责与同学交流的问题。您可能会得到以下答复:

  通过上述场景,分析工具需要拥有的其他两个重要价值是:指导和判断。这些实际上是交易的不同观点,即为演员提供指导,判断被动的,将其用于减肥前的指导,并在减肥后判断。

  有效的衡量,指导和判断需求的需求应满足哪种自我文化。这是在本章中要讨论的内容和将要给出的答案。在Youku中,Android Side Bag的大型和小分析工具的名称是Franky。它出生于2020年初。它已经逐渐迭代/增强了2年以上。安德罗伊(Android)袋子的治理给治理带来了一些帮助。

  本章将围绕“测量,指导和判断”的核心价值设计。首先,您可以使用问题和答案方法进行特定分析和分解派生过程。

  谁是测量的对象?测量值是什么样的值?在Bao Slimming中,不同的方案不同,目标不相同。最薄的粒子是APK中的各种元素(Java,Java资源,十几种不同类型的Android资源,动态链接库SO),然后转到上层上层的上层是一个模块(JAR/AAR),上层是功能(由多个模块组成的独立和完整功能),业务(由多个功能组成)和团队(所有负责组织结构中的团队的业务),然后继续上升是APK(这是毫无意义的,根本不需要分析文件的大小),当然,一个小应用程序可能只需要模块上的函数聚合。

  至于测量值,删除后可以减少APK中的实际尺寸职业。某些元素的原始大小与APK大小的实际职业之间存在很大的差距。结果,不忽视纤薄行动的影响的影响,因此优先排序,指导和判断减肥动作失去了基础。结果,对“测量”的需求是:提供不同的粒径,例如元素,模块和功能,以及APK中尺寸的测量。

  指导的内容有多具体?判断公平和透明的基础是纤巧的指导,如果它仅提供了一个通用的方向,则不够,它必须非常清楚,具体和可操作。

  例如:如果我只告诉您“充分利用proguard,简化保留规则,并让更多类别被削减和困惑,那么您可以有效地减轻体重。”那么,如何使所有参加应用程序开发的学生可以根据此效率进行效率。%,数字是600英寸,比较了混乱类别受到哪个保留规则的影响”?实际的减肥过程是否更容易追溯?我相信任何开发人员都可以很好地完成此工作。

  让我们以另一个例子:“减少或远程大型图片可以有效地减肥”,“您负责APK的真实大小的模块总共有10张图片,显然有10张比后者更具启发性。提供清晰,具体,可量化和可操作的减肥项目分析,用于指导和判断减肥过程。

  此外,有两个非常现实的问题,这些问题无法避免。分析覆盖范围可以(可以找到模块的元素大小的总和,APK大小的百分比)?用于分析覆盖率,理论值应该是100%。APK施工过程没有魔术。APK中存在的所有元素都有源。当一个元素(例如资源)是由多个模块的(这里的模块是广义上的模块,例如应用程序工程,副标理工程,并引用本文)从一个公平的角度来看,多个模块中包含的重复元素应归因于每个模块。

  根据上述推导过程,我们将完善并总结:

  现在,如果您要求您回答以下问题,您能否使其变得简单,轻松舒适?

  实际上,弗兰基(Franky)是Youku自我开发软件包的规模,几乎完全意识到了拆卸后的需求。只有一件事尚未完成:APK中的元素尚未获得100%的模块所有权。YOUKU APK的分析覆盖率为99.8%至99.9%(APK 100MB至65MB)。

  弗兰基(Franky)主要由两个部分组成:用于应用程序项目的Gradle插件,以及命令行分析工具。此外,两个外部数据(不必要)两个外部数据:模块图数据,用于将模块大小汇总为大小功能/业务/团队;该代码涵盖了DatasLimlady(Slimlady:类级别未插入桩线代码覆盖统计框架)。总体体系结构如下图所示:

  Franky-Plugin的作用是在APK构造过程中收集APK的所有组成模块,以及模块中包含的各种元素。此外,它还包括混淆映射关系和无用的资源分析结果的结果。此分析结果数据和APK文件构成了命令行工具的基础(CLI)基础(CLI)基础(CLI)输入文件。对于最终的数据包大小分析,并产生特定的分析报告。

  查看这组解决方案,可能有一个问题,为什么它包含一个构建的插件。如果您可以通过命令行(CLI)工具直接分析APK,它可以更简单,更通用,不是更好吗?这是一个非常重要的一点是,只有在APK构造过程中,我们才能获得APK的组成以及每个模块包含的哪些元素。建立插头-in。当前的考虑是:尝试尽可能地将插件-in构建为“薄”,这可以减少时间累积的时间,并将主要分析功能放在独立工具上。

  分析工具看起来很简单,但是为了获得实际尺寸,APK中的100%元素可以是模块,在开发过程中仍然会有许多棘手的问题。

  首先,插件如何应用于施工过程并不是一个简单的问题。许多Android Gradle插件开发人员对兼容性的关注不多。他们认为,为特定项目实现相关功能是一件好事。这里没有讨论此主题。获得直觉认知:

  下一个核心难度是在最终APK元素中,在转换,新,删除和不变的四个“变化”情况之间涉及的APK结构中的原始元素:

  上图是基本的“变更”情况,也需要考虑一些特殊情况。对于extpleandroid:XXX属性,资源API配置有限的字符小于22,从而生成“ -v22”资源文件,AAPT嵌入式资源以生成独立资源文件等。用于删除和不变的元素,处理相对简单,相对简单,转化和新处理相对复杂:

  除这些更改外,还有一个细节:如何计算APK中每个文件的实际大小?APK本质上是zip压缩文件。每个文件都是zip条目。拉链条目占据了APK的大小和总大小。因此,需要使用它来记录每个ZIP条目的额外大小(本地文件标头,中央导向记录),并按比例地共享共享零件。以youku为例,APK的大小为65MB,zip条目是压缩尺寸为63MB(97%)。如果您不计算额外的数据大小,则只有APK的元素损失了2MB的实际大小!

  减肥项目是指导和判断价值的主要承运人。本章在弗兰基(Franky)中包含了9个重量的项目中的所有9个,其中解释了用于减肥的基本技术原理,分析效果和预防措施。

  第一个[代码]无用的类是指在运行中未使用的类。当前的非使用代码采集方法是通过在线采样方法收集代码加热数据,并筛选出具有0个初始化的类(特定实现方案来自Slimlady:班级级别没有在代码覆盖统计框架上插入桩线。这里只是前者的前一个结果)。对于具有更无用的代码的模块,在线使用率较低的问题(或完全未使用)的问题(或完全未使用)应安排实施或使用HO的动态方法进行实施。分析报告中的结果如下:

  第二个项目[代码] uncesing类是指由于保留规则的存在而尚未混淆的类。融合可以大大减少APK中代码的大小,因此除了某些特殊使用方案外,大多数类别都可以混淆。对于没有混淆的模块,可能存在一个使保持配置混淆的问题。您可以参考本文。分析报告中的结果如下:

  第三个项目[资源]超大是指真正占用的资源,该资源比APK中的某个阈值多(配置,Youku始终使用了10KB)。LARGE -LARGE -LARGE资源可以使用远程和重新设计的更等效的资源。如果是图片,您还可以使用更多的压缩图片(JPEG,WebP)或向量图来降低大小。分析报告中的结果如下:

  第四项[资源]是没有用的,是指未直接引用的资源。从总体资源使用的角度来看,可以在三个地方直接引用一个资源(请参阅本文):Java代码,通过R.RSourCetype.RsourCename(例如R.String.App_name),或通过Resourcesthe ID方法直接引用(例如0x7fxxxxxx);列表文件AndroidManifest.xml;其他资源。此外,还可以通过资源名称和键入资源来通过Resorus.getIdentifier传递资源名称和键入。运行时的性能很差。因此,不建议官员。应该注意的是,分析工具将对这种方法产生误解。对于无用的资源,应在确认尚未通过Resorus的方法后删除它。GETIDENFIER方法。分析报告中的结果如下:

  第五项[资源]多维是指包含两个以上配置的资源。在不同的配置下,有多个数据(文件),需要考虑一些特殊的纬度,例如夜间,陆地和端口。- 维资源,可以清理一些不必要的配置。分析报告中的结果如下:

  项目6 [资源]没有透明度PNG图片是指png图片中的alpha频道,但没有相关数据,或者数据中的透明度值完全不透明。对于此类型的图片,它通常可以通过使用大小来使用其他图片格式(例如JPEG)没有透明信息。在分析结果中。9类型图片已被排除在外。分析报告中的结果如下:

  第七[资源]相似性是指资源价值的高度相似性。当前分析仅包含文件基本类型资源(相对,该值仅在Resources.ARSC中存在于Resources.ARSC中,称为值基本类型资源)。对于非绘制文件资源,仅筛选相同的资源(MD5是一致的,相似性为1)。对于图像文件资源,计算相似性,DHASH算法计算图片指纹,然后计算锤式锤子。距离作为相似值。对于具有一定程度相似性的资源,内容完全相同,因此只能保留一个副本。对于具有类似图形图片资源特征信息的资源,没有明显的信息。因此,最终决定仍然需要根据业务方案来判断。分析报告中的结果如下:

  第八项[SO] STL的使用不是标准化,这是指动态链接库的不规则使用,因此在C ++ STL库上(基本知识可以参考本文),包括两种情况:Dynamic Link不均匀的STL,官方建议均匀地用于统一的usethe stl是libc ++ _共享。其他非均匀的STL包括libgnustl_shaard.so,libstlport_shard.so;静态链接STL。通过转变为动态链接,可以实现更好的减肥益处。分析报告中的结果如下:

  第九[so]无用的导出符号。动态链接库的导出符号是指SO中定义的对象,方法和全局变量,可以引用(导入)外部代码引用(导入)。无用的导出符号指其他SO(在APK范围内)中没有参考,这取决于此。当然,以下情况需要特殊处理:JNI方法,通过DLSYM模式加载和调用。对于无用的导出符号,可以将其设置为在编译时不导出。特定的操作方法不是唯一的。建议使用汇编选项fivisibility =隐藏,同时,它表明需要出口符号增加属性(可见性(“默认”)标签。时间,没有人关心,并且使用无用的出口符号继续积累。分析报告中的结果如下:

  在研发迭代的过程中,维持低成本的标准化治理模型的关键之一,其携带的三个核心值如下:

  要转到中心,您需要能够对APK尺寸进行适当的颗粒分裂,该尺寸用于刺刀阈值,检测和截距时不通过。

  促进前线。不同的问题,例如软件包的大小和代码规格,错误和其他单点问题是不同的。您无法通过局部修改完成瘦身。通常,您需要找到现有的空间,以弥补新功能的增加,“拆除东墙和西墙”。治理,从而确保最终在用户手中释放的APK大小保持稳定。正面要求刺刀在代码更改后必须“首先”扮演角色,并识别包装大小的更改。如果超过阈值,它将被拦截。此“第一次”可以根据不同应用程序的迭代模式的差异选择适当的节点。例如,YOUKU的版本迭代可以分为“现实主义集成式释放”的四个过程节点。并集成了两个部署的刺刀。

  低成本。刺刀是一个相对模糊的概念。一百个工程师可能对刺刀的特定机制有一百个理解和设计。对于刺刀本身的袋子大小的大小,它必须具有低成本维护,包括以下方面:以下方面:

  Youku在2018年建立了数据包大小的容量。随后的演变和调整朝着适合上述核心值的方向。直到2021年初,它才达到稳定且有效的成熟度。袋子尺寸刺刀由三个部分组成:弗兰基(Franky),班克(Bankou)动力平台和研发过程控制平台(CI/CD平台)。示意图如下:

  当制作和集成R&D流程(CI/CD)平台时,它们首先需要触发APK构造。Franky-Plugin作为施工期间的Gradle插件,将收集数据并将结果输出到施工产品中。隔离,过程平台中的安装插件负责收集APK和Franky-Plugin生成的文件,并将其上传到刺刀平台以备后用。

  之后,过程平台将执行访问检测。其中,数据包大小的刺刀检测将以容量平台的能力触发大型分析任务。通过调用与弗兰基相对应的命令行工具,生成了JSON格式的大型和小分析报告。通过分析分析报告并与Pre -int Team Team Threshold和缓冲区值进行比较,可以确定团队(1或更多)包含集成形式的模块(1或更多)被覆盖。获得测试结果后,过程平台中的入学测试通过或阻止了促销/集成过程。如果未通过刺刀,则刺刀可以通过减肥和转换传递,但这通常在当前版本中未完成。目前,可以申请时间限制的缓冲区通过刺刀通过刺刀来完成准备/集成。

  如前所述,有很多相关内容的内容,这似乎是抽象的。接下来,我将返回特定的减肥技术。重点不在深入的技术原则和细节的实现(主要是给出参考链接)中。已经解释和展示了Xiang稀疏技术的优势和缺点,这有助于形成整体认知。当在特定应用程序上减肥时,可以根据实际情况选择并确定优先级。

  顾名思义,Slimming技术是指可用于减肥的任何技术(解决方案),根据所需的技术,有效阶段和影响力进行全面判断,并将其分为以下三种类型:

  远程指的是一种技术解决方案,该解决方案可用于使用一系列操作,例如将原始APK的功能剥落到服务器中时下载和加载等。追求减肥的结果很容易使人不知所措,但这不是遥控本身的原始罪过。实际上,某些边缘,非核心和实验业务更适合远程转换。远程框架在行业中具有成熟的解决方案,但具体来说,仍然需要仔细考虑并反复进行抛光。无论代码限制和转换的转换是否足够低,应用程序呼叫结束,多过程,用户磁盘职业,下载线程职业,APK升级重用,下载带宽成本等。

  根据远程元素的类型和行业的一般用途,它分为三种类型:远程,远程捆绑包和远程资源。

  首先查看遥控器。动态链接库,因此和其他代码的耦合较低。它在APK中具有强大的独立性,同时占据了相对较大的APK。因此,它通常具有很高的重量输出比,因此单独远程过期。

  第二个远程捆绑包通常是远程指的是可以完全遥远的。远程部分相当于迷你APK(DEX,资源,因此)。长束束相关的技术是“悠久的历史记录”。尽管动态,插头,组件化等。尽管上下文,功能和设计思想存在差异,但技术的相似之处。借助新版本的OS,该系统加强了系统的系统。API调用,拦截和替换限制,该领域的主流技术解决方案已逐渐发展为越来越轻度的系统的方向。在实施方面,远程捆绑包更为复杂:在操作阶段,尽管系统API的入侵相对较小,但仍然有必要处理呼叫端,组件路由跳跃,背景活动和重建;施工阶段,因为有必要“分开”迷你APK,因此很难与施工系统兼容。目前,该行业有一些类似的框架。很多时候,它无法满足操作过程中的需求。

  最后一个远程资源是远程定位资源文件。您可以直接下载和使用它,并通过将资源上传到文件保管平台上。远程资源的实际应用程序场景很小,并且输入输入比率不高,因此,Youku当前没有专门开发一个框架。当然,如果需要进行大量资源进行远程转换,则可能有必要开发专门的框架。

  整个袋子的纤巧是指在APK施工阶段整体处理的一种重量 - 较低的技术。它可以对所有APK元素(包括两个或三个党派SDK)生效。可以将功能总结为“中间的拦截,总体效应”。这正是因为上述特征是这种类型的范围是这种类型的范围Slimming具有广泛的影响力。因此,当第一个应用程序应用于应用程序时,如何控制验证成本和在线风险非常关键。请注意,这不是技术解决方案本身的特征,而是特定代码的问题。在工程效率方面,对代码的质量没有影响,施工时间通常会增加。一些包装技术将改变APK中的目标元素形式,因此对各种相关问题的分析将带来一定程度的效率。

  这里有14袋减肥技术。其中,Android的官方功能尚未提供给Youku的自我开发的Gradle插件,该插件目前正在开源准备中。

  一个点减小意味着,在源代码的级别上,可以通过删除无用,冗余和不合理的校正来实现减肥。它的核心功能可以总结为“源处理,轻巧和健康”。由于有必要在源代码级别上操作,因此只能用于源代码工程的自发代码,第二和第三- 无法实现被动代码的政党SDK(实际上,SDK也可以在字节代码级别进行转换,并且可以转换非常规的方案)。此外,此外,也称其为“单点”缩小的原因是因为需要转换,验证和在线进行每个特定的稀释剂,因此最好使用最熟悉和负责该代码的同学。和发展同学,转换周期通常很长。同时,它的减小效果通常很慢。

  这是9个单点减肥技术。在Youku的自我开发的BAO小型分析工具中,已经实现了相应的检测和分析功能。有关详细信息,您可以参考上一篇文章的“分析技术”一章。这里简单地列出:

  此外,使用无用和冗余的清除本身是改善代码质量的方法,这也可以显着降低工程腐败的程度。同时,施工时间将有积极的收入。“拟合”一系列文章。

  Slimming是移动应用领域的长期工程问题。不管它是否引起关注和治理,其影响始终是客观地存在。

  对于任何新的需求而言,要增加0代码几乎是不可能的,因此包装的大小自然是与代码增量增加的“对抗”,但是它不那么稳定且性能。这很容易被忽略。如果袋装的重要性不取决于应用程序开发团队,那么对一致性和充分决心的认识就足够了。即使相关技术,刺刀能力和治理策略得到了改善,也总是有利于不败的。

  在上一篇文章的归一化治理模型下,各种技术支持和治理策略是“考虑包装的大小”到每个研发同学的代码思维中的本质,因此在编码中,Stageminimimimimimimimimimime不合理的代码的生产尽可能多地。“不要生产”比“重新政府”,在技术能力的研究和开发方面,我恐怕它是一个以上的级别。将代码对包装大小的影响结合在一起。

  “穷人是一个人,帮助世界很好。”当袋子的治理已经处于良好的正常治理状况时,袋子的本质仍然可以改善应用程序工程师体验,工程(代码)质量和其他方面的不合理代码,所有的代码清洁类型,类型的代码清洁,优化和减肥作为“保险丝”实际上是对应用程序的整体项目和代码健康的有效改进,它也是促进功能功能重复使用的重要促进力量。这些代码和这些代码的改进和从长远来看,业务功能设计水平还将对应用程序稳定性,性能,研发效率等进行全面改进,并在促进中发挥良好作用。

  尽管YOUKU的包裹规模治理已经处于可持续规范化治理模型中,但技术探索与技术探索和现有技术的完整实施尚未结束。现有的现有技术问题仍然需要挖掘。例如,可以探索许多方向,用于动态链接库的检测和分析技术。如何为混乱规则提供更有效的辅助工具,进一步减少分析,转型,验证,验证成本和风险也是一件非常具有挑战性的事情;对于各种中间件,如何制作更友好的设计和迭代设计和迭代,这也超出了个人和单一组织可以完成的范围,但是如何如何可能值得考虑带来更好的影响和更好的影响和变化。新技术的趋势和影响还需要注意及时关注:Androidx中包含的新组件和新开发模型,各种移动电话制造商SDK的特征的特征将继续引入,等等。带来新的机会和挑战。

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