CN109634613A - 一种手游安装包冗余资源检查方法及系统 - Google Patents
一种手游安装包冗余资源检查方法及系统 Download PDFInfo
- Publication number
- CN109634613A CN109634613A CN201811487259.8A CN201811487259A CN109634613A CN 109634613 A CN109634613 A CN 109634613A CN 201811487259 A CN201811487259 A CN 201811487259A CN 109634613 A CN109634613 A CN 109634613A
- Authority
- CN
- China
- Prior art keywords
- resource
- installation kit
- hand
- path
- redundant
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/181—Eliminating the failing redundant component
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明的技术方案包括一种手游安装包冗余资源检查方法及系统,用于实现:逆向思维自动化静态检测手游安装包多余资源。此方案通过自动化扫描代码、表格得到游戏运行时会使用到的资源列表,自动化逆向分析手游安装包资源列表及其间引用关系,最后对两者进行比较,得到多余资源列表。本发明的有益效果为:在于静态、自动化、通用、无人工干涉正确率高,一次实现后,游戏开发的迭代对其几乎无影响,且可快速移植到其他游戏项目直接使用,且不同游戏项目制定资源使用规则后,该方案对不同游戏项目通用,且后续完全静态自动化,无需持续投入人力。
Description
技术领域
本发明涉及一种手游安装包冗余资源检查方法及系统,属于计算机技术领域。
背景技术
目前手机游戏广受大众欢迎,而大部分手机游戏使用Unity商业引擎进行开发。开发Unity手游项目是一个大量人员合作进行反反复复的设计、开发、测试验证、修改的过程,大量人员间的协调反复工作会很容易导致安装包中包含大量老旧不再使用的资源,最终使安装包越来越大。而Unity手游安装包大小直接影响着手机用户试玩的意愿度、游戏运行时体验,且受影响最大的是占市场比率最高的低端手机。所以每个开发团队需要额外投入大量人力和时间不定时的进行排查,不同团队方法不同,低效又总有遗漏。
当前已有方案实现多余资源检查,如运行游戏时注入监控程序,记录运行过程中被加载的所有资源文件,通过引用关联得到所有被直接或间接使用的资源列表,其他资源即为多余资源,但此方案是动态监控游戏,需要运行游戏所有玩法,时间特别长,且要么人工跑游戏要么脚本自动AI,但自动AI实现难度也偏高,且不同游戏差别大。
发明内容
为解决上述问题,本发明的目的在于提供一种手游安装包冗余资源检查方法及系统,逆向思维自动化静态检测手游安装包多余资源。此方案通过自动化扫描代码、表格得到游戏运行时会使用到的资源列表,自动化逆向分析手游安装包资源列表及其间引用关系,最后对两者进行比较,得到多余资源列表。
本发明解决其问题所采用的技术方案一方面是:一种手游安装包冗余资源检查方法,其特征在于,该方法包括以下步骤:读取手游项目资源使用规则;根据资源使用规则获取手游项目使用的资源路径;得到的资源路径与手游项目使用的资源一一对应;对手游安装包执行解包操作,分析解包后的文件,得到安装包内资源引用关系以及资源信息并生成资源列表和引用关系图;将手游项目使用的资源与资源列表和引用关系图做对比检索;未在资源列表和引用关系图查询到的资源即为冗余资源。
进一步的,所述资源使用规则为,Excel表格列属性和/或源码的路径表达式中存储了项目使用的资源路径。
进一步的,所述根据资源使用规则获取手游项目使用的资源路径包括:使用脚本分别遍历表格目录下所有excel表格内容和项目中所有源码;根据资源使用规则记录表格和源码中所有的资源路径,即得到了在项目中所有被使用的资源的资源路径。
进一步的,所述对手游安装包执行解包操作,分析解包后的文件,得到安装包内资源引用关系以及资源信息并生成资源列表和引用关系图包括:使用Unity工程对手游项目进行打包,得到手游安装包;对安装包进行解压,得到解压后的文件,遍历所有资源,包括但不限于AssetBundle、Resources以及StreamingAssets;统计所有资源的资源信息,根据资源信息建立资源列表和引用关系图。
进一步的,所述资源信息包括资源的GUID、该资源依赖的其他资源的GUID以及资源路径。
进一步的,所述将手游项目使用的资源与资源列表和引用关系图做对比检索包括:建立对比库,其中对比库包括资源路径与手游项目使用的资源的信息;将资源列表中所有的资源在对比库中进行遍历检索,筛选出未检索到的资源;将未检索到的资源与引用关系图进行检索匹配,未匹配到的资源即为冗余资源。
进一步的,所述遍历检索和所述检索匹配的方法为,将资源路径作为唯一标识与对比库中的资源路径进行检索对比,资源路径一致的即为同一资源。
本发明解决其问题所采用的技术方案另一方面是:一种手游安装包冗余资源检查系统,其特征在于,包括:静态读取模块,用于静态获取分析游戏项目使用的资源信息;解包模块,用于对手游安装包执行解包操作;分析模块,用于分析解包后的文件,得到资源信息;资源信息处理模块,用于根据得到的资源信息生成资源列表和引用关系图;检索对比模块,用于根据游戏项目使用的资源信息与资源列表和引用关系图,得到未检索到的资源信息,并判定为冗余资源。
进一步的,所述静态读取模块还包括对比库生成模块,用于根据获取到的游戏项目使用的资源信息,生成对比库,其中资源信息包括资源路径。
本发明的有益效果是:本发明采用的一种手游安装包冗余资源检查方法及系统,在于静态、自动化、通用、无人工干涉正确率高,一次实现后,游戏开发的迭代对其几乎无影响,且可快速移植到其他游戏项目直接使用,且不同游戏项目制定资源使用规则后,该方案对不同游戏项目通用,且后续完全静态自动化,无需持续投入人力。
附图说明
图1所示为根据本发明较佳实施例的方法流程示意图;
图2所示为根据本发明较佳实施例的系统模块框图;
图3所示为根据本发明较佳实施例的引用关系图一;
图4所示为根据本发明较佳实施例的引用关系图二。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。
本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
参照图1所示为根据本发明较佳实施例的方法流程示意图,
读取手游项目资源使用规则;
使用规则可以为,Excel表格列属性或源码的路径表达式中存储了项目使用的资源路径。
根据资源使用规则获取手游项目使用的资源路径;
使用脚本分别遍历表格目录下所有excel表格内容和项目中所有源码;
根据资源使用规则记录表格和源码中所有的资源路径,即得到了在项目中所有被使用的资源的资源路径。
得到的资源路径与手游项目使用的资源一一对应;
对手游安装包执行解包操作,分析解包后的文件,得到安装包内资源引用关系以及资源信息并生成资源列表和引用关系图;
使用Unity工程对手游项目进行打包,得到手游安装包;
对安装包进行解压,得到解压后的文件,遍历所有资源,包括但不限于AssetBundle、Resources以及StreamingAssets;
统计所有资源的资源信息,根据资源信息建立资源列表和引用关系图。
将手游项目使用的资源与资源列表和引用关系图做对比检索;
建立对比库,其中对比库包括资源路径与手游项目使用的资源的信息;
将资源列表中所有的资源在对比库中进行遍历检索,筛选出未检索到的资源;
将未检索到的资源与引用关系图进行检索匹配,未匹配到的资源即为冗余资源,即未在资源列表和引用关系图查询到的资源即为冗余资源。
举例说明,
第一步:制定表格、源码使用资源的规则,Unity手游资源绝大部分来源于表格,少部分来源于源码。如excel表格使用资源规则是名字为ResourceName的列等等,源码使用资源规则是带有后缀名的常量字符串等等。
第二步:自动化静态分析手游使用的资源列表。使用脚本语言Python进行全部表格和源码的扫描,根据制定的规则分析得到资源文件路径列表。
第三步:自动化静态分析安装包内的资源列表、资源的引用关系图。解压Unity安装包,逆向解析所有资源文件,如Unity AssetBundle压缩资源文件、Unity Resources文件夹下特殊资源文件、Unity StreamingAssets文件夹下原文件及其他形式文件等等,使用Unity的接口及资源格式官方说明,分析得到安装包内所有的资源列表,每个资源含有自身唯一的guid和记录它引用资源的guid,通过guid可以分析得到资源间引用关系图。
第四步:自动化静态分析多余资源。使用脚本语言python,应用标记法,以游戏使用到的各个资源作为输入,根据安装包所有资源引用关系图标记其直接或间接引用的资源,最后将所有未被标记的资源作为输出,即得到Unity手游安装包多余资源。
参照图2所示为根据本发明较佳实施例的系统模块框图,包括:
静态读取模块,用于静态获取分析游戏项目使用的资源信息;
解包模块,用于对手游安装包执行解包操作;
分析模块,用于分析解包后的文件,得到资源信息;
资源信息处理模块,用于根据得到的资源信息生成资源列表和引用关系图;
检索对比模块,用于根据游戏项目使用的资源信息与资源列表和引用关系图,得到未检索到的资源信息,并判定为冗余资源。
静态读取模块还包括对比库生成模块,用于根据获取到的游戏项目使用的资源信息,生成对比库,其中资源信息包括资源路径。
例如《剑侠世界2》Unity手游。
第一步:游戏项目资源使用规则,excel表格中名字为ResourceName的列包含的内容是资源路径,源码中常量字符串且带有后缀名png、wav等等的是资源路径。
第二步:使用Python脚本分别遍历表格目录下所有excel表格内容和项目中所有源码,按照第一步制定的资源使用规则,记录表格和源码中所有资源路径。
第三步:使用Unity工程打包,并进行解压,如unzip方式,得到AssetBundle、Resources、StreamingAssets不同类型资源,每个资源都含有唯一的guid,使用Unity官方接口及资源文件格式进行分析,得到每个资源自己的guid和引用到的guid,建立所有资源列表和引用关系图,参照图3所示为根据本发明较佳实施例的引用关系图一、图4所示为根据本发明较佳实施例的引用关系图二。
第四步:应用标记法,以第二步得到的资源作为输入,逐个进行遍历,标记第三步得到的资源列表,并依据资源引用关系图标记其直接或间接引用到的资源,所有未被标记的资源即安装包多余资源。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (9)
1.一种手游安装包冗余资源检查方法,其特征在于,该方法包括以下步骤:
读取手游项目资源使用规则;
根据资源使用规则获取手游项目使用的资源路径;
得到的资源路径与手游项目使用的资源一一对应;
对手游安装包执行解包操作,分析解包后的文件,得到安装包内资源引用关系以及资源信息并生成资源列表和引用关系图;
将手游项目使用的资源与资源列表和引用关系图做对比检索;
未在资源列表和引用关系图查询到的资源即为冗余资源。
2.根据权利要求1所述的手游安装包冗余资源检查方法,其特征在于,所述资源使用规则为,Excel表格列属性和/或源码的路径表达式中存储了项目使用的资源路径。
3.根据权利要求1所述的手游安装包冗余资源检查方法,其特征在于,所述根据资源使用规则获取手游项目使用的资源路径包括:
使用脚本分别遍历表格目录下所有excel表格内容和项目中所有源码;
根据资源使用规则记录表格和源码中所有的资源路径,即得到了在项目中所有被使用的资源的资源路径。
4.根据利要求1所述的手游安装包冗余资源检查方法,其特征在于,所述对手游安装包执行解包操作,分析解包后的文件,得到安装包内资源引用关系以及资源信息并生成资源列表和引用关系图包括:
使用Unity工程对手游项目进行打包,得到手游安装包;
对安装包进行解压,得到解压后的文件,遍历所有资源,包括但不限于AssetBundle、Resources以及StreamingAssets;
统计所有资源的资源信息,根据资源信息建立资源列表和引用关系图。
5.根据利要求4所述的手游安装包冗余资源检查方法,其特征在于,所述资源信息包括资源的GUID、该资源依赖的其他资源的GUID以及资源路径。
6.根据利要求1所述的手游安装包冗余资源检查方法,其特征在于,所述将手游项目使用的资源与资源列表和引用关系图做对比检索包括:
建立对比库,其中对比库包括资源路径与手游项目使用的资源的信息;
将资源列表中所有的资源在对比库中进行遍历检索,筛选出未检索到的资源;
将未检索到的资源与引用关系图进行检索匹配,未匹配到的资源即为冗余资源。
7.根据权利要求6所述的手游安装包冗余资源检查方法,其特征在于,所述遍历检索和所述检索匹配的方法为,将资源路径作为唯一标识与对比库中的资源路径进行检索对比,资源路径一致的即为同一资源。
8.一种应用权利要求1-7任一所述的手游安装包冗余资源检查系统,其特征在于,包括:
静态读取模块,用于静态获取分析游戏项目使用的资源信息;
解包模块,用于对手游安装包执行解包操作;
分析模块,用于分析解包后的文件,得到资源信息;
资源信息处理模块,用于根据得到的资源信息生成资源列表和引用关系图;
检索对比模块,用于根据游戏项目使用的资源信息与资源列表和引用关系图,得到未检索到的资源信息,并判定为冗余资源。
9.据权利要求8所述的手游安装包冗余资源检查系统,其特征在于,所述静态读取模块还包括对比库生成模块,用于根据获取到的游戏项目使用的资源信息,生成对比库,其中资源信息包括资源路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811487259.8A CN109634613A (zh) | 2018-12-06 | 2018-12-06 | 一种手游安装包冗余资源检查方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811487259.8A CN109634613A (zh) | 2018-12-06 | 2018-12-06 | 一种手游安装包冗余资源检查方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109634613A true CN109634613A (zh) | 2019-04-16 |
Family
ID=66071586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811487259.8A Pending CN109634613A (zh) | 2018-12-06 | 2018-12-06 | 一种手游安装包冗余资源检查方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634613A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147237A (zh) * | 2019-05-20 | 2019-08-20 | 深圳市腾讯网域计算机网络有限公司 | 一种冗余资源去除方法和装置 |
CN110465093A (zh) * | 2019-07-24 | 2019-11-19 | 珠海金山网络游戏科技有限公司 | 一种基于Unity的包体冗余资源分析方法及其装置 |
CN110975293A (zh) * | 2019-11-29 | 2020-04-10 | 米哈游科技(上海)有限公司 | 建立资源引用关系表的方法、装置、服务器及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014117556A1 (zh) * | 2013-01-30 | 2014-08-07 | 腾讯科技(深圳)有限公司 | 冗余文件删除方法及装置和存储介质 |
CN106708565A (zh) * | 2016-11-29 | 2017-05-24 | 武汉斗鱼网络科技有限公司 | 一种清除apk中无用图片资源的方法及装置 |
CN106815131A (zh) * | 2016-12-27 | 2017-06-09 | 珠海金山网络游戏科技有限公司 | 一种基于Unity引擎的游戏资源检查方法和系统 |
CN107908419A (zh) * | 2017-10-27 | 2018-04-13 | 珠海金山网络游戏科技有限公司 | 一种基于差异的AssetBundle更新方法及装置 |
CN108089893A (zh) * | 2017-12-14 | 2018-05-29 | 网易(杭州)网络有限公司 | 冗余资源的确定方法、装置、终端设备与存储介质 |
-
2018
- 2018-12-06 CN CN201811487259.8A patent/CN109634613A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014117556A1 (zh) * | 2013-01-30 | 2014-08-07 | 腾讯科技(深圳)有限公司 | 冗余文件删除方法及装置和存储介质 |
CN106708565A (zh) * | 2016-11-29 | 2017-05-24 | 武汉斗鱼网络科技有限公司 | 一种清除apk中无用图片资源的方法及装置 |
CN106815131A (zh) * | 2016-12-27 | 2017-06-09 | 珠海金山网络游戏科技有限公司 | 一种基于Unity引擎的游戏资源检查方法和系统 |
CN107908419A (zh) * | 2017-10-27 | 2018-04-13 | 珠海金山网络游戏科技有限公司 | 一种基于差异的AssetBundle更新方法及装置 |
CN108089893A (zh) * | 2017-12-14 | 2018-05-29 | 网易(杭州)网络有限公司 | 冗余资源的确定方法、装置、终端设备与存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147237A (zh) * | 2019-05-20 | 2019-08-20 | 深圳市腾讯网域计算机网络有限公司 | 一种冗余资源去除方法和装置 |
CN110147237B (zh) * | 2019-05-20 | 2023-08-08 | 深圳市腾讯网域计算机网络有限公司 | 一种冗余资源去除方法和装置 |
CN110465093A (zh) * | 2019-07-24 | 2019-11-19 | 珠海金山网络游戏科技有限公司 | 一种基于Unity的包体冗余资源分析方法及其装置 |
CN110465093B (zh) * | 2019-07-24 | 2023-07-04 | 珠海金山数字网络科技有限公司 | 一种基于Unity的包体冗余资源分析方法及其装置 |
CN110975293A (zh) * | 2019-11-29 | 2020-04-10 | 米哈游科技(上海)有限公司 | 建立资源引用关系表的方法、装置、服务器及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828777A (zh) | 一种手游安装包优化方法及系统 | |
CN109634613A (zh) | 一种手游安装包冗余资源检查方法及系统 | |
CN106649212A (zh) | 一种业务数据处理的方法及装置 | |
Griebe et al. | A model-based approach to test automation for context-aware mobile applications | |
CN108804688A (zh) | 一种游戏资源引用关系的查找以及优化方法 | |
CN109871326A (zh) | 一种脚本录制的方法和装置 | |
CN107644286A (zh) | 工作流处理方法及装置 | |
CN112256321A (zh) | 静态库打包方法、装置、计算机设备和存储介质 | |
CN107957956A (zh) | 软件差异覆盖率的测试方法、装置及可读存储介质 | |
CN108469955B (zh) | 一种基于注解的Android注入框架实现方法 | |
CN103279631B (zh) | 设计模式制导的爪哇代码评审方法 | |
GB2503893A (en) | Selecting data from a database using data representing a sequence of operations | |
CN102097018A (zh) | 一种虚拟仿真通信系统的平台及方法 | |
CN110175916A (zh) | 资金流核对方法及装置 | |
CN109891387A (zh) | 具有可选择比较属性的浮点指令 | |
EP3920041A1 (en) | Master data profiling | |
CN107402878A (zh) | 测试方法和装置 | |
CN104054051A (zh) | 操纵源代码补丁 | |
Forbrig et al. | Managing the Agile process of human-centred design and software development | |
Singh et al. | Reengineering framework for open source software using decision tree approach | |
CN117892665B (zh) | 基于电路系统级模型的建模仿真方法、装置、介质及设备 | |
CN110310082A (zh) | 一种企业线上面签方法及装置 | |
CN111459917B (zh) | 知识库管理方法、装置及处理设备 | |
CN110489342A (zh) | 一种安卓应用测试方法、系统、装置及存储介质 | |
CN106708721A (zh) | 代码覆盖测试的实现方法和装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190416 |