CN112889026A - 用户界面资源文件优化 - Google Patents

用户界面资源文件优化 Download PDF

Info

Publication number
CN112889026A
CN112889026A CN201980068477.4A CN201980068477A CN112889026A CN 112889026 A CN112889026 A CN 112889026A CN 201980068477 A CN201980068477 A CN 201980068477A CN 112889026 A CN112889026 A CN 112889026A
Authority
CN
China
Prior art keywords
resource
computer
resource file
application
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980068477.4A
Other languages
English (en)
Inventor
瑞安·迪尼亚尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
eBay Inc
Original Assignee
eBay Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by eBay Inc filed Critical eBay Inc
Publication of CN112889026A publication Critical patent/CN112889026A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文所描述的技术减小了软件应用的大小。在一些实施方式中,应用的一个或多个资源文件的大小被减小。资源文件包括限定应用的元素的键/值对。在一些实施方式中,对应用的源代码进行分析,以确定资源文件中的条目是否可以被移除。例如,可以对应用的源代码中的初始化函数进行分析,以确定从资源文件加载的值是否在使用之前被替换。例如,具有颜色属性的按钮可以被资源限定为灰色,但是后续在初始化函数中被设置为橙色。在这种情况下,将按钮限定为灰色的资源条目是多余的,并且可以被安全地移除。本技术允许从资源文件中移除条目,即使源代码引用了该条目。

Description

