CN106775744B - 一种生成静态库的方法和装置 - Google Patents
一种生成静态库的方法和装置 Download PDFInfo
- Publication number
- CN106775744B CN106775744B CN201611232100.2A CN201611232100A CN106775744B CN 106775744 B CN106775744 B CN 106775744B CN 201611232100 A CN201611232100 A CN 201611232100A CN 106775744 B CN106775744 B CN 106775744B
- Authority
- CN
- China
- Prior art keywords
- sub
- project
- file
- library
- projects
- 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.)
- Active
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种生成静态库的方法和装置。该方法包括:创建壳工程;在所述壳工程中集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程;编译所述壳工程;生成所述壳工程中所述多个子工程分别对应的静态库。本发明的工作量小,且不会发生因为子工程间可以存在相互依赖的关系而无法编译的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种生成静态库的方法和装置。
背景技术
随着APP(Application,应用软件)业务功能的不断增多,APP的源码文件剧增,APP使用到的第三方开源代码也越来越多。但是随着源码文件的增加,APP在编译的时候就会越慢,特别是功能庞大的APP,编译速度会直接影响到开发和测试的进度,目前针对该问题有两种解决方式:
方式一,将源码文件编译成静态库,省去编译源码文件的时间。静态库是不公开的源代码,是经过编译后的二进制文件。静态库可以被完整地复制到可执行文件中。
方式二,框架复用。预先设计技术框架,在开发APP时,可以直接套用现成的一套技术架构,一般情况下,这套框架只需对外提供技术文档和静态库,不需要以源代码的方式对外提供,这样同时也保护了源码权。
现有iOS系统中有.a和.framework两种静态库。以.a静态库为例,生成静态库的方式包括:在集成开发工具XCode中,新建项目->选择“Cocoa Touch Static Library”;添加源码文件和用到的库;选择需要在头文件header中暴露(呈现)出来的.h文件;在真机iphoneos和模拟器iphonesimulator分别对源码文件进行编译并生成各自的.a文件;用lipo命令将这两个.a文件合并生成总的.a库,总的.a库再加上header中暴露出来的.h文件,即完成.a静态库的生成。
现有生成静态库的方式可以为单独的库工程生成对应的静态库,但是如果需要生成静态库的库工程数量较多,则具有以下不足之处:
1、需要为每个库工程创建一个工程文件,然后对每个库工程分别进行操作,工作量比较大,而且有些库工程是一个独立的APP,对于需要运行的应用不能再加入库工程,进而也无法进行编译。
2、如果库工程之间有相互依赖的话,同样不能编译,更不能生成静态库,如果用工具CocoaPods将依赖的工程pod(集成)进来,还是会因为访问不到主工程中的代码而无法编译;如果将依赖的工程源码加入其中,会造成最后生成的.a库有重叠的文件,而且这样做本身工作量也比较大。
3、每个库工程生成库文件前都要需要人工检查一遍对外暴露的.h文件是否有增减,在工程较多的情况下较为不便,且工作量大。
所以,在为多个库工程批量生成.a静态库时,工作量较大且在库工程之间存在直接或间接的依赖关系时,会导致不能编译的问题发生。
发明内容
本发明提供一种生成静态库的方法和装置,用以解决在为多个库工程批量生成.a静态库时,工作量较大且在库工程之间存在直接或间接的依赖关系时,会导致不能编译的问题发生。
针对上述技术问题,本发明是通过以下技术方案来解决的:
本发明提供一种生成静态库的方法,包括:创建壳工程;在所述壳工程中集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程;编译所述壳工程;生成所述壳工程中所述多个子工程分别对应的静态库。
其中,所述在所述壳工程中集成多个子工程,包括:根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。
其中,所述编译所述壳工程,包括:在release模式下,分别在操作系统和模拟器编译所述壳工程。
其中,所述生成所述壳工程中所述多个子工程分别对应的静态库,包括:从所述操作系统的预设目录中获取每个所述子工程对应的.a库文件;从所述模拟器的预设目录中获取每个所述子工程对应的.a库文件;将相同子工程的两个.a库文件合并为一个总.a库文件并存储;获取每个所述子工程需要暴露的头文件并存储到所述子工程的头文件目录中,并且获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中;根据每个所述子工程的总.a库文件、需要暴露的头文件和资源子文件,形成所述子工程对应的静态库。
其中,所述获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中,还包括:在获取的所述资源文件中,将.xib文件进行序列化处理,形成.nib文件,将所述.nib文件存储到所述子工程的资源文件目录中。
本发明还提供了一种生成静态库的装置,包括:创建模块,用于创建壳工程;集成模块,用于在所述壳工程中集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程;编译模块,用于编译所述壳工程;生成模块,用于生成所述壳工程中所述多个子工程分别对应的静态库。
其中,所述集成模块,用于根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。
其中,所述编译模块,用于在release模式下,分别在操作系统和模拟器编译所述壳工程。
其中,所述生成模块,用于:从所述操作系统的预设目录中获取每个所述子工程对应的.a库文件;从所述模拟器的预设目录中获取每个所述子工程对应的.a库文件;将相同子工程的两个.a库文件合并为一个总.a库文件并存储;获取每个所述子工程需要暴露的头文件并存储到所述子工程的头文件目录中,并且获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中;根据每个所述子工程的总.a库文件、需要暴露的头文件和资源子文件,形成所述子工程对应的静态库。
其中,所述生成模块,还用于在获取的所述资源文件中,将.xib文件进行序列化处理,形成.nib文件,将所述.nib文件存储到所述子工程的资源文件目录中。
本发明有益效果如下:
本发明创建壳工程,该壳工程集成所有需要生成静态库的子工程,这些子工程间可以存在相互依赖的关系,对壳工程进行编译,就可以批量生成对应这些子工程的静态库,再批量进行头文件和资源文件的获取,得到最终的完整的静态库。本发明的工作量小,且不会发生因为子工程间可以存在相互依赖的关系而无法编译的问题。
附图说明
图1是根据本发明一实施例的生成静态库的方法流程图;
图2是根据本发明一实施例的批量生成静态库的步骤流程图;
图3是根据本发明一实施例的生成静态库的装置结构图。
具体实施方式
本发明创建壳工程,该壳工程通过CocoaPods引入(集成)所有需要生成静态库的子工程,这些子工程间可以存在相互依赖的关系,对壳工程进行编译,批量生成对应这些子工程的静态库,再批量进行头文件和资源文件的获取,得到最终的完整的静态库。本发明的工作量小,且不会发生因为子工程间可以存在相互依赖的关系而无法编译的问题。
以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
实施例一
本实施例提供一种生成静态库的方法。图1是根据本发明一实施例的生成静态库的方法流程图。
步骤S110,创建壳工程。
创建的壳工程BuildLibTool,实际上就是一个空工程。
步骤S120,在壳工程中集成多个子工程,在多个子工程中包括:未生成静态库的子工程以及未生成静态库的子工程调用的已生成静态库的子工程。
未生成静态库的子工程是指需要生成静态库的子工程。
已生成静态库的子工程是指已经存在静态库的子工程。
根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。需要集成到壳工程中的已生成静态库的子工程为未生成静态库的子工程需要调用的本地子工程。当然,未生成静态库的子工程之间也可能存在调用关系。
具体的,在壳工程BuildLibTool下准备Podfile文件,该Podfile文件中存储了集成列表,该集成列表中指定了多个子工程中每个子工程的名称,这多个子工程为未生成静态库的子工程的名称。进一步地,接收外部参数,该外部参数携带了未生成静态库的子工程的名称,将这些子工程的名称记录在集成列表中。该集成列表可以是多个子工程的名称形成的字符串列表。
壳工程BuildLibTool通过工具CocoaPods的pod install导入所有子工程,并通过env命令设置一个参数,该参数的参数值为包含多个子工程的名称的字符串列表。如果所有子工程都需要生成静态库,则参数值为空即可;如果只有部分子工程是未生成静态库的子工程,而另一部分子工程是已生成静态库的子工程,则该参数值为多个未生成静态库的子工程的名称。
步骤S130,编译所述壳工程。
在release模式下,分别在操作系统和模拟器编译所述壳工程。例如,真机iPhoneos和模拟器iPhonesimulator都在release模式下编译所述壳工程。
具体的,设置一个本地编译的路径,如build目录,在该build目录下生成真机对应的Release-iphoneos目录和模拟器对应的Release-iphonesimulator目录。经过对壳工程进行编译,在Release-iphoneos目录和Release-iphonesimulator目录中,分别都有所有子工程各自的.a库文件。每个子工程的.a库文件的名称在Release-iphoneos目录和Release-iphonesimulator目录中是相同的。例如:.a库文件的名称为:libPods-BuildLibTool-XXX.a,其中,XXX为子工程的名称。
步骤S140,生成所述壳工程中所述多个子工程分别对应的静态库。
本发明可以达到批量的为多个未生成静态库的子工程生成静态库的效果。
具体的,批量生成静态库的步骤如图2所示:
步骤S210,从操作系统的预设目录(Release-iphoneos目录)中获取每个子工程对应的.a库文件。
步骤S220,从模拟器的预设目录(Release-iphonesimulator目录)中获取每个子工程对应的.a库文件。
步骤S230,将相同子工程的两个.a库文件合并为一个总.a库文件并存储。
对Release-iphoneos目录和Release-iphonesimulator目录下每个子工程的.a库文件用lipo–create命令进行合并,也就是说,将具有相同名称的两个.a库文件进行合并,将合并得到的.a库文件保存到本地目录。在存储.a库文件时,以libPods-壳工程名称-子工程名称。
步骤S240,获取每个子工程需要暴露的头文件并存储到该子工程的头文件目录中。
对需要生成静态库的子工程拉取需要暴露的头文件到对应该子工程对应的目录中,如Headers目录,以便在链接时,从该Headers目录拉取头文件。
步骤S250,获取每个子工程的资源文件并存储到该子工程的资源文件目录中。
将获取的资源文件中的.xib文件进行序列化处理,形成.nib文件,将.nib文件存储到该子工程的资源文件目录中。进一步地,对需要生成静态库的子工程拉取资源文件到该子工程对应的资源文件目录中,如Resources目录,该Resources目录可以是名为Pods-壳工程名称-resources.sh的脚本文件。一般而言,功能复杂的子工程会存在静态资源,如:.bundle、图片资源、.xib、.plist、.js、音视频文件等。对于.xib文件,需要将.xib文件序列化成.nib文件后放入子工程对应的资源文件目录下,以避免在这些资源被引入后开始进行序列化,减慢子工程的编译速度的问题。由于CocoaPods在编译时,已经将所有.xib文件序列化处理,可以直接将已经编译好的.nib文件复制到资源文件目录即可。
步骤S260,根据每个子工程的总.a库文件、头文件和资源子文件,形成所述子工程对应的静态库。
步骤S250和步骤S260可以在生成.a库文件之后执行,也可以在生成.a库文件之前执行。
在本实施例中,壳工程本身也会生成对应的静态库,该静态库为总静态库,这样壳工程对应的总静态库中包含所有子工程的.a库文件、头文件和资源文件,即所有子工程各自对应的静态库。进而本实施例利用CocoaPods,可以通过对壳工程的编译,直接得到所有子工程的.a库文件,由于各子工程之间是平等的,各子工程之间是可以引用对方的文件,这就解决了子工程之间存在相互依赖不能独立编译生成静态库的问题。
在该总静态库中,如果某一子工程不存在调用其他子工程的情况,则可以将该子工程对应的静态库单独使用,如果某一子工程存储调用其他子工程的情况,则可以直接使用总静态看即可。
将生成的所有子工程的静态库及其对应的头文件和资源文件通过GIT(分布式管理控制系统)上传到服务器,即完成了整个批量生成静态库及上传的过程。
本发明通过生成壳工程对应的静态库,可以实现在所有子工程在有可能相互依赖的情况下,快速批量生成静态库,并且可以有选择性地生成静态库。在开发或测试中可以使用这些静态库,使编译时间降到最低,提高了开发效率,同时在对外提供APP技术框架及框架更新中起到了重要的作用。
本发明还提供了一种生成静态库的装置。图3是根据本发明一实施例的生成静态库的装置结构图。
创建模块310,用于创建壳工程。
集成模块320,用于在所述壳工程中集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程。
编译模块330,用于编译所述壳工程。
生成模块340,用于生成所述壳工程中所述多个子工程分别对应的静态库。
在一个实施例中,集成模块320,用于根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。
在另一实施例中,编译模块330,用于在release模式下,分别在操作系统和模拟器编译所述壳工程。
在又一实施例中,生成模块340,用于从所述操作系统的预设目录中获取每个所述子工程对应的.a库文件;从所述模拟器的预设目录中获取每个所述子工程对应的.a库文件;将相同子工程的两个.a库文件合并为一个总.a库文件并存储;获取每个所述子工程需要暴露的头文件并存储到所述子工程的头文件目录中,并且获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中;根据每个所述子工程的总.a库文件、需要暴露的头文件和资源子文件,形成所述子工程对应的静态库。进一步地,生成模块340,还用于在获取的所述资源文件中,将.xib文件进行序列化处理,形成.nib文件,将所述.nib文件存储到所述子工程的资源文件目录中。
本实施例所述的装置的功能已经在图1和2所示的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (8)
1.一种生成静态库的方法,其特征在于,包括:
创建壳工程;
在所述壳工程中通过CocoaPods集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程;
编译所述壳工程;
生成所述壳工程中所述多个子工程分别对应的静态库;
所述生成所述壳工程中所述多个子工程分别对应的静态库,包括:
从操作系统的预设目录中获取每个所述子工程对应的.a库文件;
从模拟器的预设目录中获取每个所述子工程对应的.a库文件;
将相同子工程的两个.a库文件合并为一个总.a库文件并存储;
获取每个所述子工程需要暴露的头文件并存储到所述子工程的头文件目录中,并且获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中;
根据每个所述子工程的总.a库文件、需要暴露的头文件和资源子文件,形成所述子工程对应的静态库。
2.如权利要求1所述的方法,其特征在于,所述在所述壳工程中集成多个子工程,包括:
根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,
所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。
3.如权利要求1所述的方法,其特征在于,所述编译所述壳工程,包括:
在release模式下,分别在操作系统和模拟器编译所述壳工程。
4.如权利要求1所述的方法,其特征在于,所述获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中,还包括:
在获取的所述资源文件中,将.xib文件进行序列化处理,形成.nib文件,将所述.nib文件存储到所述子工程的资源文件目录中。
5.一种生成静态库的装置,其特征在于,包括:
创建模块,用于创建壳工程;
集成模块,用于在所述壳工程中通过CocoaPods集成多个子工程,在所述多个子工程中包括:未生成静态库的子工程以及所述未生成静态库的子工程调用的已生成静态库的子工程;
编译模块,用于编译所述壳工程;
生成模块,用于生成所述壳工程中所述多个子工程分别对应的静态库;
所述生成模块,用于:
从操作系统的预设目录中获取每个所述子工程对应的.a库文件;
从模拟器的预设目录中获取每个所述子工程对应的.a库文件;
将相同子工程的两个.a库文件合并为一个总.a库文件并存储;
获取每个所述子工程需要暴露的头文件并存储到所述子工程的头文件目录中,并且获取每个所述子工程的资源文件并存储到所述子工程的资源文件目录中;
根据每个所述子工程的总.a库文件、需要暴露的头文件和资源子文件,形成所述子工程对应的静态库。
6.如权利要求5所述的装置,其特征在于,所述集成模块,用于根据预设的集成列表,在所述壳工程中集成未生成静态库的子工程;其中,
所述集成列表中记录了通过外部参数设置的未生成静态库的子工程信息。
7.如权利要求5所述的装置,其特征在于,所述编译模块,用于在release模式下,分别在操作系统和模拟器编译所述壳工程。
8.如权利要求5所述的装置,其特征在于,所述生成模块,还用于在获取的所述资源文件中,将.xib文件进行序列化处理,形成.nib文件,将所述.nib文件存储到所述子工程的资源文件目录中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611232100.2A CN106775744B (zh) | 2016-12-28 | 2016-12-28 | 一种生成静态库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611232100.2A CN106775744B (zh) | 2016-12-28 | 2016-12-28 | 一种生成静态库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775744A CN106775744A (zh) | 2017-05-31 |
CN106775744B true CN106775744B (zh) | 2021-02-23 |
Family
ID=58921482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611232100.2A Active CN106775744B (zh) | 2016-12-28 | 2016-12-28 | 一种生成静态库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775744B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577483B (zh) * | 2017-08-31 | 2019-11-15 | 武汉斗鱼网络科技有限公司 | 组件工程调用主工程代码的方法、存储介质、设备及系统 |
CN107544813B (zh) * | 2017-09-15 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种静态库配置的切换方法和系统 |
CN109144521A (zh) * | 2018-09-28 | 2019-01-04 | 五八有限公司 | 生成静态库的方法、装置、计算机设备及可读存储介质 |
CN109710230A (zh) * | 2018-12-12 | 2019-05-03 | 平安科技(深圳)有限公司 | 一种利用静态库实现目标程序生成方法及装置 |
CN110609788A (zh) * | 2019-08-27 | 2019-12-24 | 绿漫科技有限公司 | 一种检测静态库冲突的自动化方法 |
CN113204377B (zh) | 2020-01-31 | 2022-12-06 | 华为技术有限公司 | 一种动态链接库的加载方法及装置 |
CN113360156B (zh) * | 2020-03-04 | 2023-11-14 | 武汉斗鱼鱼乐网络科技有限公司 | 一种ios编译方法及相关设备 |
CN111984264B (zh) * | 2020-07-24 | 2021-11-16 | 五八有限公司 | 一种静态库的生成方法和装置 |
CN112596734B (zh) * | 2020-12-15 | 2024-06-07 | 五八同城信息技术有限公司 | 静态库生成方法及装置 |
CN112650498B (zh) * | 2020-12-21 | 2022-05-17 | 北京五八信息技术有限公司 | 静态库集成方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830981B (zh) * | 2012-09-12 | 2015-10-07 | 上海斐讯数据通信技术有限公司 | 一种用于嵌入式系统软件开发工具的实现方法 |
-
2016
- 2016-12-28 CN CN201611232100.2A patent/CN106775744B/zh active Active
Non-Patent Citations (1)
Title |
---|
iOS开发之多工程联编;niu神DNS;《https://www.jianshu.com/p/d77ed6629067》;20160325;1-9 * |
Also Published As
Publication number | Publication date |
---|---|
CN106775744A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775744B (zh) | 一种生成静态库的方法和装置 | |
CN110825362B (zh) | 低代码应用软件开发系统及方法 | |
CN110928529B (zh) | 辅助算子开发的方法和系统 | |
WO2018228211A1 (zh) | 应用转换方法、装置及设备 | |
CN108964968B (zh) | 一种容器云环境下的服务接入管理方法和系统 | |
US9021419B2 (en) | System and method for supporting intelligent design pattern automation | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN108984160B (zh) | 基于组件化的信息化快速开发框架系统 | |
WO2017074414A1 (en) | Software kit release management | |
WO2018036342A1 (zh) | 基于csar的模型文件的可视化设计方法及装置 | |
US11593342B2 (en) | Systems and methods for database orientation transformation | |
CN106557470B (zh) | 数据提取方法和装置 | |
CN105022630A (zh) | 一种组件管理系统及组件管理方法 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN113805882A (zh) | 应用程序开发的方法、装置、电子设备及存储介质 | |
CN104133676A (zh) | 一种基于脚本的功能执行方法和设备 | |
CN114461182A (zh) | 流水线构建的方法、装置、电子设备及计算机可读存储介质 | |
CN114297056A (zh) | 一种自动化测试方法及系统 | |
KR102397494B1 (ko) | 로우(Low) 코드 웹 개발 및 운영 시스템 및 이를 이용한 서비스 방법 | |
CN111596951A (zh) | 一种工程文件的配置方法及装置 | |
CN114912897A (zh) | 工作流执行方法、工作流编排方法及电子设备 | |
KR100994070B1 (ko) | 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치 | |
CN110806891B (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN112631563A (zh) | 基于框架的系统开发方法、装置、计算机设备及存储介质 | |
Ham et al. | Making configurable and unified platform, ready for broader future devices |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |