CN112015394A - 安卓功能模块开发方法和装置、计算机系统和存储介质 - Google Patents

安卓功能模块开发方法和装置、计算机系统和存储介质 Download PDF

Info

Publication number
CN112015394A
CN112015394A CN202010878242.6A CN202010878242A CN112015394A CN 112015394 A CN112015394 A CN 112015394A CN 202010878242 A CN202010878242 A CN 202010878242A CN 112015394 A CN112015394 A CN 112015394A
Authority
CN
China
Prior art keywords
functional module
functional
target class
class
archive file
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.)
Granted
Application number
CN202010878242.6A
Other languages
English (en)
Other versions
CN112015394B (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010878242.6A priority Critical patent/CN112015394B/zh
Publication of CN112015394A publication Critical patent/CN112015394A/zh
Application granted granted Critical
Publication of CN112015394B publication Critical patent/CN112015394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program 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

安卓功能模块开发方法和装置、计算机系统和存储介质
技术领域
本公开涉及软件开发领域,更具体地涉及一种安卓功能模块开发方法和装置、计算机系统和存储介质。
背景技术
安卓代码工程的架构趋势是代码模块化。在代码模块化的过程中,一个功能模块依赖于另一个功能模块是指在一个功能模块的执行过程中需要调用另一个功能模块中的类、方法、或属性。
目前,Java语法使用以下关键字来声明功能模块中的类、方法、或属性的调用范围:default表示同一个包下的其他类可以调用,private表示只有类自己内部可以调用,protected表示子类可以调用,public表示任意类可以调用(即,既可以被同一功能模块中的任意其他类调用也可以被其他功能模块调用)。如果想要将功能模块中的某个类、方法、或属性暴露给同一功能模块中的任意其他类调用,则需要使用关键字public来声明该类、方法、或属性的调用范围;如果想要将功能模块中的某个类、方法、或属性暴露给其他功能模块调用,也需要使用关键字public来声明该类、方法、或属性的调用范围。
在目前的Java语法中,为了使功能模块中的某个类、方法、或属性可以被同一功能模块中的任意其他类调用,即使不希望该类、方法、或属性被其他功能模块调用,也只能使用public来声明该类、方法、或属性的调用范围。在这种情况下,该类、方法、或属性存在被其他功能模块调用的风险。
发明内容
根据本公开的第一方面,本公开的实施例公开了一种安卓功能模块开发方法,包括:针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件;当安卓代码工程中的第一功能模块需要调用任意一个目标类时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类;以及响应于在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,从该一个功能模块的归档文件调用目标类。
根据本公开的第二方面,本公开的实施例公开了一种安卓功能模块开发装置,包括:文件生成单元,被配置为针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件;目标类查找单元,被配置为当安卓代码工程中的第一功能模块需要调用任意一个目标类时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类;目标类调用单元,被配置为响应于目标类查找单元在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,从该一个功能模块的归档文件调用目标类。
根据本公开的第三方面,本公开的实施例公开了一种计算机系统,包括:处理器;以及存储计算机程序的存储器,该计算机程序在由处理器执行时使得处理器执行上述安卓功能模块开发方法。
根据本公开的第四方面,本公开的实施例公开了一种计算机可读存储介质,其上存储有计算机程序,其中,计算机程序在被处理器执行时实现上述安卓功能模块开发方法。
根据本公开的一个或多个实施例,通过针对安卓代码工程中的每个功能模块生成包含该功能模块中允许其他功能模块调用的类的归档文件,并且在安卓工程代码中的第一功能模块需要调用任意一个目标类时在第一功能模块所依赖的各个功能模块的归档文件中查找目标类,实现了功能模块的解耦,提高了目标类的查找效率,并且可以避免各个功能模块中不希望被其他功能模块调用的类被其他功能模块调用的情况的发生。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于说明实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出根据本公开的实施例的安卓功能模块开发方法的流程图;
图2是示出添加第一注解和第二注解后的示例类的代码段的截屏图;
图3是示出通过对图2所示的示例类的代码段进行解析生成的归档文件中的代码段的截屏图;
图4是示出根据本公开的实施例的安卓功能模块开发装置的框图;
图5是示出能够用于实现本公开的实施例的示例性计算机系统的结构框图。
具体实施方式
下面结合附图和实施例对本公开进行进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外,还需要说明的是,为了便于描述,附图中仅示出了与相关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的步骤或功能模块的编号仅用于对各个步骤或功能模块进行标识,而不用于限制各个步骤的执行顺序或各个功能模块相互之间的连接关系。
鉴于在目前的Java语法中,为了使功能模块中的某个类、方法、或属性可以被同一功能模块中的任意其他类调用,即使不希望该类、方法、或属性被其他功能模块调用也只能使用public来声明该类、方法、或属性的调用范围的情况下,该类、方法、或属性存在被其他功能模块调用的风险,本公开的实施例提出了一种安卓功能模块开发方法和装置。
图1是示出根据本公开的实施例的安卓功能模块开发方法100的流程图。如图1所示,安卓功能模块开发方法100可以包括:S102,针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件;S104,当安卓代码工程中的第一功能模块需要调用任意一个目标类时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类;以及S106,响应于在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,从该一个功能模块的归档文件调用目标类。
在根据本公开的实施例的安卓功能模块开发方法100中,通过针对安卓代码工程中的每个功能模块生成包含该功能模块中允许其他功能模块调用的类的归档文件,并且在安卓工程代码中的第一功能模块需要调用任意一个目标类时在第一功能模块所依赖的各个功能模块的归档文件中查找目标类,实现了功能模块的解耦,提高了目标类的查找效率,并且可以避免各个功能模块中不希望被其他功能模块调用的类被其他功能模块调用的情况的发生。
在一些实施例中,安卓功能模块开发方法100还可以包括:S108,响应于在第一功能模块所依赖的各个功能模块的归档文件中均未找到目标类,输出指示第一功能模块所依赖的各个功能模块的归档文件均不包含目标类的信息。这样,可以避免在第一功能模块的执行由于未找到目标类而中断时,用户盲目猜测第一功能模块的执行中断的原因,从而有助于用户对第一功能模块的代码进行改进。
在一些实施例中,针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件可以包括:向该功能模块中允许其他功能模块调用的类添加第一注解;对添加第一注解后的功能模块进行解析,以生成包含该功能模块中允许其他功能模块调用的类的归档文件。具体地,通过向功能模块中允许其他功能模块调用的类添加第一注解可以将功能模块中允许其他功能模块调用的类标记出来,通过对添加第一注解后的功能模块进行解析可以从功能模块中提取出允许其他功能模块调用的类组成包含功能模块中允许其他功能模块调用的类的归档文件。
这里,针对安卓代码工程中的每个功能模块,通过向该功能模块中允许其他功能模块调用的类添加第一注解并对添加第一注解后的功能模块进行解析,可以简单、高效地生成包含该功能模块中允许其他功能模块调用的类的归档文件。
在一些实施例中,对于每个功能模块中允许其他功能模块调用的某个类,可能并不希望该类中的所有方法和属性都被暴露给其他功能模块调用。因此,针对安卓代码工程中的每个功能模块,除了可以通过向该功能模块中允许其他功能模块调用的类添加第一注解以将该功能模块中允许其他功能模块调用的类标记出来以外,还可以通过向该功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性添加第二注解将该功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性标记出来。然后,通过对添加第一注解和第二注解后的功能模块进行解析可以从功能模块中提取出允许其他功能模块的类及其中允许其他功能模块调用的方法和属性组成包含该功能模块中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的归档文件。
也就是说,针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件可以包括:向该功能模块中允许其他功能模块调用的类添加第一注解;向该功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性添加第二注解;对添加第一注解和第二注解后的功能模块进行解析,以生成包含该功能模块中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的归档文件。这样,不仅可以避免功能模块中不希望其他功能模块调用的类被其他功能模块调用的情况发生,而且可以避免功能模块中允许其他功能模块调用的类中的、不希望被其他功能模块调用的方法或属性被其他功能模块调用的情况发生。
在一些实施例中,当第一功能模块需要调用任意一个目标类中的任意一个方法或属性时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类;如果在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,则在该一个功能模块的归档文件中查找该一个方法或属性;如果在该一个功能模块的归档文件中找到该一个方法或属性,则从该一个功能模块的归档文件调用该一个方法或属性,否则输出指示第一功能模块所依赖的各个功能模块的归档文件均不包含该一个方法或属性的信息。这里,如果在第一功能模块所依赖的各个功能模块的归档文件中均未找到目标类,则不再继续在这些归档文件中查找该目标类中的方法或属性,只有在第一功能模块所依赖的某个功能模块的归档文件中找到目标类的情况下才进一步查找该目标类中的方法或属性,因此可以提高查找效率,从而提高第一功能模块的执行速度。
在一些实施例中,可以在安卓代码工程的应用层实现根据本公开的实施例的安卓功能模块开发方法100。此时,针对安卓工程代码的每个功能模块生成的上述归档文件可以是.jar文件。.jar文件是一种Java归档文件,它在安全性、下载时间、压缩效率等方面都有显著优势。例如,可以对.jar文件中的内容添加数字化签名,能够识别数字化签名的工具可以有选择地向用户授予软件安全特权,并且可以检测.jar文件中的代码是否被篡改;如果一个小应用程序(applet)捆绑到一个.jar文件中,那么浏览器可以在一个HTTP事务中下载这个小应用程序的类文件和相关资源,而不需要针对这个小应用程序中的每个类或资源文件打开一个新链接;.jar文件是一种压缩文件,可以节省存储空间。
需要说明的是,这里使用术语“第一”来描述某个功能模块并不意图限定该功能模块在安卓代码工程中的位置、时序、或重要性,而只是用于将该功能模块与其他功能模块区分开。
下面结合示例,说明根据本公开的实施例的安卓功能模块开发方法100。这里,假设功能模块A依赖于功能模块B,编译器执行功能模块A即是执行命令javac${模块A源码}-classpath${模块B的.jar文件}。classpath中的功能模块B的.jar文件是包含功能模块B中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的.jar文件,classpath的作用是如果功能模块A中的代码引用一个类(例如,Foo)但是A功能模块本身并不包含类Foo,那么编译器就会去classpath里的功能模块B的.jar文件中查找类Foo。如果编译器在功能模块B的.jar文件中找到类Foo,则从功能模块B的.jar文件中调用类Foo,否则输出指示功能模块B的.jar文件不包含类Foo的信息。
下面结合图2和图3说明生成功能模块B的.jar文件的具体过程。假设功能模块B中只有类public class DefaultClass()允许其他功能模块调用,并且类public classDefaultClass()中的属性public String hideField=“hideField”和方法public voidhideMethod()不允许其他功能模块调用。图2是示出添加第一注解和第二注解后的示例类的代码段的截屏图。图3是示出通过对图2所示的示例类的代码段进行解析生成的归档文件中的代码段的截屏图。如图2和图3所示,对于功能模块B中允许其他功能模块调用的类public class DefaultClass(),可以向该类添加第一注解(例如,@public)并向该类中不允许其他功能模块调用的方法public void hideMethod()和属性public StringhideField=“hideField”添加第二注解(@hide),通过对图2所示的添加@public和@hike后的类public class DefaultClass()进行解析可以生成包含图3所示的代码段的.jar文件。
在根据本公开的一个或多个实施例中,通过针对安卓代码工程中的每个功能模块生成包含该功能模块中允许其他功能模块调用的类的归档文件,并且在安卓工程代码中的第一功能模块需要调用任意一个目标类时在第一功能模块所依赖的各个功能模块的归档文件中查找目标类,实现了功能模块的解耦,提高了目标类的查找效率,并且可以避免各个功能模块中不希望被其他功能模块调用的类被其他功能模块调用的情况的发生。
图4是示出根据本公开的实施例的安卓功能模块开发装置200的框图。如图4所示,安卓功能开发装置200包括文件生成单元202、目标类查找单元204、以及目标类调用单元206。文件生成单元202被配置为针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件。目标类查找单元204被配置为当安卓代码工程中的第一功能模块需要调用任意一个目标类时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类。目标类调用单元206被配置为响应于目标类查找单元在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,从该一个功能模块的归档文件调用目标类。
在本实施例的一些实施方式中,目标类调用单元进一步被配置为:响应于目标类查找单元在第一功能模块所依赖的各个功能模块的归档文件中均未找到目标类,输出指示第一功能模块所依赖的各个功能模块的归档文件均不包含目标类的信息。
在本实施例的一些实施方式中,文件生成单元进一步被配置为:向功能模块中允许其他功能模块调用的类添加第一注解;对添加第一注解后的功能模块进行解析,以生成包含功能模块中允许其他功能模块调用的类的归档文件。
在本实施例的一些实施方式中,文件生成单元进一步被配置为:向功能模块中允许其他功能模块调用的类添加第一注解;向功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性添加第二注解;对添加第一注解和第二注解后的功能模块进行解析,以生成包含功能模块中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的归档文件。
在本实施例的一些实施方式中,目标类查找单元进一步被配置为当第一功能模块需要调用任意一个目标类中的任意一个方法或属性时:在第一功能模块所依赖的各个功能模块的归档文件中查找目标类,当在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类时,在该一个功能模块的归档文件中查找该一个方法或属性;目标类调用单元进一步被配置为:当目标类查找单元在该一个功能模块的归档文件中找到该一个方法或属性时,从该一个功能模块的归档文件调用该一个方法或属性,当目标类查找单元在该一个功能模块的归档文件中未找到该一个方法或属性时,输出指示第一功能模块所依赖的各个功能模块的归档文件均不包含该一个方法或属性的信息。
在本实施例的一些实施方式中,归档文件是.jar文件。
根据本公开的实施例的安卓功能模块开发装置200及其相应功能单元的具体实现方式和技术效果可参考图1至3对应实施例中的相关说明,在此不再赘述。
图5是示出能够用于实现本公开的实施例的示例性计算机系统的结构框图。下面结合图5,描述适于用来实现本公开的实施例的计算机系统300。应该明白,图5示出的计算机系统300仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统300可以包括处理装置(例如,中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有计算机系统300操作所需的各种程序和数据。处理装置301、ROM 302、以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、摄像头、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD,Liquid Crystal Display)、扬声器、振动器等的输出装置307;包括例如闪存(Flash Card)等的存储装置308;以及通信装置309。通信装置309可以允许计算机系统300与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的计算机系统300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图5中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例提供一种计算机可读存储介质,其存储计算机程序,该计算机程序包含用于执行图1-3所示的方法100的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM302被安装。在该计算机程序被处理装置301执行时,实现本公开的实施例的系统中限定的上述功能。
需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(Radio Frequency,射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述计算机系统300中所包含的;也可以是单独存在,而未装配入该计算机系统300中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该计算设备执行时,使得该计算机系统:针对安卓代码工程中的每个功能模块,生成包含该功能模块中允许其他功能模块调用的类的归档文件;当安卓代码工程中的第一功能模块需要调用任意一个目标类时,在第一功能模块所依赖的各个功能模块的归档文件中查找目标类;以及响应于在第一功能模块所依赖的任意一个功能模块的归档文件中找到目标类,从该一个功能模块的归档文件调用目标类。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能、和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器,包括文件生成单元、目标类查找单元、以及目标类调用单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (14)

1.一种安卓功能模块开发方法,包括:
针对安卓代码工程中的每个功能模块,生成包含所述功能模块中允许其他功能模块调用的类的归档文件;
当所述安卓代码工程中的第一功能模块需要调用任意一个目标类时,在所述第一功能模块所依赖的各个功能模块的归档文件中查找所述目标类;以及
响应于在所述第一功能模块所依赖的任意一个功能模块的归档文件中找到所述目标类,从所述一个功能模块的归档文件调用所述目标类。
2.根据权利要求1所述的方法,还包括:
响应于在所述第一功能模块所依赖的各个功能模块的归档文件中均未找到所述目标类,输出指示所述第一功能模块所依赖的各个功能模块的归档文件均不包含所述目标类的信息。
3.根据权利要求1所述的方法,其中,针对所述安卓代码工程中的每个功能模块,生成包含所述功能模块中允许其他功能模块调用的类的归档文件包括:
向所述功能模块中允许其他功能模块调用的类添加第一注解;
对添加所述第一注解后的所述功能模块进行解析,以生成包含所述功能模块中允许其他功能模块调用的类的归档文件。
4.根据权利要求1所述的方法,其中,针对所述安卓代码工程中的每个功能模块,生成包含所述功能模块中允许其他功能模块调用的类的归档文件包括:
向所述功能模块中允许其他功能模块调用的类添加第一注解;
向所述功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性添加第二注解;
对添加所述第一注解和所述第二注解后的所述功能模块进行解析,以生成包含所述功能模块中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的归档文件。
5.根据权利要求4所述的方法,其中,当所述第一功能模块需要调用任意一个目标类中的任意一个方法或属性时:
在所述第一功能模块所依赖的各个功能模块的归档文件中查找所述目标类;
如果在所述第一功能模块所依赖的任意一个功能模块的归档文件中找到所述目标类,则在所述一个功能模块的归档文件中查找所述一个方法或属性;
如果在所述一个功能模块的归档文件中找到所述一个方法或属性,则从所述一个功能模块的归档文件调用所述一个方法或属性,否则输出指示所述第一功能模块所依赖的各个功能模块的归档文件均不包含所述一个方法或属性的信息。
6.根据权利要求1至5中任一项所述的方法,其中,所述归档文件是.jar文件。
7.一种安卓功能模块开发装置,包括:
文件生成单元,被配置为针对安卓代码工程中的每个功能模块,生成包含所述功能模块中允许其他功能模块调用的类的归档文件;
目标类查找单元,被配置为当所述安卓代码工程中的第一功能模块需要调用任意一个目标类时,在所述第一功能模块所依赖的各个功能模块的归档文件中查找所述目标类;
目标类调用单元,被配置为响应于所述目标类查找单元在所述第一功能模块所依赖的任意一个功能模块的归档文件中找到所述目标类,从所述一个功能模块的归档文件调用所述目标类。
8.根据权利要求7所述的装置,其中,所述目标类调用单元进一步被配置为:
响应于所述目标类查找单元在所述第一功能模块所依赖的各个功能模块的归档文件中均未找到所述目标类时,输出指示所述第一功能模块所依赖的各个功能模块的归档文件均不包含所述目标类的信息。
9.根据权利要求7所述的装置,其中,所述文件生成单元进一步被配置为:
向所述功能模块中允许其他功能模块调用的类添加第一注解;
对添加所述第一注解后的所述功能模块进行解析,以生成包含所述功能模块中允许其他功能模块调用的类的归档文件。
10.根据权利要求7所述的装置,其中,所述文件生成单元进一步被配置为:
向所述功能模块中允许其他功能模块调用的类添加第一注解;
向所述功能模块中允许其他功能模块调用的类中的、不允许其他功能模块调用的方法或属性添加第二注解;
对添加所述第一注解和所述第二注解后的所述功能模块进行解析,以生成包含所述功能模块中允许其他功能模块调用的类及其中允许其他功能模块调用的方法和属性的归档文件。
11.根据权利要求10所述的装置,其中,所述目标类查找单元进一步被配置为当所述第一功能模块需要调用任意一个目标类中的任意一个方法或属性时:
在所述第一功能模块所依赖的各个功能模块的归档文件中查找所述目标类,
当在所述第一功能模块所依赖的任意一个功能模块的归档文件中找到所述目标类时,在所述一个功能模块的归档文件中查找所述一个方法或属性;
所述目标类调用单元进一步被配置为:
当所述目标类查找单元在所述一个功能模块的归档文件中找到所述一个方法或属性时,从所述一个功能模块的归档文件调用所述一个方法或属性,
当所述目标类查找单元在所述一个功能模块的归档文件中未找到所述一个方法或属性时,输出指示所述第一功能模块所依赖的各个功能模块的归档文件均不包含所述一个方法或属性的信息。
12.根据权利要求7至11中任一项所述的装置,其中,所述归档文件是.jar文件。
13.一种计算机系统,包括:
处理器;以及
存储计算机程序的存储器,所述计算机程序在由所述处理器执行时使得所述处理器执行根据权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现根据权利要求1-6中任一项所述的方法。
CN202010878242.6A 2020-08-27 2020-08-27 安卓功能模块开发方法和装置、计算机系统和存储介质 Active CN112015394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010878242.6A CN112015394B (zh) 2020-08-27 2020-08-27 安卓功能模块开发方法和装置、计算机系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010878242.6A CN112015394B (zh) 2020-08-27 2020-08-27 安卓功能模块开发方法和装置、计算机系统和存储介质

Publications (2)

Publication Number Publication Date
CN112015394A true CN112015394A (zh) 2020-12-01
CN112015394B CN112015394B (zh) 2024-02-27

Family

ID=73503619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010878242.6A Active CN112015394B (zh) 2020-08-27 2020-08-27 安卓功能模块开发方法和装置、计算机系统和存储介质

Country Status (1)

Country Link
CN (1) CN112015394B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110058850A (zh) * 2019-04-10 2019-07-26 腾讯音乐娱乐科技(深圳)有限公司 一种应用的开发方法、装置以及存储介质
CN110764748A (zh) * 2019-10-23 2020-02-07 北京字节跳动网络技术有限公司 代码调用方法、装置、终端及存储介质
CN110865889A (zh) * 2018-08-27 2020-03-06 北京高绎信息技术有限公司 组件间传递事件的方法和装置
WO2020048026A1 (zh) * 2018-09-04 2020-03-12 广州视源电子科技股份有限公司 批注显示方法、装置、设备和存储介质
CN111367510A (zh) * 2020-02-24 2020-07-03 腾讯音乐娱乐科技(深圳)有限公司 一种安卓功能模块开发的方法及装置
CN111488286A (zh) * 2020-04-15 2020-08-04 腾讯音乐娱乐科技(深圳)有限公司 一种Android模块独立开发的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110865889A (zh) * 2018-08-27 2020-03-06 北京高绎信息技术有限公司 组件间传递事件的方法和装置
WO2020048026A1 (zh) * 2018-09-04 2020-03-12 广州视源电子科技股份有限公司 批注显示方法、装置、设备和存储介质
CN110058850A (zh) * 2019-04-10 2019-07-26 腾讯音乐娱乐科技(深圳)有限公司 一种应用的开发方法、装置以及存储介质
CN110764748A (zh) * 2019-10-23 2020-02-07 北京字节跳动网络技术有限公司 代码调用方法、装置、终端及存储介质
CN111367510A (zh) * 2020-02-24 2020-07-03 腾讯音乐娱乐科技(深圳)有限公司 一种安卓功能模块开发的方法及装置
CN111488286A (zh) * 2020-04-15 2020-08-04 腾讯音乐娱乐科技(深圳)有限公司 一种Android模块独立开发的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴小胜 等: "基于Android平台的单机游戏设计实验综述", 电脑知识与技术 *

Also Published As

Publication number Publication date
CN112015394B (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
CN110764748B (zh) 代码调用方法、装置、终端及存储介质
CN111563015A (zh) 数据监控方法及装置、计算机可读介质及终端设备
CN111367516A (zh) 应用界面生成方法、装置及电子设备
CN111309304B (zh) 一种生成idl文件的方法、装置、介质和电子设备
CN110489162B (zh) 安装包so文件精简方法、装置、介质和设备
CN113407165B (zh) Sdk的生成和自升级方法、装置、可读介质和设备
CN112416303B (zh) 软件开发工具包热修复方法、装置及电子设备
CN109815455B (zh) 项目文件处理方法和装置
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN111158777A (zh) 组件调用方法、装置及计算机可读存储介质
CN112015394B (zh) 安卓功能模块开发方法和装置、计算机系统和存储介质
CN113448585B (zh) 一种线程池的编译方法、装置、电子设备和存储介质
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN111399902B (zh) 客户端源文件处理方法、装置、可读介质与电子设备
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN113448550B (zh) 实现类的收集管理方法、装置、电子设备及计算机介质
CN111796802B (zh) 功能包生成方法、装置和电子设备
US11340897B1 (en) Subject matter expert identification for computer software
CN112256326B (zh) 信息的处理方法、装置、设备及存储介质
CN109933334B (zh) 一种程序执行方法、装置、设备及介质
CN116594630A (zh) 文件生成方法、装置、介质及电子设备
CN116541029A (zh) 应用程序安装包的生成方法及装置、电子设备和存储介质
CN116820566A (zh) 数据处理方法、装置、电子设备和存储介质
CN116418895A (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
GR01 Patent grant
GR01 Patent grant