CN112286568A - 一种Android系统多版本兼容方法 - Google Patents
一种Android系统多版本兼容方法 Download PDFInfo
- Publication number
- CN112286568A CN112286568A CN202011003146.3A CN202011003146A CN112286568A CN 112286568 A CN112286568 A CN 112286568A CN 202011003146 A CN202011003146 A CN 202011003146A CN 112286568 A CN112286568 A CN 112286568A
- Authority
- CN
- China
- Prior art keywords
- layer
- version
- file
- configuration
- android system
- 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.)
- Pending
Links
Images
Classifications
-
- 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/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种Android系统多版本兼容方法,所述方法包括:步骤1、创建配置文件,将配置文件和所有产品的dtb文件一起打包到镜像文件中,得到第一版本的产品系统,将所述镜像文件烧录到设备的指定位置;步骤2、启动设备,通过内核加载配置文件,根据配置信息获取对应的dtb文件,根据所述dtb文件执行对应的驱动逻辑;步骤3、通过安卓系统层预设的定制接口,读取配置文件,并根据需要修改其中的配置信息,得到第二版本的产品系统。采用本发明的Android系统多版本兼容方法可以同时支持不同的硬件和软件版本的配置化开发,降低了版本开发和维护成本,极大的提高产品开发效率。
Description
技术领域
本发明涉及安卓终端设备领域,特别涉及一种Android系统多版本兼容方法。
背景技术
如今,搭载Android系统的设备已经遍及各行各业之中,对于研发生产智能终端、移动设备等产品的厂商来说,一款产品常常要面向多个客户开发,客户之间的需求千差万别,导致需要开发和维护多个软件版本。随着版本数量的增加,开发的效率和维护的难度也在不断增加,主要体现在:对于基于相同平台的不同产品,存在外接硬件的差异,各个产品之间的源码、镜像是独立开发和维护的。如果解决了一个共性问题,需要同时更新所有产品版本;如果一个产品需要实现一个已经在其他产品上实现的功能,需要将改动复制一遍;对于同一个产品,不同用户也会有一些小版本的定制开发要求。例如更改开机图片、修改设备的厂商号、设备号等。这些小版本也会独立出来进行开发和维护。
现有的申请号为201911121062.7的中国专利公开了一种差异化Android软件生成方法及系统。并具体公开了:包括生成基线版本的软件;在所述基线版本的软件中添加基础功能模块,得到待配置软件;根据需求,在预设的镜像文件库中选取镜像文件,并添加或替换至待配置软件;将待配置软件进行配置并打包。该专利通过在所述基线版本的软件中添加基础功能模块,得到带配置软件,将选取的镜像文件添加到带配置软件中,进行配置后打包生成软件,即其是在打包镜像前,根据不同的组合的产品软件版本进行配置,最终烧录生成不同的产品版本。采用这种方法进行软件的差异化生产,仍然需要对每一种产品版本配置后烧录成一种对应的镜像,本质上还是需要维护多个版本的资源,只是在一定程度上减少集成和输出版本的工作量。现有的申请号为201410768817.3的中国专利公开了一种基于安卓平台支持版本兼容控制的实现方法。该方法只有一个软件版本,设备开机时,读取硬件的信息,随后执行对应的逻辑和功能,做到了一个软件版本兼容多个版本。但是,在其软件获取硬件的信息时,需要提供具有唯一性的“AD值范围-硬件版本号”对照表,该对照表通过在AD采样引脚上连接不同阻值的电阻加以区分并生成的,即该方法的实现需要硬件实现对应的接口,在实际操作中,增加了成本,且产品的硬件设计千差万别,不一定总能够预留和实现该接口,使得该方法适用范围受到限制。
发明内容
本发明要解决的技术问题,在于提供一种Android系统多版本兼容方法,同时支持不同的硬件和软件版本的配置化开发,降低了版本开发和维护成本,极大的提高产品开发效率。
本发明是这样实现的:一种Android系统多版本兼容方法,包括:
步骤1、创建配置文件,将配置文件和所有产品的dtb文件一起打包到镜像文件中,得到第一版本的产品系统,将所述镜像文件烧录到设备的指定位置;
步骤2、启动设备,通过内核加载配置文件,根据配置信息获取对应的dtb文件,根据所述dtb文件执行对应的驱动逻辑;
步骤3、通过安卓系统层预设的定制接口,读取配置文件,并根据需要修改其中的配置信息,得到第二版本的产品系统。
进一步的,所述配置文件包括全局配置信息,所述全局配置信息通过一结构体进行定义,所述结构体包括产品名称、版本号、VID和PID。
进一步的,所述步骤3中定制接口的实现具体包括Java Library层、JNI层、CLibrary层和Native Server层;
所述Native Server层负责加载和保存配置文件并提供底层操作接口;
所述C Library层通过Socket与Native Server层通信,从Native Server层获取数据及底层操作接口封装成对应的接口;
所述JNI层负责连接Java Library层和C Libray层,调用C Library层提供的接口;
所述Java Library层通过JNI层调用C Library层提供的接口,制成供应用程序使用的定制接口。
进一步的,所述方法还包括:在安卓系统的启动脚本文件中将操作硬件外设模块的操作接口统一映射成固定的路径和名称,供应用程序调用。
本发明的优点在于:
通过在镜像文件加入不同产品的DTB文件和配置文件,并结合定制接口对配置文件进行后续的修改,可同时满足硬件和软件层面的版本兼容;只需打包烧录一次镜像文件,在需要进行版本更改时,通过定制接口直接更改镜像文件中的配置文件信息,实现快速定制化开发,无需对每一产品进行打包烧录,简化了开发流程,对于版本数量繁多的产品的开发,极大的提高了开发效率,也便于后期维护。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种Android系统多版本兼容方法的执行流程图。
图2为本发明一种Android系统多版本兼容方法逻辑框图。
图3为本发明一种Android系统多版本兼容方法的原理示意图。
具体实施方式
请参考图1至图3,本发明的一种Android系统多版本兼容方法,包括:
步骤1、创建配置文件vendor.gcf,将配置文件vendor.gcf和所有产品的dtb文件一起打包到镜像文件resource.img中,得到第一版本的产品系统,将所述镜像文件resource.img烧录到设备的指定位置,开机时由bootLoader读取并加载;较佳的,所述配置文件vendor.gcf包括全局配置信息,所述全局配置信息通过一结构体进行定义,所述结构体包括产品名称、版本号、VID(即用户ID)和PID(即产品ID)。例如某产品的结构体定义方式如下:
步骤2、启动设备,通过内核加载配置文件,根据配置信息获取对应的dtb文件,根据所述dtb文件执行对应的驱动逻辑;在系统在开机时,首先加载vendor.gcf,获得全局配置信息,接着根据配置信息加载对应的dtb文件,初始化和驱动外设硬件,由此屏蔽了硬件设计的差异。在加载了正确的dtb后,内核代码继续执行,由于内核大部分都是通用的,各产品之间的差异主要体现在驱动逻辑上。因此,为了实现兼容,在开发驱动时,需要将产品特有的逻辑配置化,根据配置信息,可执行不同的代码逻辑。例如如下的代码实现了不同硬件(“CT02”、“CT03”)GPIO口的初始化兼容:
步骤3、通过安卓系统层预设的定制接口,读取配置文件,并根据需要修改其中的配置信息,得到第二版本的产品系统。此时只需重启设备即可使用第二版本的产品系统。
在一具体实施例中,在Android系统层,设计所述步骤3中的定制接口,用于兼容产品的定制化差异,定制接口的实现具体包括由下至上的Java Library层、JNI层、C Library层和Native Server层;
所述Native Server层负责加载和保存配置文件并提供底层操作接口;
所述C Library层通过Socket与Native Server层通信,从Native Server层获取数据及底层操作接口封装成对应的接口;
所述JNI层负责连接Java Library层和C Libray层,调用C Library层提供的接口;
所述Java Library层通过JNI层调用C Library层提供的接口,制成供应用程序使用的定制接口。
其中,Native Server层是采用C语言实现的一个Server,在该定制化接口中主要用于加载和保存全局配置信息,配置系统属性,其还可用于提供一些需要更加底层的、或者需要root权限的一些操作,本发明在Native Server中完成了配置信息vendor.gcf的读取,并设置了对应属性,在android开发时,根据属性值控制代码的逻辑,从而实现兼容,例如,配置信息中的成员long_press_power_off的值为3,意味着需要实现长按开机键3秒钟后自动关机的功能。在Native Server中,读取和解析了该配置,并设置了属性sys.config.long_press_power_off=3。在Android系统控制关机流程的代码处,通过SystemProperties.get(“sys.config.long_press_power_off”,“0”)获得到属性值为3,最后代码执行“长按电源键3秒以上关机”的逻辑;C Library层是采用C语言实现的,在该定制化接口中起到与Native Server端通信交互功能,使用Server端提供的功能,一般的一些需要C语音实现的功能也可以放在这里实现封装成接口,供上层调用;JNI层主要就是连接Java和C Libray的桥梁,调用C Library提供的接口;Java Library层实现系统定制接口,应用程序通过使用Java Library提供的接口,可以实现读取和修改配置信息、修改系统开机图片、进行系统升级更新等。
在一具体实施例中,所述方法还包括:在安卓系统的启动脚本文件中将操作硬件外设模块的操作接口统一映射成固定的路径和名称,供应用程序调用。由于内核启动完成后,一般会向应用程序提供一些操作接口,以操作硬件外设模块。这些接口的路径可能会随着内核启动代码的改变而改变,这会引起上层应用程序的变更。为了解耦合,要固定这些接口的名称,可以在Android系统的启动脚本init.rc文件中进行软连接,将这些接口统一映射成固定的路径、名称。
本发明实施例中提供的上述技术方案,至少具有如下技术效果或优点:本发明实现了以下两个方面的版本兼容:
同一平台下不同产品(即软件系统产品)版本的兼容:同一平台下,不同产品的差异主要是硬件设计上,对应到系统上,就是内核驱动层面的差异:驱动配置和驱动逻辑。对于驱动配置,本发明将所有产品的DTB(Device Tree Blob)文件都打包到同一个系统镜像中,开机时根据产品信息加载对应的DTB文件,完成对驱动的配置,从而屏蔽了硬件设计上的差异。对于驱动逻辑,可以根据配置信息执行对应产品的驱动代码,实现兼容。内核之上的系统差异,例如显示方向、是否开启程序签名验证等,也可通过配置信息执行不同的代码流程、开启或关闭对应的功能,达到版本兼容的目的。
同一产品(即软件系统产品)不同版本的兼容:对于同一个产品,可能会由于硬件的升级、改动,或者系统的定制化导致版本不兼容。硬件的差异导致的不兼容可以通过上述的方法解决,而对于定制化需求,可以将其封装成通用的接口,供程序调用,无需单独创建一个版本单独进行开发和维护。
本申请从上述两方面进行版本兼容,实现同一镜像文件兼容所有不同硬件的产品以及不同版本的产品,降低版本开发和维护成本,功能实现上可配置化,新版本如需要已经实现的功能逻辑,直接修改配置文件即可,提升软件的复用性,应用开发人员可通过系统定制接口对系统进行快速定制,提升了开发效率,所有产品都是在一个代码主线上进行开发,代码可以不断的迭代,提升版本的质量。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种Android系统多版本兼容方法,其特征在于:包括:
步骤1、创建配置文件,将配置文件和所有产品的dtb文件一起打包到镜像文件中,得到第一版本的产品系统,将所述镜像文件烧录到设备的指定位置;
步骤2、启动设备,通过内核加载配置文件,根据配置信息获取对应的dtb文件,根据所述dtb文件执行对应的驱动逻辑;
步骤3、通过安卓系统层预设的定制接口,读取配置文件,并根据需要修改其中的配置信息,得到第二版本的产品系统。
2.如权利要求1所述的一种Android系统多版本兼容方法,其特征在于:所述配置文件包括全局配置信息,所述全局配置信息通过一结构体进行定义,所述结构体包括产品名称、版本号、VID和PID。
3.如权利要求1所述的一种Android系统多版本兼容方法,其特征在于:所述步骤3中定制接口的实现具体包括Java Library层、JNI层、C Library层和Native Server层;
所述Native Server层负责加载和保存配置文件并提供底层操作接口;
所述C Library层通过Socket与Native Server层通信,从Native Server层获取数据及底层操作接口封装成对应的接口;
所述JNI层负责连接Java Library层和C Libray层,调用C Library层提供的接口;
所述Java Library层通过JNI层调用C Library层提供的接口,制成供应用程序使用的定制接口。
4.如权利要求1所述的一种Android系统多版本兼容方法,其特征在于:所述方法还包括:在安卓系统的启动脚本文件中将操作硬件外设模块的操作接口统一映射成固定的路径和名称,供应用程序调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003146.3A CN112286568A (zh) | 2020-09-22 | 2020-09-22 | 一种Android系统多版本兼容方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003146.3A CN112286568A (zh) | 2020-09-22 | 2020-09-22 | 一种Android系统多版本兼容方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112286568A true CN112286568A (zh) | 2021-01-29 |
Family
ID=74422233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011003146.3A Pending CN112286568A (zh) | 2020-09-22 | 2020-09-22 | 一种Android系统多版本兼容方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286568A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661330A (zh) * | 2022-05-25 | 2022-06-24 | 武汉海微科技有限公司 | 车辆硬件程序更新方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2367103A1 (en) * | 2010-03-19 | 2011-09-21 | Honeywell Technologies Sarl | A company advanced programming interface |
CN105739964A (zh) * | 2014-12-12 | 2016-07-06 | 厦门雅迅网络股份有限公司 | 一种基于安卓平台支持版本兼容控制的实现方法 |
CN109062617A (zh) * | 2018-06-26 | 2018-12-21 | 百富计算机技术(深圳)有限公司 | 一种支持多类型设备的平台的应用方法、移动终端 |
CN110990049A (zh) * | 2019-11-15 | 2020-04-10 | 烽火通信科技股份有限公司 | 一种差异化Android软件生成方法及系统 |
-
2020
- 2020-09-22 CN CN202011003146.3A patent/CN112286568A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2367103A1 (en) * | 2010-03-19 | 2011-09-21 | Honeywell Technologies Sarl | A company advanced programming interface |
CN105739964A (zh) * | 2014-12-12 | 2016-07-06 | 厦门雅迅网络股份有限公司 | 一种基于安卓平台支持版本兼容控制的实现方法 |
CN109062617A (zh) * | 2018-06-26 | 2018-12-21 | 百富计算机技术(深圳)有限公司 | 一种支持多类型设备的平台的应用方法、移动终端 |
CN110990049A (zh) * | 2019-11-15 | 2020-04-10 | 烽火通信科技股份有限公司 | 一种差异化Android软件生成方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661330A (zh) * | 2022-05-25 | 2022-06-24 | 武汉海微科技有限公司 | 车辆硬件程序更新方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9262153B2 (en) | Firmware update discovery and distribution | |
CA2604108C (en) | System and method of representing data entities of standard device applications as built-in components | |
US7584471B2 (en) | Plug-in model | |
CN102971688B (zh) | 跨平台应用程序框架 | |
CN102880498B (zh) | 在安卓系统的装置上虚拟sd卡的方法 | |
CN105159788B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
US20140007067A1 (en) | RESOURCE DATa STRUCTURES FOR FIRMWARE UPDATES | |
CN112189187B (zh) | 统一平台的可扩展性 | |
CN114077462A (zh) | 软件操作系统调用Android HIDL接口的方法、装置、设备及介质 | |
CN114077423A (zh) | 基于移动跨平台的机场app开发容器架构 | |
CN115248700A (zh) | 一种产品代码自动化构建移动安装包的方法和系统 | |
CN111552542A (zh) | 一种自动化构建虚机镜像的方法 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
CN112286568A (zh) | 一种Android系统多版本兼容方法 | |
CN113448643B (zh) | 配置数据管理系统及方法 | |
US20170004096A1 (en) | Platform Neutral Device Protocols | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
JPH0748177B2 (ja) | データ処理システムの構成方法 | |
CN114721647B (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
CN116643761A (zh) | 一种定制化镜像制作及部署方法、装置、终端及介质 | |
CN115857999A (zh) | 基于vue的系统架构改造获得微前端系统架构的方法及系统 | |
CN113138790B (zh) | Android机顶盒客制化集成方法、装置及机顶盒集成开发系统 | |
CN112463262A (zh) | 一种安卓系统gps模块自适应方法及终端 | |
CN112540777A (zh) | 一种支持动态读写nv参数的方法和终端 | |
CN114138343A (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 |