1.获取Android中组件相互引用关系的方法,其特征在于,包括:S1,获取目标Android项目中所有组件的编译脚本文件;
S2,分别对各所述编译脚本文件进行解析,获取每个组件的依赖关系集合;
S3,针对所述每个组件的依赖关系集合执行以下步骤:
顺序取出当前组件的依赖关系集合中每项依赖关系,并执行以下步骤直至所述当前组件的依赖关系集合遍历完成:分析当前依赖关系所包含的目标组件,若所述目标组件的依赖关系集合中存在包含当前组件的依赖关系,则获知所述目标组件与当前组件之间存在相互引用关系;
其中,所述步骤S2进一步包括:
分别对各个组件的编译脚本文件执行以下步骤:
通过调用readLine方法获取当前组件的编译脚本文件中每一行的内容信息;
调用contains(“dependencies”)函数以判断当前行的内容信息中是否包含关键字dependencies,若不包含则开始读取下一行数据,直到某一行中包含关键字dependencies时开始读取“dependencies{”后的依赖关系信息,直至读取到“}”时为止;
将所读取到的依赖关系信息存储至一个集合中;或者,
所述步骤S2进一步包括:
分别对各个组件的编译脚本文件执行以下步骤:
通过调用file类中的readAll方法将当前组件的编译脚本文件中的所有内容信息读取到内存中;
调用indexOf(“dependencies{”)函数以获取所述内容信息中出现“dependencies{”的索引值index;
调用seek函数将文件游标移动到index+length(“dependencies{”)所表示的位置,通过不断移动文件游标读取“dependencies{”后的依赖关系信息,直至读取到“}”时为止;
将所读取到的依赖关系信息存储至一个集合中;
其中,所述步骤S3进一步包括:
S31,对各个组件进行编号;
S32,分析每个组件的依赖关系集合中的每项依赖关系所包含的目标组件,并获取所述目标组件的编号,将所述每项依赖关系分别映射为所获取到的编号;
S33,按照编号从小到大对所述每个组件的依赖关系集合中的所有依赖关系进行排序;
S34,针对所述每个组件的依赖关系集合执行以下步骤:顺序取出当前组件的依赖关系集合中的每个编号作为当前编号,并执行以下步骤直至所述当前组件的依赖关系集合遍历完成:获取当前编号所对应的目标组件的依赖关系集合中所有小于所述当前编号的依赖关系,若所获取到的所有小于所述当前编号的依赖关系中存在与所述当前组件的编号相对应的依赖关系,则获知当前组件与所述目标组件之间存在相互引用关系。
2.根据权利要求1所述的方法,其特征在于,在步骤S3中所述分析当前依赖关系所包含的目标组件的步骤之后还包括:若所述目标组件的依赖关系集合中不存在包含当前组件的依赖关系,则获知所述目标组件与当前组件之间不存在相互引用关系,则开始对当前组件的依赖关系集合中的下一项依赖关系进行分析。
3.根据权利要求1所述的方法,其特征在于,所述步骤S34还包括:若当前编号所对应的目标组件的依赖关系集合中不存在小于所述当前编号的依赖关系,则获知当前组件与所述目标组件之间不存在相互引用关系,则开始对当前组件的依赖关系集合中的下一个编号进行分析。
4.获取Android中组件相互引用关系的装置,其特征在于,包括:第一获取模块,用于获取目标Android项目中所有组件的编译脚本文件;
第二获取模块,用于分别对各所述编译脚本文件进行解析,获取每个组件的依赖关系集合;
分析与输出模块,用于针对所述每个组件的依赖关系集合执行以下步骤:顺序取出当前组件的依赖关系集合中的每项依赖关系,并执行以下步骤直至所述当前组件的依赖关系集合遍历完成:分析当前依赖关系所包含的目标组件,若所述目标组件的依赖关系集合中存在包含当前组件的依赖关系,则获知所述目标组件与当前组件之间存在相互引用关系;
其中,所述第二获取模块具体用于:
分别对各个组件的编译脚本文件执行以下步骤:
通过调用readLine方法获取当前组件的编译脚本文件中每一行的内容信息;
调用contains(“dependencies”)函数以判断当前行的内容信息中是否包含关键字dependencies,若不包含则开始读取下一行数据,直到某一行中包含关键字dependencies时开始读取“dependencies{”后的依赖关系信息,直至读取到“}”时为止;
将所读取到的依赖关系信息存储至一个集合中;或者,
所述第二获取模块具体用于:
分别对各个组件的编译脚本文件执行以下步骤:
通过调用file类中的readAll方法将当前组件的编译脚本文件中的所有内容信息读取到内存中;
调用indexOf(“dependencies{”)函数以获取所述内容信息中出现“dependencies{”的索引值index;
调用seek函数将文件游标移动到index+length(“dependencies{”)所表示的位置,通过不断移动文件游标读取“dependencies{”后的依赖关系信息,直至读取到“}”时为止;
将所读取到的依赖关系信息存储至一个集合中;
其中,所述分析与输出模块具体用于:
对各个组件进行编号;
分析每个组件的依赖关系集合中的每项依赖关系所包含的目标组件,并获取所述目标组件的编号,将所述每项依赖关系分别映射为所获取到的编号;
按照编号从小到大对所述每个组件的依赖关系集合中的所有依赖关系进行排序;
针对所述每个组件的依赖关系集合执行以下步骤:
顺序取出当前组件的依赖关系集合中的每个编号作为当前编号,并执行以下步骤直至所述当前组件的依赖关系集合遍历完成:获取当前编号所对应的目标组件的依赖关系集合中所有小于所述当前编号的依赖关系,若所获取到的所有小于所述当前编号的依赖关系中存在与所述当前组件的编号相对应的依赖关系,则获知当前组件与所述目标组件之间存在相互引用关系。
5.获取Android中组件相互引用关系的设备,其特征在于,包括存储器、处理器、以及总线,所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述存储器中的程序指令,以执行如权利要求1至3任一所述的方法。
6.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至3任一所述的方法。