一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于安卓系统的二次开发方法以及系统与流程

2022-11-30 10:10:54 来源:中国专利 TAG:


1.本发明涉及软件开发领域,尤其涉及一种用于安卓系统的二次开发方法以及系统。


背景技术:

2.本发明属于安卓(android)操作系统开发领域。由于安卓系统是基于linux内核开发出的开放源代码的操作系统,遵守apache software licence(在asl许可证中规定,用户可以随意使用源码而不必开源),因此每家终端设备厂商都可以基于安卓系统的源代码进行所需功能的二次开发。
3.在现有技术中,用户进行二次开发需要在安卓系统源生的构建代码上修改,每当对单个产品做新功能开发时,都需要改动构建流程,导致每个负责开发新功能的开发人员都不得不做相关的构建修改,不光增加了工作负担,而且会因为缺乏统一构建管理而导致混乱。每当产品线增加时,都需要新增新产品线的完整构建流程。考虑到android版本差异较大,可能每条产品线的构建都有巨大的差异。对开发人员来说,当开发工作在多个产品线之间切换时,很容易搞不清而增加沟通和试错成本,影响开发效率。没有进行构建过程的共用部分和差异部分的分层设计,那么每次新增功能模块或者新增产品线,都会带来对原有构建代码的修改,影响原有产品构建过程的稳定性。
4.因此,能够提出一套针对安卓系统的二次开发的普适的技术方案,是现有技术需要解决的问题。


技术实现要素:

5.本发明所要解决的技术问题是,提供一种针对安卓系统的二次开发的普适的技术方案。
6.为了解决上述问题,本发明提供了一种用于安卓系统的二次开发方法,包括如下步骤:在公共函数库中提供通用函数的实现,从而控制总体流程;在差别函数库中提供差异化函数的实现;差别函数库被加载时,首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,实现了同名函数的覆盖。
7.为了解决上述问题,本发明提供了一种用于安卓系统的二次开发系统,包括:公共函数库,所述公共函数库中提供通用函数的实现,从而控制总体流程;差别函数库,所述差别函数库中提供差异化函数的实现;并在差别函数库被加载时执行如下步骤:首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,实现了同名函数的覆盖。
8.上述技术方案对单个产品做新功能开发时,无需要改动构建流程,每个负责开发新功能的开发人员都不需要做相关的构建修改,减轻了工作负担,避免因为缺乏统一构建管理而导致混乱。每当产品线增加时,无需新增新产品线的完整构建流程。android版本差异较大,每条产品线的构建都有巨大的差异。对开发人员来说,当开发工作在多个产品线之间切换时,上述技术方案降低了沟通和试错成本,提高了开发效率。上述技术方案进行构建
过程的共用部分和差异部分的分层设计,每次新增功能模块或者新增产品线,无需对原有构建代码进行修改,保证了原有产品构建过程的稳定性。
附图说明
9.附图1所示是本发明一具体实施方式所述用于安卓系统的二次开发方法的实施步骤示意图。
10.附图2所示是本发明一实施例构建方法的命令流。
具体实施方式
11.下面结合附图对本发明提供的用于安卓系统的二次开发方法以及系统的具体实施方式做详细说明。
12.附图1所示是本具体实施方式所述用于安卓系统的二次开发方法的实施步骤示意图,包括:步骤s11,在公共函数库中提供通用函数的实现,从而控制总体流程;步骤s12,在差别函数库中提供差异化函数的实现;步骤s13,差别函数库被加载时,首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,实现了同名函数的覆盖。
13.上述方法设计了一种安卓系统构建技术,特点是函数覆盖模式。这种构建技术利用了linux source命令加载的函数和变量能自动覆盖之前存在的同名函数和同名变量这一机制。把实现功能的代码分别封装在公共函数库(common.sh)和差别函数库(target.sh)中。在公共函数库中提供通用函数的实现,从而控制总体流程;在差别函数库中,提供差异化函数的实现。差别函数库被加载时,首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,就实现了同名函数的覆盖(效果类似于oop中的override)。对于新增的功能模块,如果需要可以新增bash脚本(即对新功能open),但不需要改动原有bash脚本(即对原有构建脚本closed)。原有bash脚本在构建时,会把新增的功能模块自动纳入构建过程。
14.本发明设计的构建技术不仅适用于在同一项目内构建不同的目标,也适用于对多个项目构建各自不同的目标。
15.参考附图1以及步骤s11,在公共函数库中提供通用函数的实现,从而控制总体流程。在本具体实施方式中,是在服务器端构建:
16.构建内核映像文件使用命令:./kernel.sh;
17.构建系统映像文件使用命令:./system.sh;
18.构建启动引导映像文件使用命令:./bootloader.sh。
19.参考附图1以及步骤s12,在差别函数库中提供差异化函数的实现。在本具体实施方式中,是在本地端构建:
20.构建内核映像文件使用命令:./build_kernel.sh;
21.构建系统映像文件使用命令:./build_system.sh;
22.构建启动引导映像文件使用命令:./build_bootloader.sh。
23.参考附图1以及步骤s13,差别函数库被加载时,首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,实现了同名函数的覆盖。开发人员对于新增或者修改功能模块无需关心构建脚本代码。对于新增产品线无需关心构建脚本代码,依然使用传统构建命令。覆盖规则是根据source y.sh命令在x.sh文件中的相对位置,决定x.sh和y.sh之间
的覆盖关系。如果source y.sh命令出现在x.sh中函数(或变量)a的定义之后,则是y.sh中的a覆盖x.sh中的a;反之,则是x.sh中的a覆盖y.sh中的a。
24.上述技术方案对每个产品线构建过程的共用部分和差别部分做了提炼,共用部分放到上层,差别部分放到下层。多个产品共用一个上层构建过程(共用部分),以统一的形式面向开发者。对于新增的产品线,只需要新增差别层的bash脚本(即对新产品线open),不需要修改其他产品线涉及的构建过程(即对原有产品线构建脚本closed),上层共用部分构建过程会自动纳入新增的产品线。
25.相对于仅在安卓系统源生的构建代码上修改的技术方案,每当对单个产品做新功能开发时,无需要改动构建流程,每个负责开发新功能的开发人员都不需要做相关的构建修改,减轻了工作负担,避免因为缺乏统一构建管理而导致混乱。每当产品线增加时,无需新增新产品线的完整构建流程。android版本差异较大,每条产品线的构建都有巨大的差异。对开发人员来说,当开发工作在多个产品线之间切换时,上述技术方案降低了沟通和试错成本,提高了开发效率。上述技术方案进行构建过程的共用部分和差异部分的分层设计,每次新增功能模块或者新增产品线,无需对原有构建代码进行修改,保证了原有产品构建过程的稳定性。
26.以下以在服务器端构建项目prj的目标tgt为例进行举例说明。附图2所示是上述构建方法的命令流。
27.svr_common.sh为多个项目服务器端公共函数库;prj_common.sh为项目prj的服务器端差异(公共)函数库;prj_tgt.sh为项目prj构建目标tgt的服务器端差异函数库,同时也是服务器端的构建入口;common.sh为项目prj的本地端公共函数库;tgt.sh为项目prj构建目标tgt的本地端差异函数库,同时也是本地端的构建入口。
28.加载后,以prj_tgt.sh覆盖svr_common.sh中的同名函数和变量(如函数show_usage),以prj_common.sh覆盖svr_common.sh中的同名函数和变量(如函数set_project_repository),以tgt.sh覆盖prj_common.sh中的同名函数和变量(如函数get_target),以tgt.sh覆盖common.sh中的同名函数和变量(如函数sign_target)。
29.采用上述技术方案的开发系统,用于安卓系统的二次开发,包括:公共函数库,所述公共函数库中提供通用函数的实现,从而控制总体流程;差别函数库,所述差别函数库中提供差异化函数的实现;并在差别函数库被加载时执行如下步骤:首先加载对应的公共函数库,然后继续加载差别函数库自己的函数,实现了同名函数的覆盖。
30.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献