用户界面资源文件优化
背景技术
现代软件应用可以包括大量特征。因此,这样的应用的大小可能非常大,有时数百兆字节或甚至千兆字节。因此,软件应用可以消耗大量计算资源,例如存储空间。当计算设备之间传输大型应用程序时也可以消耗大量网络带宽,从而导致大量的货币成本。当存储有限时,与较小的应用相比,用户也可能优先删除大型软件应用。
先前已经利用许多技术来减小软件应用的大小,包括死代码清除、文件压缩和特征去除。然而,这些技术不总是适用的或有效的。例如,在编译期间应用死代码清除,因此其不影响以非编译(即解释)语言编写的代码。类似地,在下载到客户端设备之后“及时”编译的代码不会减小下载的大小。死代码清除还由于依赖于代码流分析而受限,其认为在稍后被应用引用的情况下移除死代码是不是很安全。文件压缩的有效性受到被压缩数据的类型的限制,并且具有需要在客户端上昂贵的解压缩步骤的额外花费。
然而,即使已经应用了这些先前技术,用户和生产者仍然可以从进一步减小的软件应用大小获益。因此,仍然存在对进一步减小软件应用大小的需求。关于这些和其他考虑,提出了本文中做出的公开内容。
发明内容
本文所描述的技术减小了软件应用的大小。一般而言,本文所公开的技术可以通过对源代码和资源文件的分析来减小应用的大小,所述分析使得能够从资源文件中移除在运行时期间被确定为重复的或未使用的数据。减小文件大小具有许多技术益处:提高内存、处理和电力效率。减小下载大小——通过网络传输以将软件应用分发至客户端设备的字节数,以及安装大小——用于在客户端设备上存储应用的字节数。终端用户体验到较快的下载时间、较快的启动时间和增加的响应性。开发者在降低分发成本的同时吸引并保留性能敏感的客户。
在一些实施方式中,减少了一个或更多个资源文件的大小,一个或更多个资源文件例如但不限于
Figure BDA0003022125520000021
或故事板(storyboard),或
Figure BDA0003022125520000022
文件。资源文件包括限定应用的元素的键/值对。例如,资源文件可以限定视图的大小和位置、按钮的颜色或字体的粗细和样式。通常,资源文件由可视化设计器生成,该可视化设计器可以是使得能够使用鼠标和键盘输入构建用户界面的应用程序。应用可以具有数十、数百或更多个资源文件,使得即使稍微减小资源文件的大小,也会对应用的大小具有很大的影响。
在一些实施方式中,对应用的源代码进行分析,以确定应用使用的资源文件中的条目是否可以被移除。可以对应用的源代码中的初始化函数进行分析,以确定从资源文件加载的值是否在使用之前被替换。例如,具有颜色属性的按钮可以被资源限定为灰色,但是稍后在执行时通过初始化函数设置为橙色。在这种情况下,将按钮限定为灰色的资源条目是多余的,并且可以被安全地移除。在该实施方式中,即使应用的源代码包含对条目的引用,也可以从资源文件中移除条目。
通过应用本文所讨论的技术,对于一组大小总计为1.5mb的已经高度优化的资源文件,已经观察到实际节省了50kb。然而,可以基于给定应用中包括的资源文件的数目、那些资源文件的大小、具有被覆写的值的元素的频率等来实现较大或较小的节省。这改进了对孤立的资源文件进行分析的现有技术,或者基于以下工具的现有技术:该工具仅移除未被应用引用的值。
应当理解,上述主题可以被实现为计算机控制的装置、计算机实现的方法、计算设备,或者被实现为诸如计算机可读介质的制品。通过阅读下面的具体实施方式并查看相关附图,这些特征和各种其他特征将是明显的。
提供本发明内容以简化的形式介绍了一系列构思,这些构思将在下面的具体实施方式中进一步描述。本发明内容不意图标识所要求保护的主题的关键特征或必要特征,本发明内容也不意图限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决本公开内容的任何部分中指出的任何或所有缺点的实现方式。
附图说明
参照附图描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项目。
图1示出了用于减小软件应用的大小的示例性系统。
图2示出了用于生成针对图形用户界面的资源文件的示例性可视化设计工具。
图3示出了优化之前的示例性资源文件。
图4示出了示例性初始化函数,其被分析以确定可以从示例性资源文件安全地移除的键/值对。
图5示出了已经移除多余的键/值对的示例性资源文件。
图6示出了用于减小软件应用的大小的示例性过程的概述。
图7示出了通过从资源文件中移除在初始化函数中覆写的值来减小软件应用的大小的示例过程。
图8示出了通过对元素和元素的属性进行重新排序以使相邻元素之间属性交叠最大化来减小应用软件的大小的示例过程。
图9示出了通过从资源文件中移除未引用的占位符值来减小应用软件的大小的示例过程。
图10示出了能够执行本文描述的软件部件的计算机的示例计算机架构的其他细节。
具体实施方式
下面的具体实施方式描述了减小应用的大小的技术。技术益处包括提高内存、处理和电力效率。减小下载大小——通过网络传输以将软件应用分发至客户端设备的字节数,以及安装大小——用于在客户端设备上存储应用的字节数。终端用户体验到较快的下载时间、较快的启动时间和增加的响应性。开发者在降低分发成本的同时吸引并保留性能敏感的客户。
在常见的开发场景中,通过诸如
Figure BDA0003022125520000031
Figure BDA0003022125520000032
Visual
Figure BDA0003022125520000033
的开发者工具生成资源文件。例如,Xcode允许开发者用键盘和鼠标可视化地限定作为用户界面的一部分的图形元素的大小、位置、颜色、文本以及其他属性。这些属性存储在资源文件中,使得在运行时表示元素的对象可以像在Xcode中限定的那样被重新创建。非可视化元素也可以具有在资源文件中限定的属性。
在资源文件中,资源通常存储为按元素分组的键/值对。元素可以嵌套(nested),从而允许限定元素树。例如,‘UI视图’元素可以包括针对‘界限’(边界)={0.0,0.0,375.0,50.0}和‘中心’={187.5,85.0}的键/值对。除了限定字面值(literal values)之外,元素还可以限定‘子视图’,‘子视图’指向各自具有其自己的键/值对列表的一个或更多个子元素。‘UI视图’元素可以具有子标签、子按钮或其他图形元素。
在一些实施方式中,在运行时,与元素相关联的键/值对被用于对相关联的运行时对象(runtime object)进行实例化(instantiate)。在一些实施方式中,在资源文件中关联被限定为连接的列表,即将类成员变量映射到资源文件中的元素的列表。基于该映射,将值从资源文件中复制到相应的对象属性。例如,资源文件可以包括文本框元素,该文本框元素具有被限定为“the quick brown fox jumps over the lazy dog”的文本属性。以这种方式,在运行时,相应文本框对象的‘文本’属性被设置为该字符串。在一些实施方式中,这个加载过程发生在执行用户定义的初始化函数之前。
然而,一旦调用了用户定义的初始化函数,应用可能会覆写源自资源文件的值。这样做可能出于若干原因:为了本地化字符串;为了实现UI定制(例如‘皮肤’);因为存储在资源文件中的值是开发者工具所插入的从不用于使用的默认值;或任何其他原因。
上面的讨论描述了下面讨论的用于减小软件应用大小的所要求保护的技术的背景。如果在初始化函数内发生赋值,则从资源文件加载的值将在其被应用的其余部分使用之前被覆写,因此键/值对可以从资源文件安全地移除。继续该示例,在初始化函数中,如果开发者用字符串“One fish,two fish,red fish,blue fish”覆写了文本框对象的‘文本’属性,则字符串“the quick brown fox jumps over the lazy dog”可以从资源文件安全地移除。然后,在执行时,将从资源文件加载文本框对象的其他所有属性,例如位置、大小等,但不是文本本身。因此,将生成文本框对象,就像“the quick brown fox jumps overthe lazy dog”最初从未被添加至资源文件一样。
可以对存储在资源文件中的其他信息进行类似的优化。例如,描述元素状态(例如元素是隐藏的还是可见的)数据可以被编码在资源文件中。如果在初始化函数中显式地设置了该状态,从而导致来自资源文件的值被覆写,则可以移除资源文件中的状态值而不影响应用的执行。类似地,复选框状态可以具有由资源文件设置的、在初始化函数中被覆写的默认值,从而允许从资源文件删除表示该状态的资源值。如果确定图像或对图像的文件路径引用在初始化函数中被覆写,则可以类似地从资源文件删减(prune)图像或对图像的文件路径引用。
在一个实施方式中,当应用以
Figure BDA0003022125520000051
Figure BDA0003022125520000052
平台为目标时,可以对诸如‘ViewDidLoad’或‘AwakeFromNib’的初始化函数进行分析。然而,类似地设想了在从资源文件初始化之后执行、但在任何其他用户定义的代码之前执行的任何用户定义的函数。
如上所讨论的,在一些实施方式中,开发者工具生成资源文件,该资源文件包括在设计时使用但不在运行时使用的值。这些值可以是由设计工具引入的默认值,或者其可以由开发者在设计时添加,以更好地可视化图形元素在运行时看起来的样子。对于传统的代码流分析,这些默认值被应用引用(即,由默认值填充的属性被应用引用),因此用于标识未使用的值的先前技术将不会将这些替换的值识别为多余的。
现在转向图1,示出了用于减小软件应用102的大小的示例性系统100。如所示出的,系统100可以包括实现资源文件减小器112的计算设备101。在一些实施方式中,资源文件减小器112是软件部件,该软件部件对应用软件102的源代码114进行分析,以识别从故事板108和/或资源文件110(a)、110(b)等中移除条目的方式。所得到的故事板和资源文件由故事板108’和资源文件110(a)’和110(b)’等表示。以这种方式,已经至少部分地从源代码114编译的应用102的大小被减小。应用102的减小版本在图1中由应用102’表示。在应用转变时,可执行代码104、图像106以及应用中包括的其他文件类型保持不变。
现在转向图2,示出了示例性可视化设计工具200,其用于生成由所公开的实施方式优化的资源文件。例如通过将诸如UI视图216、标题标签238、中心图像240、描述标签242和提交按钮246的部件拖放至画布上,来可视化地设计图形用户界面。然后,开发者可以移动、调整大小、删除或以其他方式编辑图形元素。例如,开发者可以编辑所选择的图形元素的属性208。
如所描绘的,正在编辑描述标签242的属性,例如文本250、颜色252、字体254、动态类型256、启用状态258、隐藏状态260和对齐262。状态,例如布尔值启用258和隐藏260,可以用复选框指示。对于每个图形元素,根据可视化编辑器206内的图形元素的位置导出位置、大小和其他属性,并且将其存储在相应的资源文件110中作为键/值对。类似地,属性窗口208中列出的属性被存储在相应的资源文件110中作为键/值对。
在一些实施方式中,元素树204描绘了由开发者布置的图形元素的层级。该层级反映在所生成的资源文件110中。如所描绘的,图形元素UI视图216是表示可视化编辑器206中描绘的顶级图形元素的父元素。子元素包括登录_头部(Login_Header)218、标题标签238、视图222、中心图像视图240、描述标签242、提交按钮246和浏览事件按钮236。中心图像视图240自身具有包括约束226的子图形元素,中心图像视图240包括宽度80(像素)228和高度80230。
现在转向图3,示出了示例性资源文件110。资源文件110包括按元素分组的一系列键/值对。在整个本公开内容中,术语“属性”、“条目”和“键/值对”在提及资源文件时可互换使用。每个元素被编号并且具有名称(例如“0:NSObject”)。在图3示出的描绘中,以“<键>=<值>”的形式显示键/值对,其中键是名称,值可以是数据或对另一元素的引用。然而,资源文件可以以任意数量的方式编码,经常是压缩的或编码的二进制格式。
资源文件110描绘了由编译器生成的资源文件,但是在本文所述的优化被应用之前。例如,元素42“UI标签”具有键/值对“UI界限={0.0,0.0,42.0,21.0}”。该属性表示UI标签图形元素的边界,并且是存储在资源文件中的数据文字的示例。同时,条目42(“UILabel”)下的“UI文本”键具有“@14”的值,其中‘@’符号指示“14”是指资源文件的元素14(即“14NSString”)。
现在转向图4,示出了示例性初始化函数402。初始化函数402表示用户生成的代码(而不是由诸如可视化设计工具200的工具生成的代码)。在一些实施方式中,响应于从元素的资源文件110加载值,针对图形元素执行初始化函数402。由于在任何其他用户生成的代码之前被执行的性质,在初始化函数402期间被覆写的任何值都是多余的,并且因此可以从资源文件102中安全地删除。
例如,“self.descriptionlabel.text”是正在加载的视图中包括的“描述标签”元素的属性。该属性的值已经被设置为从资源文件102中取得的值,例如“the quick brownfox jumped over the lazy dog”。然而,通过确定“描述标签”元素的该属性在初始化函数中被覆写,资源文件减小器112可以推断出包含“the quick brown fox…”的条目可以被移除。
可以对存储在资源文件中的其他类型的信息执行类似的分析。例如,“self.browserEventsButton.hidden=NO”将浏览事件按钮的隐藏属性设置为否。当该赋值发生在初始化函数402的代码中时,无论资源文件中的值是否与初始化函数402中设置的值不同,存储在资源文件中的值都没有用。
现在转向图5,示出了已经移除了多余的键/值对的示例性资源文件110。资源文件110详细说明了如何通过资源文件减小器112修改资源文件。为了清楚起见,已移除的条目用删除线描绘,但在实际上实现时,所述条目将从资源文件中完全移除。例如描述标签242对应于资源文件中的元素42,元素42经由条目14指向字符串“The quick brown foxjumped over the lazy dog”。然而,基于该信息,可以对图4中描绘的这一行代码“self.descriptionLabel.text=NSLocalizedString(@“account_has_been_verified”,nil);”进行分析以确定“descipriptionLabel.text”属性被覆写。如上所讨论的,覆写该值的目的是无关紧要的。
资源文件110还描绘了被删除的其他类型的键/值对。例如,条目64具有属性“UIHidden=true”,该属性是基于图2所示的隐藏状态260旁边的复选框设置的。然而,初始化函数402的这一行“self.browserEventsButton.hidden=NO;”覆写了该值,从而允许该值被从资源文件110中安全地移除。类似地,元素2(NSImage)的删除被这一行“self.centerImageView.image=[UIImage imageNamed:@“success_illustration”];”启用,该行在初始化函数中覆写了图像的值。资源文件110还描绘了占位符“Filesowner”的删除,如元素1的删除线所描绘的。
图6至图9示出了用于减小软件应用102的大小的示例过程600、700、800和900。所述过程被示出为逻辑流程图中的框的集合,框表示可以在硬件、软件或者硬件和软件的组合中实现的操作的序列。在软件的上下文中,框表示计算机可执行指令,该计算机可执行指令在由一个或更多个处理器执行时执行列举的操作。通常,计算机可执行指令包括执行或实现特定功能的例程、程序、对象、部件、数据结构等。描述的操作顺序并不意图被理解为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的框以实现该过程。在整个本公开内容中描述的其他过程将相应地被解释。
图6示出了如上文关于图1至图5所描述的用于减小软件应用102的大小的示例性过程600的概述。在一些实施方式中,示例性过程600由计算设备101实现。虽然图6描述了用于减小软件应用大小的许多技术的概述,但是任何技术或技术的组合可以被独立地应用,并且以任何顺序被应用。例如,框601描述了用于从资源文件中移除在初始化函数中覆写的值的技术。该技术可以单独应用,或者与框603和框605中描述的技术组合应用。
框601描述了用于从资源文件中移除在初始化函数中被覆写的值的技术,下面结合图7更详细地讨论框601。下面结合图8更详细地讨论的框603描述了对资源文件内的元素和元素属性进行重新排序,以增加在元素的边界上并且也在相邻元素的边界上的属性的数目。下面结合图9更详细地讨论的框605描述了从资源文件中移除未被引用的占位符值。
图7示出了通过从资源文件中移除在初始化函数中被覆写的值来减小软件应用102的大小的示例过程700。在框701处,系统可以在初始化函数内识别以下变量:该变量被初始化为存储在资源文件中的值。该变量可以是与图形元素相关联的运行时对象的成员变量(即,字段、属性等)。在一些实施方式中,变量与存储在资源文件中的值之间的关联是基于存储在资源文件中的连接的列表,该连接列表将由可视化设计器设计的图形元素映射到以代码描述的运行时对象。
例如,标题标签238,标签元素,可以具有描述标签所使用的字体(例如Arial、Times New Roman等)的“字体”属性。相关联的运行时对象例如“标题标签”可以具有相应的“.font”属性。资源文件中的“字体”属性与相应的运行时对象的“.font”属性之间的对应关系可以是基于文本比较。当这样的对应关系存在时,确定资源文件的“字体”属性已经用于对运行时对象的“titleLabel.font”属性进行初始化。
在框703处,该系统对初始化函数402进行分析以确定变量(例如,成员变量“titleLabel.font”)是否被覆写。赋值语句可以以多种方式出现,例如使用重载的‘=’运算符、复制函数等。可以基于初始化函数的抽象语法树、基于文本比较等来识别赋值语句。
分配至“titleLabel.font”属性的值的来源是不重要的。对所识别的变量进行覆写的值可以是从表加载的常量,或者基于资源文件中的其他值动态生成的常量。此外,该值的数据类型是不重要的——类似地设想了字符串、数字和复杂数据类型。
在框705处,当确定该值在初始化函数中被覆写时,从资源文件中删除该值。在一个实施方式中,通过将资源文件读入内存、移除与所识别的变量相关联的键/值对、并且写出资源文件的新的修改副本,来从资源文件中删除该值。然而,还可以适当地编辑原始资源文件。
在一些实施方式中,与所识别的变量相关联的键/值对被移除。然而,可以扫描资源文件来定位指向该键/值对的任何引用(即,“@xxx”值),并且也删除这些引用。然后,在框707处,具有修改后的资源文件的应用被分发给终端用户以用于执行。
可以基于其他标准从资源文件中安全地移除条目。例如,可以从用于编译应用的源代码创建抽象语法树,并且应用代码流分析来确定从资源文件加载的值是否曾被使用过。该分析可以确定该值是否在指定的初始化函数之外被覆写,或者该值是否仅仅是未被引用。
在其他的实施方式中,可以识别和移除与孤立的用户界面(UI)元素相关联的值。孤立的UI元素可能被意外地引入,例如在实施“AB测试”之后留下。AB测试将不同版本的用户界面插入到应用中,以用于由实际终端用户来评估。基于终端用户数据,一旦识别出优选的用户界面,其余的UI元素意图被移除,但是可能会无意地保留在应用中。在这些情况下,代码流分析可以确定特定值从未被使用过,并且因此可以从资源文件中移除相应的条目。
图8示出了示例过程800,示例过程800通过对元素和元素属性进行重新排序以增加在元素的边界上、并且与相邻元素的边界上的元素共同的属性的数目,来减小软件应用102的大小。在框801处,在资源文件内识别多个资源组,该多个资源组包括按限定顺序的一个或更多个资源值。资源组可以包括元素,例如视图、按钮、标签等,但是类似地设想了资源值的任何集合。类似地,资源值可以包括属性,例如键/值对(例如,界限=“{0.0,0.0,50.0,80.0}”、激活=“真”等),但是类似地设想了其他值。
在一些实施方式中,资源集合(例如元素)中的资源值(例如键/值对)的顺序不影响运行时行为(runtime behavior),在这种情况下,资源值可以在资源文件生成之前或之后被重新排序。类似地,在一些实施方式中,资源文件中资源组的顺序不影响运行时行为,并且因此资源组可以在资源文件生成之前或之后被重新排序。
在框803处,对多个资源组进行排序,以使在相邻资源组中重复的有顺序的资源值的数目最大化。这使得相邻组能够包括重复的资源值的相同实例,从而允许从资源文件中删除重复的资源值的两个副本之一。在一些实施方式中,资源文件在单个全局列表中列出资源值,并且用指向全局资源值列表的指针和要被包括的资源值的数目(即计数)来限定元素。
例如,如果资源文件中存在三个元素,第一元素具有资源值A、B、C和D(按照该顺序),第二元素具有Y和Z,第三元素具有C、D和E,可以对元素进行重新排序以使得第一元素和第三元素相邻。此外,对元素进行重新排序以使得共有的资源值(C和D)相邻,即,最终顺序是(第一)、(第三)、(第二),而不是(第三)、(第一)、(第二)。
该优化可以应用于资源文件中任意数量的元素。在一些实施方式中,不同的排序产生不同量的资源值交叠,并且因此可以尝试一些排列或全部排列以使交叠的总量最大化。
在一些实施方式中,元素可以与一个或两个邻居完全交叠,以使得与一个或两个相邻邻居共享所有的组成资源值。在一些实施方式中,重复的资源值可以在同一方向上跨越多于一个邻居。例如,替代于具有C、D、E的第三元素,如果第三元素具有资源值C同时第四元素具有资源值D、E,则元素的最终布置可以是(第一)、(第三)、(第四)、(第二),以允许来自第一元素的资源值C和D与来自(第三)元素的C以及来自(第四)元素的D交叠。
除了对元素进行重新排序之外,还可以对元素内的资源值进行重新排序,以使沿相邻元素的重复值的数目最大化。例如,标签元素可以具有诸如“界限”={0.0,0.0,0.0,0.0}、“中心”={0.0,0.0}、“文本”=“foobar”、“字体”=“Arial”以及“文本颜色”=“红色”等的属性,而按钮元素可以具有诸如“界限”={0.0,0.0,50.0,80.0}、“中心”={0.0,0.0}、“文本”=“Ok”、“字体”=“Arial”以及“文本颜色”=“蓝色”的属性。在该示例中,五个属性中的两个——“中心”和“字体”——共享名称和值。为了促进标签与按钮之间的交叠,并且因为属性可以按任何顺序排列,因此标签元素可以使用顺序“界限”、“文本”、“文本颜色”、“中心”、“字体”,而按钮可以使用顺序“字体”、“中心”、“界限”、“文本”、“文本颜色”。以这种方式,“中心”和“字体”属性在标签元素的右侧以及相邻按钮元素的左侧。注意,因为资源值的顺序不重要,因此按钮还可以被排序为“中心”、“字体”、“界限”、“文本”、“文本颜色”,这具有等效结果。在该场景下,可以编辑资源文件,使得标签元素和按钮元素指向相同的“中心”和“字体”属性。
在框805处,移除相邻资源组中重复的资源值。在一些实施方式中,通过生成没有重复条目的资源值的新全局列表来移除重复的资源值。
在框807处,基于所确定的多个资源组的顺序来生成资源值列表。在一些实施方式中,生成包括资源组的新排序的资源文件,其中资源组中的一些或全部由资源值的新全局列表限定。
图9示出了通过从资源文件中移除未被引用的占位符值来减小软件应用102的大小的示例过程900。
在框901处,在资源文件内识别占位符元素。资源文件可以包括本身不是资源、但是用作为针对一个或更多个资源的占位符的占位符值。例如,文件所有者和第一响应者占位符出现在所有.nib文件中。它们在视图(包含诸如按钮、标签等的图形元素的画布)与源代码中所引用的类名称之间建立连接。这是应用的源代码可以引用资源文件中的属性的一种方式。然而,存在着源代码引用资源文件中的属性的其他方式,使得特定占位符元素占用空间而不提供有用的功能。
在框903处,确定是否正在使用占位符值。在一些实施方式中,通过搜索资源文件中包括的连接的全局列表来确定占位符值未被使用。如果任何连接具有作为连接的源或目的地的占位符,则标识文件所有者的数据不能被移除。否则,可以从资源文件中删除占位符。在一些实施方式中,从资源文件中移除占位符条目是在编译后执行的,以避免由需要占位符值的编译器强制执行的规则。
在框905处,当确定占位符元素未被使用时,从资源文件中移除占位符元素。
图10示出了能够提供本文描述的功能的计算机的示例计算机架构的其他细节,诸如例如参照本文所述的资源文件减小引擎112或它的任何程序部件而描述的功能。因此,图10示出的计算机架构1000示出了针对服务器计算机、或服务器计算机的网络、或适于实现本文描述的功能的任何其他类型的计算设备的架构。计算机架构1000可以用于执行本文所呈现的软件部件的任何方面。
图10示出的计算机架构1000包括:中央处理单元1002(“CPU”);系统存储器1004,其包括随机存取存储器1006(“RAM”)和只读存储器(“ROM”);以及系统总线1010,其将存储器1004耦接至CPU 1002。ROM 1008中存储有基本输入/输出系统,该基本输入/输出系统包括有助于在计算机架构1000内的元件之间例如在启动期间传送信息的基本例程。计算机架构1000还包括用于存储操作系统1014、其他数据和一个或更多个应用程序的大容量存储设备1012。该大容量存储设备1012还可以包括资源文件减小引擎112。
大容量存储设备1012通过连接至总线1010的大容量存储控制器(未示出)而连接至CPU 1002。大容量存储设备1012及其相关联的计算机可读介质为计算机架构1000提供非易失性存储。尽管本文所包含的对计算机可读介质的描述是指大容量存储设备,例如固态驱动器、硬盘或CD-ROM驱动器,但是本领域的技术人员应当理解,计算机可读介质可以是能够由计算机架构1000访问的任何可用的计算机存储介质或通信介质。
通信介质包括计算机可读指令、数据结构、程序模块、或调制数据信号(诸如载波)或其他传输机制中的其他数据,并且包括任何传递介质。术语“调制数据信号”是指其一个或更多个特性以下述方式而改变或设置的信号:将信息编码在该信号中的方式。作为示例而非限制,通信介质包括:有线介质,例如有线网络或直接有线连接;以及无线介质,例如声学、RF、红外和其他无线介质。以上的任何组合也应包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以任何方法或技术实现的用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的易失性和非易失性、可移动和不可移动介质。例如,计算机介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或可以用于存储期望的信息并可以由计算机架构1000访问的任何其他介质。出于权利要求书的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变型本身不包括波、信号和/或其他瞬态和/或无形通信介质。
根据各种技术,计算机架构1000可以使用通过网络1050和/或其他网络(未示出)到远程计算机的逻辑连接在联网环境下操作。计算机架构1000可以通过连接至总线1010的网络接口单元1016而连接至网络1050。应当理解,网络接口单元1016还可以用于连接至其他类型的网络和远程计算机系统。计算机架构1000还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器1018,该多个其他设备包括键盘、鼠标和电子笔(图10中未示出)。类似地,输入/输出控制器1018可以向显示屏、打印机或其他类型的输出设备(图10中也未示出)提供输出。还应当理解,经由通过网络接口单元1016到网络1050的连接,计算架构可以使资源文件减小引擎112的产品能够分发给客户。
应当理解,本文所描述的软件部件在被加载到CPU中并且被执行时,可以将CPU1002和整个计算机机构1000从通用计算系统转变成定制的专用计算系统,以促进本文所呈现的功能。CPU 1002可以由任意数量的晶体管或其他离散电路元件构成,这些晶体管或其他离散电路元件可以单独地或共同地假定任意数量的状态。更具体地,CPU 1002可以响应于本文所公开的包含在软件模块内的可执行指令而作为有限状态机进行操作。这些计算机可执行指令可以通过指定CPU 1002如何在状态之间转变来转变CPU 1002,从而转变构成CPU 1002的晶体管或其他离散硬件元件。
对本文所呈现的软件模块进行编码也可以转变本文所呈现的计算机可读介质的物理结构。本说明书的不同实现方式中,物理结构的特定转变可以取决于各种因素。这样的因素的示例可以包括但不限于:用于实现计算机可读介质的技术;计算机可读介质是被表征为主要存储装置还是被表征为次要存储装置等。例如,如果计算机可读介质被实现为基于半导体的存储器,则可以通过转变半导体存储器的物理状态而在计算机可读介质上对本文所公开的软件进行编码。例如,软件可以转变晶体管、电容器或构成半导体存储器的其他离散电路元件的状态。软件还可以转变这种部件的物理状态,以在其上存储数据。
作为另一示例,本文所公开的计算机可读介质可以使用磁性技术或光学技术实现。在这样的实现方式中,当软件被编码在磁性介质或光学介质中时,本文所呈现的软件可以转变磁性介质或光学介质的物理状态。这些转变可以包括更改给定磁性介质内的特定位置的磁特性。这些转变还可以包括更改给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。利用仅为了方便讨论而提供的前述示例,在不脱离本说明书的范围和精神的情况下,物理介质的其他转变是可能的。
鉴于以上内容,应当理解,在计算机架构1000内发生了许多类型的物理变化,以便存储和执行本文所呈现的软件部件。还应当理解,计算机架构1000可以包括其他类型的计算设备,所述计算设备包括手持计算机、嵌入式计算机系统、个人数字助理以及本领域技术人员已知的其他类型的计算设备。还设想了计算机架构1000可以不包括图10中示出部件中的所有部件,可以包括未在图10中明确示出的其他部件,或者可以利用与图10中示出的架构完全不同的架构。
最后,尽管已经以特定于结构特征和/或方法动作的语言描述了各种技术,但是应当理解,所附表示中限定的主题不必限于所描述的特定特征或动作。相反,该特定特征或动作是作为实现所要求保护的主题的示例形式而公开的。

