一种基于Android系统的框架代码修改方法及装置的制造方法

文档序号:8412327阅读:282来源:国知局
一种基于Android系统的框架代码修改方法及装置的制造方法
【技术领域】
[0001]本发明涉及Android技术领域,尤其涉及一种基于Android系统的框架代码修改方法及装置。
【背景技术】
[0002]Android是谷歌推出的一种智能的移动终端操作系统。在Android实际开发过程中,往往都会有一些因针对Android框架中原有功能或职责的拓展而导致的源码修改。
[0003]从代码角度看,如果要对原生的Android框架做修改,那么最佳的方式就是以类扩展的形式进行修改。但是这样修改的话,遇到访问权限的问题就必须修改原生的类文件,增加接口或是修改原本的访问权限,这样的修改不但偏离了谷歌的设计理念,而且最后也会把Android的源码改得面目全非,对于后续的平台版本升级来说既费时又费力并且危险。
[0004]从实际的开发角度出发,类扩展的形式首先需要考验到开发者的设计能力,而且对于小的功能增加或修改来说无疑是太过复杂,并且用类扩展的形式没有直接在源代码中修改来的直观,因此在实际的开发过程中也不太适用类扩展的形式来拓展Android框架中原有类的功能或职责。
[0005]因此,现有技术还有待于改进和发展。

【发明内容】

