CN109725905A - 基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 - Google Patents
基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 Download PDFInfo
- Publication number
- CN109725905A CN109725905A CN201811601311.8A CN201811601311A CN109725905A CN 109725905 A CN109725905 A CN 109725905A CN 201811601311 A CN201811601311 A CN 201811601311A CN 109725905 A CN109725905 A CN 109725905A
- Authority
- CN
- China
- Prior art keywords
- pins
- component
- file
- pins component
- code
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于源码集的软件架构,包括module组件和pins组件,module组件用作pins组件的容器,每个module组件下包括有至少一个pins组件;其中,pins组件实现为一个配置有依赖声明文件的源码集,依赖声明文件用于声明自身需要依赖的pins组件;同一module组件下的各pins组件基于其依赖声明文件实现对其他pins组件的引用。本发明还公开了基于源码集的软件架构的实现方法、用于编译pins组件的插件和应用方法,根据本发明提供的架构和方法,可以实现加快组件化方案的编译效率,又能将同组的组件统一归类、统一管理。
Description
技术领域
本发明涉及代码编译技术领域,特别是一种基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法。
背景技术
现有技术中的Android软件架构在划分体系时,由于组件化的流行常常会暴露出许多缺陷,例如如下所述的缺陷:
1)现有的组件化要求每组组件的颗粒度尽可能小,从而才能达到组件任意装卸的目的,然而当前Android平台上能够提供的最小颗粒度的组件称之为module,而由于Android编译的特性导致每个module上必须绑定60个以上内置的耗时任务,这就导致组件化方案在实行时编译效率极其低下;
2)组件化的发展趋势是不断丰富的组件数,而当前平台上缺少能够将组件统一整合归类的机制。
发明内容
为了解决上述问题,发明人基于Android平台的源码集概念发明了颗粒度更小的软件架构载体(后续称之为pins),pins组件是基于源码集的颗粒度更小的组件,而由于module组件本身是由若干个源码集组合而成的,因而在源码集概念形成了新的组件后,module随之成为pins组件的天然的组件容器。如此,既能加快组件化方案的编译效率,又能将同组的组件统一归类、统一管理。
实际上,源码集虽然是源码及资源文件的最小载体,但其本身并不具备作为组件化的最小单元的功能。因而,如果想基于发明人的构思构建基于源码集的颗粒度更小的pins组件,就要解决该难题。经过发明人的潜心研究,想到了基于本发明构思的解决方案。
根据本发明的第一方面,提供了一种基于源码集的软件架构,包括module组件和pins组件,module组件用作pins组件的容器,每个module组件下包括有至少一个pins组件;其中,
pins组件实现为一个配置有依赖声明文件的源码集,依赖声明文件用于声明自身需要依赖的pins组件;
同一module组件下的各pins组件基于其依赖声明文件实现对其他pins组件的引用。
根据本发明的第二方面,提供了一种基于源码集的软件架构的实现方法,包括:
为各源码集添加依赖声明文件,形成pins组件;
配置各module组件下的pins组件;
在编译时,对各pins组件的代码文件进行动态扫描,根据各pins组件的依赖声明文件,对pins组件的代码文件进行编译。
根据本发明的第三个方面,提供了一种用于编译pins组件的插件,其实现为包括如下步骤:
获取配置的pins组件信息;
根据pins组件信息,依次获取pins组件进行如下处理:
判断是否存在当前pins组件的缓存文件,如果存在,则从缓存文件中加载当前pins组件的所有代码文件的修改时刻至内存;
读取当前pins组件中所有代码文件的修改时刻,与缓存文件中加载的代码文件的修改时刻进行比较,在修改时刻不一致时,读取pins组件的代码文件内容,将代码文件内容与pins组件的依赖声明文件中的内容进行匹配,确定所述代码文件内容中是否存在未声明的依赖,存在则抛出编译异常,不存在则更新代码文件的修改时刻。
根据本发明的第四个方面,提供了一种应用上述的软件架构进行应用开发的方法,包括
在待开发的应用程序中加载gradle插件的jar包;
配置各module组件下的pins组件信息;
为各pins组件添加依赖声明文件;
在编译时,gradle插件根据配置的pins组件信息和依赖声明文件依次获取pins组件,执行pins组件的编译过程;
其中,gradle插件为上述的插件。
根据本发明提供的软件架构和方法,可以实现通过颗粒度更小的软件架构载体(pins)实现加快组件化方案的编译效率,并且将同组的组件基于module组件进行统一归类和统一管理,优化了整洁度。
附图说明
图1为本发明一实施方式的基于源码集的软件架构框图;
图2为本发明一实施方式的基于源码集的软件架构的实现方法流程图;
图3为本发明一种实施方式的用于编译pins组件的插件的编译方法流程图;
图4为本发明一实施方式的应用基于源码集的软件架构进行应用开发的方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本发明中,“模块”、“装置”、“***”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地***、分布式***中另一元件交互的,和/或在因特网的网络通过信号与其它***交互的数据的信号通过本地和/或远程过程来进行通信。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图对本发明作进一步详细的说明。
图1示意性地显示了根据本发明一实施方式的基于源码集的软件架构框图,如图1所示,
该基于源码集的软件架构包括module组件1和pins组件2,module组件1用作pins组件2的容器,每个module组件1下包括有至少一个pins组件2;其中,pins组件2实现为一个配置有依赖声明文件的源码集。通过为源码集配套一份依赖声明文件,声明自身需要依赖的pins组件,可以改变现有的架构下同module组件的源码集是允许相互引用的状态,使得同module下不同的pins间,除非显示声明,否则不允许其相互引用,由此,就使得源码集具备了组件功能(即具有独立性),而由于源码集是一种颗粒度相对于module组件1更小的软件架构载体,因而其能够成为组件化的最小单元,即本发明提出的pins组件。
具体地,依赖声明文件通过pins组件2名称声明自身需要依赖的pins组件2,示例性地,pins组件2名称为其对应的源码集的文件夹名。同一module组件1下的各pins组件2基于其依赖声明文件实现对其他pins组件2的引用,这样可以保证引用的合法性。对pins组件2的编译通过gradle插件(gradle插件为基于JVM的构建工具)实现,下文将通过应用方法进行详细阐述。
本实施例的软件架构,通过将源码集组件化为pins组件,并将module组件作为pins组件的容器,实现了每组组件的颗粒度尽可能小,可以加快组件化方案的编译效率,又能将同组的组件统一归类、统一管理。并且为pins组件配置相应的依赖声明文件可以避免将多个pins组件规整到同一个module组件中时存在引用问题,由于module组件的特性此时不同,pins组件之间直接相互引用将需要依赖显示声明,否则将导致报编译异常的问题,以使外部能够感知到对未声明依赖进行引用时存在的问题。
在具体应用中,还可以通过依赖闭包声明当前module组件下的pins组件,以实现对module组件下的pins组件的配置,并基于gradle插件对module组件下配置的pins组件进行编译,具体将在下文方法部分进行详细阐述。
图2示意性地显示了根据本发明一实施方式的基于源码集的软件架构的实现方法流程图。如图2所示,本实施例包括如下步骤:
步骤S201:为各源码集添加依赖声明文件,形成pins组件。其中,该依赖声明文件声明了pins组件自身需要合法引用的其他pins组件,可以模拟Android的build.gradle实现,为每个pins组件都配置一个build.gradle文件,实现对合法引用的声明。其中,通过pins组件2名称声明自身需要依赖的pins组件2。
示例性地,为一个名称为phoneModel的源码集添加依赖声明文件build.gradle,为其声明其可以合法引用的其他pins组件为phonePresenter.pins、phoneUbsBinder.pins,从而形成一个pins组件为phoneModel.pins。
步骤S202:配置各module组件下的pins组件。该pins组件是一种颗粒度相对于module组件1更小的软件架构载体,以module组件为容器进行配置,示例性地可以通过依赖闭包pins{}来声明当前的module都包括有哪些pins,其中,声明也是通过pins组件的名称实现。
步骤S203:在编译时,对各pins组件的代码文件进行动态扫描。
根据各pins组件的依赖声明文件中声明的内容,对pins组件的代码文件进行编译。具体实现为:首先判断是否存在pins组件的缓存文件(用于存放代码文件的修改时刻,在每次编译后更新),如果存在,则从缓存文件中加载当前pins组件的所有代码文件的修改时刻至内存中;读取当前pins组件中所有代码文件的修改时刻(示例性地通过File对象的lastModified()方法即可获得各代码文件的修改时刻),与缓存文件中加载的代码文件的修改时刻进行比较,如果比较出这两个时刻不一致,则在修改时刻不一致的时候,便执行读取代码文件内容进行处理的操作,即依次读取各pins组件的代码文件内容,进行如下处理:将代码文件内容与相应pins组件的依赖声明文件中的内容进行匹配,确定代码文件内容中是否存在未在依赖声明文件中声明的依赖,如果存在则抛出编译异常,如果不存在则更新代码文件的修改时刻。如果修改时刻一致,则说明已经进行过了该代码文件的编译,其内容没有发生变化,则不再针对相同内容重复进行依赖编译处理。
本发明实施例通过编译时动态扫描代码文件的方式,实现pins组件的基于依赖声明文件的显示依赖,使其源码集能够成为独立的组件功能单元,提供了颗粒度更小的软件架构载体。根据本实施例可以实现架构一套区别与现有软件架构划分方法的更为新颖的方法,使得需要采用组件化方案时大大提高了效率,同时优化了组件处理的整洁度。
图3示意性地显示了根据本发明一实施方式的用于编译pins组件的插件进行编译的方法流程图,如图3所示,本实施例包括如下步骤:
步骤S301:获取配置的pins组件信息。在进行module组件配置时,会通过依赖闭包声明其包含的pins组件信息。该组件信息包括pins组件的名称,通过该pins组件名称可以获取到该拼色组件的相关的依赖声明文件内容等,获取的方式可以通过***内对应的接口进行调用。
步骤S302:判断是否存在当前pins组件的缓存文件,如果存在,则从缓存文件中加载当前pins组件的所有代码文件的修改时刻至内存。判断方式可以通过***调用接口读取是否存在缓存文件进行判断。其中,缓存文件用于存放代码文件的修改时刻,在每次编译后更新。
当判断存在缓存文件时,读取缓存文件内容,将读取到的内容加载到内存,并进行步骤S303。当不存在缓存文件时,进行步骤S304。
步骤S303:读取当前pins组件中所有代码文件的修改时刻,与缓存文件中加载的代码文件的修改时刻进行比较。在修改时刻不一致时,进行步骤S304,在修改时刻一致时,不进行任何处理。
步骤S304:读取pins组件的代码文件内容,将代码文件内容与pins组件的依赖声明文件中的内容进行匹配,确定代码文件内容中是否存在未声明的依赖,存在则抛出编译异常,不存在则更新代码文件的修改时刻。
根据本实施例可以通过该用于编译pins组件的插件进行程序编译,实现对pins组件的编译,实现方式简单快速,实现了源码集的组件化。且将该pins组件进行组件化的应用时可以大大的提高对应方案的效率并且优化了整洁度。
图4示意性地显示了根据本发明一实施方式的应用基于源码集的软件架构进行应用开发的方法流程图,如图4所示,本实施例包括如下步骤:
步骤S401:在待开发的应用程序中加载gradle插件的jar包。其实现方式可以参照现有技术的加载方式。需要说明的是,在进行插件配置时,本发明实施例是通过applyplugin:'com.android.pins'、apply plugin:'com.android.library'、apply plugin:'com.android.pins.checker'来声明要用pins的插件,如果是包含pins的则是需要用pins组件的插件,就需要通过本实施例的方法进行pins组件的编译,例如apply plugin:'com.android.pins'和apply plugin:'com.android.pins.checker',不含有pins的则为不需要进行pins组件编译的插件,如apply plugin:'com.android.library'。
步骤S402:配置各module组件下的pins组件信息。其中,为module组件配置相应的pins组件信息的方式是通过依赖闭包pins{}实现。
步骤S403:为各pins组件添加依赖声明文件。该依赖声明文件实现为build.gradle文件。
步骤S404:在编译时,gradle插件根据配置的pins组件信息和依赖声明文件依次获取pins组件,执行pins组件的编译过程。其编译的过程即为动态扫描代码文件进行处理的过程,其实现方式可以参照上述的方法部分。
根据本实施例可以实现通过颗粒度更小的软件架构载体(pins)实现加快组件化方案的编译效率,并且将同组的组件统一归类、统一管理。并且可以使得需要应用pins进行组件化方案时,提高效率,同时优化了整洁度。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.基于源码集的软件架构,其特征在于,包括module组件和pins组件,所述module组件用作pins组件的容器,每个module组件下包括有至少一个pins组件;其中,
所述pins组件实现为一个配置有依赖声明文件的源码集,所述依赖声明文件用于声明自身需要依赖的pins组件;
同一module组件下的各pins组件基于其依赖声明文件实现对其他pins组件的引用。
2.根据权利要求1所述的软件框架,其特征在于,所述依赖声明文件通过pins组件名称声明自身需要依赖的pins组件。
3.根据权利要求2所述的软件框架,其特征在于,pins组件名称为其对应的源码集的文件夹名。
4.根据权利要求1至3任一项所述的软件框架,其特征在于,对pins组件的编译通过gradle插件实现。
5.基于源码集的软件架构的实现方法,其特征在于,包括:
为各源码集添加依赖声明文件,形成pins组件;
配置各module组件下的pins组件;
在编译时,对各pins组件的代码文件进行动态扫描,根据各pins组件的依赖声明文件,对pins组件的代码文件进行编译。
6.根据权利要求5所述的实现方法,其特征在于,所述依赖声明文件实现为build.gradle文件。
7.根据权利要求5所述的实现方法,其特征在于,所述对各pins组件的代码文件进行动态扫描,根据各pins组件的依赖声明文件,对pins组件的代码文件进行编译包括
依次读取各pins组件的代码文件内容,进行如下处理:
将代码文件内容与相应pins组件的依赖声明文件中的内容进行匹配,确定所述代码文件内容中是否存在未声明的依赖,存在则抛出编译异常,不存在则更新代码文件的修改时刻。
8.根据权利要求7所述的方法,其特征在于,在读取各pins组件的代码文件内容之前还包括:
判断是否存在pins组件的缓存文件,如果存在,则从缓存文件中加载当前pins组件的所有代码文件的修改时刻至内存;
读取当前pins组件中所有代码文件的修改时刻,与缓存文件中加载的代码文件的修改时刻进行比较,在修改时刻不一致时,执行读取代码文件内容进行处理的操作。
9.用于编译pins组件的插件,其特征在于,其实现为用于执行如下编译过程:
获取配置的pins组件信息;
根据所述pins组件信息,依次获取pins组件进行如下处理:
判断是否存在当前pins组件的缓存文件,如果存在,则从缓存文件中加载当前pins组件的所有代码文件的修改时刻至内存;
读取当前pins组件中所有代码文件的修改时刻,与缓存文件中加载的代码文件的修改时刻进行比较,在修改时刻不一致时,读取pins组件的代码文件内容,将代码文件内容与pins组件的依赖声明文件中的内容进行匹配,确定所述代码文件内容中是否存在未声明的依赖,存在则抛出编译异常,不存在则更新代码文件的修改时刻。
10.应用权利要求1所述的软件架构进行应用开发的方法,其特征在于,包括
在待开发的应用程序中加载gradle插件的jar包;
配置各module组件下的pins组件信息;
为各pins组件添加依赖声明文件;
在编译时,所述gradle插件根据配置的pins组件信息和依赖声明文件依次获取pins组件,执行pins组件的编译过程;
其中,所述gradle插件为权利要求9所述的插件。
11.根据权利要求10所述的方法,其特征在于,所述配置各module组件下的pins组件是通过依赖闭包实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811601311.8A CN109725905A (zh) | 2018-12-26 | 2018-12-26 | 基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811601311.8A CN109725905A (zh) | 2018-12-26 | 2018-12-26 | 基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109725905A true CN109725905A (zh) | 2019-05-07 |
Family
ID=66297197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811601311.8A Pending CN109725905A (zh) | 2018-12-26 | 2018-12-26 | 基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725905A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352631A (zh) * | 2020-02-21 | 2020-06-30 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种接口兼容性检测方法及装置 |
CN113760355A (zh) * | 2021-09-08 | 2021-12-07 | 杭州涂鸦信息技术有限公司 | 一种代码打包方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100031237A1 (en) * | 2008-08-01 | 2010-02-04 | International Business Machines Corporation | Methods for Detecting Inter-Module Dependencies |
CN107885501A (zh) * | 2017-11-03 | 2018-04-06 | 武汉斗鱼网络科技有限公司 | 获取Android中组件相互引用关系的方法及装置 |
CN108052314A (zh) * | 2017-12-26 | 2018-05-18 | 无线生活(杭州)信息科技有限公司 | 一种基于Gradle的插件打包的方法及装置 |
CN108733376A (zh) * | 2018-04-27 | 2018-11-02 | 链家网(北京)科技有限公司 | 组件化下利用一套源码编译多个Android APP的方法及装置 |
-
2018
- 2018-12-26 CN CN201811601311.8A patent/CN109725905A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100031237A1 (en) * | 2008-08-01 | 2010-02-04 | International Business Machines Corporation | Methods for Detecting Inter-Module Dependencies |
CN107885501A (zh) * | 2017-11-03 | 2018-04-06 | 武汉斗鱼网络科技有限公司 | 获取Android中组件相互引用关系的方法及装置 |
CN108052314A (zh) * | 2017-12-26 | 2018-05-18 | 无线生活(杭州)信息科技有限公司 | 一种基于Gradle的插件打包的方法及装置 |
CN108733376A (zh) * | 2018-04-27 | 2018-11-02 | 链家网(北京)科技有限公司 | 组件化下利用一套源码编译多个Android APP的方法及装置 |
Non-Patent Citations (3)
Title |
---|
SODASLAY: ""微信 Android 模块化架构重构实践"", 《HTTPS://BLOG.CSDN.NET/SODASLAY/ARTICLE/DETAILE/74010852》 * |
YANGCHENGDONG: ""Rebuild multiple complete module structures within the module"", 《HTTPS://GITHUB.COM/EASTWOODYANG/MICROMODULE/TREE/V1.2.1》 * |
凉介LIN: ""构建缓存GRADLE"", 《HTTPS://WWW.CNBLOGS.COM/VANA/P/9970673.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352631A (zh) * | 2020-02-21 | 2020-06-30 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种接口兼容性检测方法及装置 |
CN111352631B (zh) * | 2020-02-21 | 2024-03-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种接口兼容性检测方法及装置 |
CN113760355A (zh) * | 2021-09-08 | 2021-12-07 | 杭州涂鸦信息技术有限公司 | 一种代码打包方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220253298A1 (en) | Systems and methods for transformation of reporting schema | |
US20170344344A1 (en) | Systems and methods for automated retrofitting of customized code objects | |
CN107832059A (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
CN105893045A (zh) | 一种业务组件加载方法、装置及业务组件运行*** | |
CN110737631A (zh) | 一种基于Flink引擎的数据解析方法及装置 | |
CN111399828A (zh) | 一种基于模型驱动的逻辑设备建模方法及终端 | |
CN106326129A (zh) | 一种程序异常信息生成方法及装置 | |
CN109725905A (zh) | 基于源码集的软件架构及实现方法、用于编译pins组件的插件及应用方法 | |
CN110442347A (zh) | 安装包编译方法、装置、电子设备及可读存储介质 | |
CN106649110B (zh) | 软件测试方法及*** | |
CN114047970A (zh) | 一种autosar架构软件的配置方法及*** | |
US11755458B2 (en) | Automatic software behavior identification using execution record | |
CN113010180A (zh) | 一种固件生成方法、***、设备以及介质 | |
CN112463596A (zh) | 测试用例数据的处理方法、装置、设备以及处理设备 | |
CN109933325A (zh) | 一种dex文件构建方法、装置及*** | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
EP3005087A1 (en) | Declarative configuration elements | |
US20130111432A1 (en) | Validation of a system model including an activity diagram | |
CN105550050A (zh) | 硬件通信的方法及装置 | |
CN112732277B (zh) | 一种java多服务应用自动安装部署的集成方法与*** | |
CN113778451B (zh) | 文件加载方法、装置、计算机***和计算机可读存储介质 | |
CN114358936A (zh) | 一种基于微服务区块链的智能合约运行方法 | |
CN113821246A (zh) | 软件无感增量式更新方法、装置、***及存储介质 | |
CN111880803A (zh) | 一种应用于多平台的软件构建方法及装置 | |
CN111881025A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 215123 14 Tengfei Innovation Park, 388 Xinping street, Suzhou Industrial Park, Suzhou, Jiangsu. Applicant after: Sipic Technology Co.,Ltd. Address before: 215123 14 Tengfei Innovation Park, 388 Xinping street, Suzhou Industrial Park, Suzhou, Jiangsu. Applicant before: AI SPEECH Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190507 |