Claims (20)

1.一种优化应用的计算机实现的方法,包括:
在源代码列表内识别对资源的引用,其中,所述资源存储在资源文件中;
对所述源代码列表进行分析,以基于所述应用的预期运行时行为来确定所引用的资源是否将被所述应用在运行时使用;以及
在确定所引用的资源将不被所述应用在运行时使用的情况下,从所述资源文件中删除所述资源。
2.根据权利要求1所述的计算机实现的方法,其中,确定所述资源是否将被所述应用在运行时使用是基于下述处理:对所述源代码列表进行分析以确定存储所述资源的变量是否将在使用所述资源之前被不同的值覆写。
3.根据权利要求1所述的计算机实现的方法,其中,确定所述资源是否将被所述应用在运行时使用是基于下述处理:对所述源代码列表进行分析以识别具有对所述资源的引用的运行时对象,以及确定基于所述资源而初始化的所述运行时对象的属性是否将在使用所述属性之前被覆写。
4.根据权利要求1所述的计算机实现的方法,其中,所述运行时对象包括可视化元素,并且其中,使用所述资源包括利用所述可视化元素显示所述资源。
5.根据权利要求1所述的计算机实现的方法,其中,所述可视化元素包括标签、下拉菜单或按钮。
6.根据权利要求1所述的计算机实现的方法,其中,所述资源包括字符串、图像、图标、字体、文本颜色、背景颜色、定位信息或可访问性描述符。
7.根据权利要求1所述的计算机实现的方法,其中,在所述应用被分发之前执行所述识别、分析和删除。
8.根据权利要求1所述的计算机实现的方法,其中,对所述源代码列表进行分析包括对初始化函数进行分析,所述初始化函数包括用户定义代码,在从所述资源文件加载值之后但在执行任何其他用户定义代码之前执行所述用户定义代码。
9.一种系统,包括:
一个或更多个处理单元;以及
计算机可读介质,其上编码有计算机可执行指令,以使所述一个或更多个处理单元:
识别多个资源组,其中,资源组包括按照限定顺序的一个或更多个资源值;
确定所述多个资源组的顺序,所述多个资源组的顺序使在相邻资源组中重复的有顺序的资源值的数目最大化;
移除相邻资源组中重复的资源值;以及
基于所确定的所述多个资源组的顺序和所移除的重复资源值来生成资源值列表。
10.根据权利要求9所述的系统,其中,如果有顺序的资源值出现在所述资源组的结束以及相邻资源组的开始处,则所述有顺序的资源值在所述相邻资源组中被重复。
11.根据权利要求9所述的系统,其中,如果有顺序的资源值出现在所述资源组的开始以及相邻资源组的结束处,则所述有顺序的资源值在所述相邻资源组中被重复。
12.根据权利要求9所述的系统,其中,使用对所生成的资源值列表的部分的引用来生成修改后的多个资源组。
13.根据权利要求12所述的系统,其中,所述修改后的多个资源组中的每一个由指向所述资源值列表中的条目的指针和长度来限定。
14.一种优化应用的计算机实现的方法,包括:
在初始化函数内识别变量,所述变量被设置为从资源文件中取得的值,其中,所述初始化函数是用于编译所述应用的源代码列表的一部分;
对所述初始化函数进行分析,以基于所述变量是否在所述初始化函数中被覆写来确定所述值是否将被所述应用在运行时使用;以及
在确定所述值将不被所述应用在运行时使用的情况下,从所述资源文件中删除所述值。
15.根据权利要求14所述的计算机实现的方法,其中,所述变量包括图形元素的属性,并且其中,所述图形元素是使用可视化设计器开发者工具设计的。
16.根据权利要求14所述的计算机实现的方法,其中,由所述可视化设计器开发者工具基于由所述图形元素的开发者提供的值或基于默认值将所述值存储在所述资源文件中。
17.根据权利要求14所述的计算机实现的方法,其中,所述值包括文本字符串、嵌入的图像、对图像的引用或者对象的属性。
18.根据权利要求14所述的计算机实现的方法,还包括:
确定所述资源文件是否包括用户提供的编程对象与所述资源文件中所限定的图形元素之间的连接;以及
在确定所述资源文件不包括用户提供的编程对象与所述资源文件中所限定的图形元素之间的连接时,从所述资源文件中移除占位符条目,所述占位符条目将用户提供的编程对象与所述资源文件中所限定的图形元素进行链接。
19.根据权利要求14所述的计算机实现的方法,其中,所述占位符条目包括文件所有者或第一响应者条目。
20.根据权利要求14所述的计算机实现的方法,还包括分发具有修改后的资源文件的应用,以供终端用户使用。
CN201980068477.4A 2018-10-16 2019-07-16 用户界面资源文件优化 Pending CN112889026A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/162,313 2018-10-16
US16/162,313 US10956136B2 (en) 2018-10-16 2018-10-16 User interface resource file optimization
PCT/US2019/042003 WO2020081134A1 (en) 2018-10-16 2019-07-16 User interface resource file optimization