[0006]鉴于上述现有技术的不足,本发明的目的在于提供一种基于Android系统的框架代码修改方法及装置,旨在解决现有的代码修改方式维护难、影响原有Android框架、操作复杂等问题。
[0007]本发明的技术方案如下:
一种基于Android系统的框架代码修改方法,其中,包括步骤:
A、对Android框架代码进行功能扩展时,解耦成扩展代码和原生代码,框架代码的功能扩展写在扩展代码中,使扩展代码和原生代码分离;
B、在进行编译时,将原生代码和扩展代码进行代码重组,使原生代码和扩展代码之间实现互访,以及通过特定转换将扩展代码重塑为可供外部访问的类对象。
[0008]所述的基于Android系统的框架代码修改方法,其中,所述步骤A中,解耦成扩展代码时,扩展代码的包名与原生代码的报名一致;扩展代码的文件名包含有原生代码的特定标识;扩展代码中有一个参数为原生代码的构造器,并且原生代码的实例保存在扩展代码中。
[0009]所述的基于Android系统的框架代码修改方法,其中,所述步骤B中,将原生代码和扩展代码进行代码重组的过程具体包括:
B1、合并原生代码和扩展代码的导入信息;
B2、导入扩展代码使扩展代码成为原生代码中的内部类; B3、去除扩展代码的公共字段,使扩展代码变成包访问权限的嵌套类,降低扩展代码对外访问范围;
B4、在扩展代码中加入静态字段,使扩展代码成为原生代码的嵌套类;
B5、构建出一个嵌套类的子类对象。
[0010]所述的基于Android系统的框架代码修改方法,其中,所述步骤B中,通过特定转换将扩展代码重塑为可供外部访问的类对象的步骤具体包括:
BI’、重塑扩展代码中原有的导入信息;
B2’、创建一个继承自原生代码的嵌套类的扩展类;
B3’、创建一个参数为原生代码的构造器;
B4’、创建一个静态方法,来扩展类对象。
[0011]所述的基于Android系统的框架代码修改方法,其中,所述步骤B3’,构造器的实现为调用父类的构造。
[0012]所述的基于Android系统的框架代码修改方法,其中,所述步骤B4’,静态方法为get O方法,内部实现为通过原生代码获取其对应的扩展代码。
[0013]—种基于Android系统的框架代码修改装置,其中,包括:
分离模块,用于对Android框架代码进行功能扩展时,解耦成扩展代码和原生代码,框架代码的功能扩展写在扩展代码中,使扩展代码和原生代码分离;
编译模块,用于在进行编译时,将原生代码和扩展代码进行代码重组,使原生代码和扩展代码之间实现互访,以及通过特定转换将扩展代码重塑为可供外部访问的类对象。
[0014]所述的基于Android系统的框架代码修改装置,其中,所述编译模块包括:
合并单元,用于合并原生代码和扩展代码的导入信息;
导入单元,用于导入扩展代码使扩展代码成为原生代码中的内部类;
去除单元,用于去除扩展代码的公共字段,使扩展代码变成包访问权限的嵌套类,降低扩展代码对外访问范围;
静态字段加入单元,用于在扩展代码中加入静态字段,使扩展代码成为原生代码的嵌套类;
构建单元,用于构建出一个嵌套类的子类对象。
[0015]所述的基于Android系统的框架代码修改装置,其中,所述编译模块还包括:
重塑单元,用于重塑扩展代码中原有的导入信息;
第一创建单元,用于创建一个继承自原生代码的嵌套类的扩展类;
第二创建单元,用于创建一个参数为原生代码的构造器;
第三创建单元,用于创建一个静态方法,来扩展类对象。
[0016]所述的基于Android系统的框架代码修改装置,其中,所述分离模块中,解耦成扩展代码时,扩展代码的包名与原生代码的报名一致;扩展代码的文件名包含有原生代码的特定标识;扩展代码中有一个参数为原生代码的构造器,并且原生代码的实例保存在扩展代码中。
[0017]有益效果:本发明使用扩展代码和原生代码分离的形式来修改Android框架源码,使得原本应该在Android框架代码中修改的代码统一放到扩展代码中,并且分离出来的扩展代码与原生代码有着相互的完全互访的权限,即,仅在扩展代码与原生代码之间打破Java规范下的访问权限限制,对于其他的外部代码来说,他们之间的访问是受到Java规范的访问权限的约束。
【附图说明】
[0018]图1为本发明一种基于Android系统的框架代码修改方法较佳实施例的流程图。
[0019]图2为本发明的框架代码修改方法的原理图。
[0020]图3为本发明的原生代码和扩展代码的关系示意图。
[0021]图4为本发明的物理结构示意图。
[0022]图5为本发明中扩展代码和原生代码合并与重塑时的原理图。
[0023]图6为图1中步骤S102 —实施例的具体流程图。
[0024]图7为图1中步骤S102另一实施例的具体流程图。
[0025]图8为本发明基于Android系统的框架代码修改装置较佳实施例的结构框图。
[0026]图9为图8所示装置中编译模块一实施例的结构框图。
[0027]图10为图8所示装置中编译模块另一实施例的具体结构框图。
【具体实施方式】
[0028]本发明提供一种基于Android系统的框架代码修改方法及装置,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0029]请参阅图1,图1为本发明一种基于Android系统的框架代码修改方法较佳实施例的流程图,如图所示,其包括步骤:
5101、对Android框架代码进行功能扩展时,解耦成扩展代码和原生代码,框架代码的功能扩展写在扩展代码中,使扩展代码和原生代码分离;
5102、在进行编译时,将原生代码和扩展代码进行代码重组,使原生代码和扩展代码之间实现互访,以及通过特定转换将扩展代码重塑为可供外部访问的类对象。
[0030]在本实施例中,对Android框架代码的修改,解親成Android原生代码和扩展代码两部分,而这两部分的联系则是通过一个称为Silica的手段实现(后文详述),如图2所示,本发明的代码修改方式其是一种低耦合的代码开发方式,较其他的代码修改方式简化了很多。
[0031]所述步骤SlOl中,解耦成扩展代码时,扩展代码的书写规范需符合一定要求,扩展代码是独立于原生代码的一个单独类文件,即为一个特殊的类,其规范包括:
1、文件放置位置要求:放在易找到的位置,方便在系统编译时找到该文件;
2、包名的要求:扩展代码的包名与原生代码的包名一致;
3、文件名的要求:扩展代码的文件名包含有原生代码的特定标识,其目的是为了在系统编译时可识别出扩展代码是某个原生代码的一个扩展文件,比如原生类文件名为XXX.java,那么扩展类(扩展代码)文件名为ExtXXX.java,以Ext开头为标志(即特定标识)用于识别ExtXXX即为XXX的扩展文件,诸如此类的功能的都可以。
[0032]4、扩展文件构造器要求:扩展代码中有一个参数为原生代码的构造器,并且原生代码的实例保存在扩展代码中,有了原生代码的实例,才能实现扩展代码与原生代码之间的沟通。
[0033]通过上述规范,扩展代码与原生代码之间的关系如图3所示。
[0034]前面提到的Silica是一种与编译时紧密结合的技术,在编译时发挥效果,在Silica技术的影响下,原生代码和扩展代码不直接参与编译,而是先把原生代码和扩展代码通过代码重组(也称吸附)成新的代码参与到编译中,然后再把扩展代码通过特定转换(也称压制成型)成新的代码以供使用,其物理结构如图4所示。
[0035]由于框架代码的功能扩展已经按规范写在了扩展代码中,而图4中的编译时工序中吸附正是把原生代码和扩展代码结合起来,发挥作用,这样就与在原生代码中直接修改效果一样,与此同时,也正好可以解决二者的访问权限问题,吸附可以让二者之间有相互的完全访问的权限。经过吸附后,扩展代码已经消失(即扩展代码已经重组到原生代码中),为了保证类对象的完整以及对外部代码访问的权限控制,编译时还需要通过压制成型将扩展代码重塑为可供外部访问的类对象,并且重塑后的类对象模型与扩展代码的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1