Publications (1)

Publication Number Publication Date
CN112889026A true CN112889026A (zh) 2021-06-01

Family

ID=70158992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980068477.4A Pending CN112889026A (zh) 2018-10-16 2019-07-16 用户界面资源文件优化

Country Status (4)

Country Link
US (2) US10956136B2 (zh)
EP (1) EP3867746B1 (zh)
CN (1) CN112889026A (zh)
WO (1) WO2020081134A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956136B2 (en) 2018-10-16 2021-03-23 Ebay, Inc. User interface resource file optimization
CN112084040B (zh) * 2020-09-28 2021-07-20 上海道客网络科技有限公司 一种基于应用镜像数据识别的容器资源规划系统与方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317556A1 (en) * 2011-06-13 2012-12-13 Microsoft Corporation Optimizing execution of kernels
CN105144088A (zh) * 2012-12-13 2015-12-09 微软技术许可有限责任公司 元数据与源代码的关联以及基于其的应用和服务
CN105511934A (zh) * 2015-12-08 2016-04-20 贵阳朗玛信息技术股份有限公司 应用程序开发中的资源处理方法及装置
CN106599151A (zh) * 2016-12-07 2017-04-26 Tcl集团股份有限公司 一种Android工程无用资源并行清理的方法及系统
CN106708565A (zh) * 2016-11-29 2017-05-24 武汉斗鱼网络科技有限公司 一种清除apk中无用图片资源的方法及装置
CN107038058A (zh) * 2017-02-08 2017-08-11 阿里巴巴集团控股有限公司 一种代码处理方法及装置
CN108536463A (zh) * 2018-04-09 2018-09-14 深圳市腾讯网络信息技术有限公司 获取资源包的方法、装置、设备及计算机可读存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295065A (en) * 1990-06-01 1994-03-15 Motorola, Inc. Resource-lot association coordinator
US6298440B1 (en) * 1994-04-22 2001-10-02 Microsoft Corporation Method and system for providing multiple entry point code resources
US5790853A (en) * 1994-12-22 1998-08-04 Fuji Xerox Co., Ltd. Workspace management apparatus
US5815720A (en) 1996-03-15 1998-09-29 Institute For The Development Of Emerging Architectures, L.L.C. Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
US5790778A (en) 1996-08-07 1998-08-04 Intrinsa Corporation Simulated program execution error detection method and apparatus
JP3381927B2 (ja) * 1997-01-17 2003-03-04 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 分散コンピュータ・システムにおいて資源を保護する方法
US6182284B1 (en) * 1998-09-30 2001-01-30 Hewlett-Packard Company Method and system for eliminating phi instruction resource interferences and redundant copy instructions from static-single-assignment-form computer code
US6909743B1 (en) * 1999-04-14 2005-06-21 Sarnoff Corporation Method for generating and processing transition streams
US7017143B1 (en) 1999-12-01 2006-03-21 Microsoft Corporation External resource files for application development and management
CA2310943A1 (en) * 2000-06-02 2001-12-02 Michael J. Sikorsky Methods, techniques, software and systems for providing context independent, protocol independent portable or reusable development tools
US20020156758A1 (en) * 2001-02-22 2002-10-24 Remi Cote System and method for dynamic addition and removal of object interfaces
US20020145765A1 (en) * 2001-04-04 2002-10-10 Chou Huil-Ing Method and apparatus for increasing scan resolution
US7353503B2 (en) 2002-12-27 2008-04-01 Sun Microsystems, Inc. Efficient dead code elimination
US7810080B2 (en) 2003-09-15 2010-10-05 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
US20050066315A1 (en) * 2003-09-23 2005-03-24 Nguyen Liem Manh Localization tool
DE10353860B4 (de) * 2003-11-18 2023-03-30 Robert Bosch Gmbh Sensor zum Erfassen von Partikeln in einem Gasstrom, sowie Verfahren zu seiner Herstellung
US20050120290A1 (en) * 2003-12-01 2005-06-02 Information Handling Services Inc. Page rendered electronic file processing
US7574695B2 (en) * 2003-12-23 2009-08-11 Ntt Docomo, Inc. Performing checks on the resource usage of computer programs
US7406678B2 (en) * 2004-06-14 2008-07-29 Lucent Technologies Inc. Manager component resource addition and/or resource removal on behalf of distributed software application
KR101221821B1 (ko) * 2006-04-21 2013-01-14 삼성전자주식회사 주파수 분할 다중 접속 시스템에서 자원 할당 정보 시그널링 방법
WO2008008401A2 (en) 2006-07-12 2008-01-17 Global Info Tek, Inc. A diversity-based security system and method
US8290949B2 (en) * 2006-07-24 2012-10-16 International Business Machines Corporation Resource name reconciliation in a configuration database
US7987458B2 (en) 2006-09-20 2011-07-26 Intel Corporation Method and system for firmware image size reduction
US7996850B2 (en) 2006-12-28 2011-08-09 Sap Ag Dynamic business object properties for SOA architectures
US8555206B2 (en) * 2007-12-21 2013-10-08 Fisher-Rosemount Systems, Inc. Methods and apparatus to present recipe progress status information
JP2012155478A (ja) * 2011-01-25 2012-08-16 Canon Inc 画像形成装置、装置、画像形成装置の制御方法、およびプログラム
US8671389B1 (en) 2011-09-27 2014-03-11 Google Inc. Web application resource manager on the web and localizable components
US8606892B2 (en) 2011-11-28 2013-12-10 Wyse Technology Inc. Deployment and updating of applications and drivers on a client device using an extensible markup language (XML) configuration file
US9251026B2 (en) * 2012-03-31 2016-02-02 Bmc Software, Inc. Application instrumentation code extension
GB2527081B (en) * 2014-06-11 2021-05-19 Ibm Asynchronous resource usage collection and control of fenced user code
US9467166B2 (en) 2015-01-12 2016-10-11 Microsoft Technology Licensing, Llc Enhanced compression, encoding, and naming for resource strings
US10901756B2 (en) * 2016-05-06 2021-01-26 Fujitsu Limited Context-aware application
US10956136B2 (en) 2018-10-16 2021-03-23 Ebay, Inc. User interface resource file optimization
US10997243B1 (en) * 2020-06-30 2021-05-04 Snowflake Inc. Supporting unstructured, semi-structured, and structured files

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317556A1 (en) * 2011-06-13 2012-12-13 Microsoft Corporation Optimizing execution of kernels
CN105144088A (zh) * 2012-12-13 2015-12-09 微软技术许可有限责任公司 元数据与源代码的关联以及基于其的应用和服务
CN105511934A (zh) * 2015-12-08 2016-04-20 贵阳朗玛信息技术股份有限公司 应用程序开发中的资源处理方法及装置
CN106708565A (zh) * 2016-11-29 2017-05-24 武汉斗鱼网络科技有限公司 一种清除apk中无用图片资源的方法及装置
CN106599151A (zh) * 2016-12-07 2017-04-26 Tcl集团股份有限公司 一种Android工程无用资源并行清理的方法及系统
CN107038058A (zh) * 2017-02-08 2017-08-11 阿里巴巴集团控股有限公司 一种代码处理方法及装置
CN108536463A (zh) * 2018-04-09 2018-09-14 深圳市腾讯网络信息技术有限公司 获取资源包的方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
US20210165643A1 (en) 2021-06-03
US10956136B2 (en) 2021-03-23
US11645058B2 (en) 2023-05-09
EP3867746B1 (en) 2024-05-08
EP3867746A4 (en) 2022-07-27
EP3867746A1 (en) 2021-08-25
US20200117432A1 (en) 2020-04-16
WO2020081134A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
US11983167B1 (en) Loading queries across interfaces
KR101911793B1 (ko) 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
JP6449173B2 (ja) プロセスを構成するためのアプリケーションの構築
US8930900B2 (en) Artifact divider for large scale application builds
US20070222783A1 (en) Declarative definition enabling graphical designer reuse
US20170220613A1 (en) Systems and methods for database orientation transformation
US10489167B2 (en) Dynamically binding data in an application
US11645058B2 (en) User interface resource file optimization
US20130019225A1 (en) Incremental Inferences for Developing Data Models
Ledur et al. A high-level dsl for geospatial visualizations with multi-core parallelism support
Sáenz-Adán et al. Automating provenance capture in software engineering with UML2PROV
US10657476B2 (en) Just in time compilation (JIT) for business process execution
Tollefson R Quick Syntax Reference: A Pocket Guide to the Language, APIs and Library
US20120330878A1 (en) Conventions for inferring data models
US11526366B2 (en) Dynamically binding data in an application
CN113495727B (zh) 业务组件开发方法、装置、电子设备及介质
US20230418574A1 (en) Using a semantic tree of a compiler to execute a semantic code query against source code
Sung et al. Working with HTML5 and WebGL
Dong et al. FasTensor User Interface
CN117132310A (zh) 一种可扩展节点的出清流程渲染方法、装置、介质及系统
Telea et al. An open toolkit for reverse engineering data visualisation and exploration
Mohan R programming
JP2012073405A (ja) 地図データ生成装置および地図データ生成方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination