CN106569880A - 一种Android应用间动态共享资源的方法及系统 - Google Patents
一种Android应用间动态共享资源的方法及系统 Download PDFInfo
- Publication number
- CN106569880A CN106569880A CN201610975257.8A CN201610975257A CN106569880A CN 106569880 A CN106569880 A CN 106569880A CN 201610975257 A CN201610975257 A CN 201610975257A CN 106569880 A CN106569880 A CN 106569880A
- Authority
- CN
- China
- Prior art keywords
- resource
- file
- bundle
- files
- application
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种Android应用间动态共享资源方法及系统,其中,所述方法包括:将应用文件包划分为资源bundle文件和非资源bundle文件;根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。通过本发明的方法节省了应用间动态共享资源的步骤、为应用间的资源共享带来了方便,且极大地减轻了系统的负担,提高了资源共享的普适性,方便了用户。
Description
技术领域
本发明涉及Android应用资源共享领域,尤其涉及一种Android应用间动态共享资源的方法及系统。
背景技术
Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。现在Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机以及游戏机等。
然而现有Android系统中的应用在实现资源共享的过程中,比如,Android应用的例如QQ软件中的图片、文字等数据被另一Android应用如微博共享,需要在系统额外配置资源库,并将共享资源配置在预设的资源库中,并且当该共享资源库进行更新时,还需要改变资源库中应用的配置文件,现有的资源共享方法不仅实现过程繁琐,而且增加了系统的负担。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种Android应用间动态共享资源的方法及系统,旨在解决现有的资源共享方法其实现过程繁琐、系统负担较大的问题。
本发明的技术方案如下:
一种Android应用间动态共享资源方法,其中,包括步骤:
A、将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
B、根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
较佳地,所述Android应用间动态共享资源的方法,其中,所述步骤A具体包括:
A01、通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
A02、获取系统中的应用,将应用分为资源部分和非资源部分,并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
A03、通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
A04、获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
较佳地,所述Android应用间动态共享资源的方法,其中,所述步骤B中还包括:
B1、启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新。
较佳地,所述Android应用间动态共享资源的方法,其中,所述步骤B1具体包括:
B11、启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
B12、判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
B13、安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库。
较佳地,所述的Android应用间动态共享资源的方法,其中,所述预设的接口协议具体包括:
输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
一种Android应用间动态共享资源的系统,其中,包括:
划分模块,用于将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
资源共享模块,用于根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
较佳地,所述Android应用间动态共享资源的系统,其中,所述划分模块具体包括:
OSGI框架服务添加单元,用于通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
bundle文件生成单元,用于获取系统中的应用,将应用分为资源部分和非资源部分并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
bundle文件安装单元,用于通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
数据库单元,用于获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述共享模块包括:
更新单元,用于启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述更新单元具体包括:
获取子单元,用于启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
判断子单元,用于判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
更新子单元,用于安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述步骤预设的接口协议具体包括:
输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
有益效果:本发明提供了一种Android应用间动态共享资源的方法及系统,通过将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。通过本发明的方法节省了应用间动态共享资源的步骤、为应用间的资源共享带来了方便,且极大地减轻了系统的负担,提高了资源共享的普适性,方便了用户。
附图说明
图1为本发明一种Android应用间动态共享资源的方法较佳实施例的流程图。
图2为本发明一种Android应用间动态共享资源方法的具体应用实施例中bundle文件更新流程图。
图3为本发明一种Android应用间动态共享资源方法较佳实施例的资源引用关系图。
图4为本发明一种Android应用间动态共享资源系统较佳实施例的功能原理框图。
具体实施方式
本发明提供一种Android应用间动态共享资源的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中涉及OSGI、bundle文件等。因此对OSGI服务及bundle文件进行介绍。
OSGI(Open Service Gateway Initiative)是一种面向JAVA的动态模型系统,OSGI服务平台由两部分组成:OSGI框架和OSGI标准服务。OSGI框架是实现并提供OSGI功能的运行环境,OSGI标准服务定义了很多用于执行常见任务的可重用API。OSGI框架和标准服务的规范由OSGI联盟管理。OSGI框架在创建基于OSGI的应用时起着核心作用,因为它是应用的执行环境。
OSGI联盟在OSGI框架规范中定义了框架的正确行为,这样就可以基于一个定义清晰的API进行编程。这个框架是依据OSGI规范中定义的三个概念层设计的:
模块层:关注于打包和共享代码。
生命周期层:关注于提供执行时模块管理和对底层OSGI框架的访问。
服务层:关注于模块,特别是模块内的组件间的交互和通信。
1.模块层定义了OSGI模块的概念,并将之称为一个bundle。bundle是一个包含元数据(关于数据的数据)的jar文件,由类文件和相关资源组成。它是构成一个特定应用程序的多个逻辑模块。
2.生命周期层定义了在OSGI框架中是如何动态安装和管理来的。生命周期层定义了bundle生命周期的操作(如安装、更新、启动、停止和卸载)。这些生命周期的操作使得可以用一种定义明确的方式动态地提供、管理和改进应用程序。
3.服务层支持和促成了一个灵活的应用编程模型。主要涉及面向服务的发布、查找和绑定交互模式,即服务提供者将服务发布到服务注册中心,然后服务客户端通过搜索服务注册中心,查找可供使用的服务。
而bundle是 OSGI中的模块模型。标准 Java 平台的 jar 包中包含有 class 文件以及相应的资源文件,bundle 可以简单地理解为是增加了元数据的 jar 包。一个bundle 中包含了 java 类和一些其他的数据资源,这些数据可以是 HTML 文件、帮助文档以及图标等。
便于描述,将模块定义为:一个从逻辑上封装实现类的集合,一个基于实现类子集的可选公共API,以及一个对外部代码依赖关系的集合。
从用户层可以把 bundle 理解为一个功能模块。bundle 可以从项目中导入导出,并且能够与项目中的其他 bundle 共享 jar文件。bundle 为 OSGI 框架提供服务,是OSGI 服务框架中唯一需要部署的实体。bundle 一旦开始运行,就会通过 OSGI 框架向框架中其他 bundle 提供功能和服务。
便于描述,本提案将bundle定义为:一个模块化的物理单元,以jar文件形式包含代码、资源和元数据,其中jar文件的边界也作为执行时逻辑模块化的封装边界。
OSGI 框架运行在 Java 虚拟机上,Bundle 可以理解为执行在 OSGI 框架上的应用程序,而 Service 为 Bundle 提供了导入、导出接口。Bundle 从服务器下载完成后可以自动在 OSGI 框架上安装和执行,并向 OSGI 平台注册其所需要的服务和提供的服务。
请参阅图1,图1为本发明一种Android应用间动态共享资源的方法较佳实施例的流程图,如图所示,其包括步骤:
S100、将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
S200、根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
通过本发明方法节省了应用间动态共享资源的步骤、为应用间的资源共享带来了方便,且极大地减轻了系统的负担,提高了资源共享的普适性,方便了用户。
众所周知,生成APK 文件的过程是,首先Android 项目中的清单文件 Manifest、资源文件等通过Android Asset Packaging Tool工具打包生成 R 文件和打包的资源文件,R 文件和源代码以及引用的类库通过 Java 编译器编译成 class 文件和 jar 文件,再由dx工具编译成 dex 文件,也就是 Dalvik 虚拟机所能识别的字节码,打包的资源文件和dex 文件通过 APK Builder 生成APK 文件。OSGI 平台中加载的是bundle文件,而在Android 平台中可执行文件的格式是 APK文件。从上述的APK文件生成过程可知, APK 文件是经过特殊处理的jar 文件。将jar文件转换成bundle文件方法如下所述。
如前所示,bundle是添加了特定元数据的jar文件;要将jar文件转化成bundle,需要为jar文件增加相应的元数据,元数据包括可读信息、bundle识别信息和代码可见性信息。
可读信息:为使用者提供该bundle的相关帮助信息;
Bundle-Name: 作为bundle的一个缩写名;
Bundle-Description: 描述bundle的功能;
Bundle-DocURL:提供有关bundle的文档;
Bundle-Category:定义了一组由逗号分隔的分类名;
Bundle-Vendor:有关bundle提供商的信息;
Bundle-ContactAddress:有关bundle提供商的信息;
Bundle-Copyright:有关bundle提供商的信息;
bundle识别信息:识别bundle的必要信息。
安装到OSGI框架中的每个bundle都必须有一个唯一标识,这个标识由bundle符号名称和bundle版本号两部分组成。
Bundle-SymbolicName:符号名称,它和java中包命名方法一致,可直接采用包名作为符号名称。
Bundle-Version:版本号,OSGI规范约定的bundle的版本号格式为:主版本号.次版本号.微版本号.限定符;
Bundle-ManifestVersion:OSGI框架根据此元数据信息确定采用哪个版本的OSGI规范来处理bundle;
代码可见性信息:定义哪些代码内部可见和哪些代码外部可见的必要信息。
Export-Package:导出内部代码,一个为了与其他bundle共享而公开的、由逗号分隔的内部bundle包;
Import-Package:导入外部代码,内部bundle代码需要的、来自其他bundle并由逗号分隔的一组包。
进一步,在本发明中,所述步骤S100具体包括:
S101、通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
S102、获取系统中的应用,将应用分为资源部分和非资源部分并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
S103、通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
S104、获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
具体实施时,通过Android系统中的服务管理器将该OSGI框架服务添加进系统服务中,并向应用层提供获取该服务的代理;将应用文件按模块分类编写为各个java文件,将编写的每个模块java文件编译为jar,再将jar转化为bundle文件;应用文件通过OSGI框架服务代理获取到BundleContext,通过调用BundleContext.install()方法安装bundle文件,获取已安装的bundle信息,并建立数据库存储;其中bundle文件信息包括bundle ID 、bundle文件包名、bundle的符号名称和版本号、输入包属性和输出包属性。
在 OSGI服务平台中,生命周期层由 Bundle、BundleContext 和BundleActivator这三个核心接口构成。Android 平台模块动态加载框架中生命周期层核心部分仍然由这三个接口组成,但接口中的方法需要进行删减和扩充。进行删减的原因是这些方法在Android 平台的框架中使用不到,将多余的方法删除使框架更加轻量级;同时还需要添加新的方法使得接口能够获取 Android 平台模块特有的一些属性,如:图标、主 Activity、包信息等;Bundle接口代表了一个已安装到框架中的bundle,允许对其执行状态操作。
在 OSGI 框架中每个 Bundle 实体都对应一个 Bundle 对象,Bundle 对象是对Bundle 实体的抽象。每个 Bundle 都对应一个唯一的并且在生命周期中保持不变的 ID号码,该 ID 由框架进行分配。Bundle 接口中定义了 Bundle 的基本信息的获取方法,包括:状态的获取、版本的获取、ID 的获取等,还定义了 Bundle 的管理方法,包括:更新、卸载、启动、停止等。
BundleContext接口为应用提供执行时操作OSGI框架的方法。
BundleContext 是指模块在框架中运行时的上下文,该上下文提供了模块与框架进行交互的方法。启动模块时,框架会创建一个对应的 BundleContext 对象,但该对象不能在模块之间进行传递,这是为了保障模块的安全和资源的正确分配。
为了便于描述,本提案将在Android系统中嵌入OSGI框架称为OSGIFramework。将该OSGIFramework实现为Android系统服务,即Servie。步骤如下:
便于描述,bundle指bundle文件,Bundle指OSGI框架接口。
实现运行OSGI框架的服务,如建立GetFramework继承自Android中的服务(Service)。
便于描述,将该服务称为GetFrameworkService,服务实现完毕,并通过Android系统中的服务管理器ServiceManager将该服务添加进系统服务中。这样,每次系统启动时随着系统服务启动起来,该GetFrameworkService服务也启动起来。
在该服务中获取OSGI框架实例,通过FrameWorkFactory.newFrameWork()获取框架实例。获取到框架实例时,并启动框架实例,如通过Framework.start()方法。
以上,就在Android系统中启动GetFrameworkService服务,通过Android系统binder机制,向应用层提供GetFrameworkService服务的代理,如GetFrameworkServiceProxy,通过该OSGI框架服务代理,就可以访问到GetFrameworkService服务中相关接口,如获取框架实例接口。
进一步,在本发明中,所述步骤S200中还包括:启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新,其具体包括:
S201、、启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
S202、判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
具体实施时,当云端配置文件的版本号高于所述本地配置文件的版本号时,则从云端配置文件中的url地址,下载新的资源bundle文件,同时从资源数据库中查找与所述新资源bundle文件相同的bundle ID所对应的原始资源bundle文件,将所述资源数据库中的原始资源bundle文件进行卸载。
S203、安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库;
具体实施时,安装已下载的新的资源bundle文件,并启动,更新资源数据库。
进一步,本发明提供了一种基于Android应用间动态共享资源方法的具体应用实施例中bundle文件启动流程图,如图2所示,方法包括:
步骤S10、通过OSGI框架服务代理获取框架实例;
具体地,通过GetFrameworkService服务的代理GetFrameworkServiceProxy,获取到OSGI框架实例。如getFrameworkInstance()方法。
步骤S20、通过框架实例获取BundleContext;
具体地,通过调用Framework.getBundleContext()方法获取BundleContext。
步骤S30、通过BundleContext安装bundle文件;
具体实施时,通过调用BundleContext.install(String location)方法安装bundle文件,直至所有bundle文件安装完毕。其中参数location是该bundle文件存放路径。当安装成功后,会返回已安装的bundle的 bundle ID(bundle Identifier)。bundle ID是运行期最常用的标识符。它是由OSGI框架自动分配的一个长整型数字,在Bundle整个生命周期内(包括Bundle更新、卸载之后)都不会改变, 甚至在OSGI框架重启后都能保留下来。bundle ID是在bundle安装过程中由OSGI框架根据bundle安装时间的先后次序, 由小到大进行分配的。可以通过Bundle接口的getBundleId ()方法来获取当前bundle的ID。
步骤S40、获取bundle ID、版本号、符号名称等信息;
具体地,通过调用安装成功返回的Bundle的getBundleId()方法来获取当前bundle的ID。并通过调用Bundle的getSymbolicName()方法和getVersion()分别获取到该bundle的符号名称和版本号。
步骤S50、建立数据库存储bundle信息;
具体地,建立数据库存储每一个bundle ID 、bundle文件包名、bunlde的符号名称版本号、Import-Package和Export-Package属性。
步骤S60、启动bundle;
具体地,通过BundleContext.start()方法启动bundle文件。至此,bundle文件启动起来,会获取本地配置文件版本号,以及从云端获取云端配置文件版本号
步骤S70、判断本地配置文件版本号是否小于云端配置文件版本号,如果是,则执行步骤S80,如果否,则执行步骤S90;
步骤S80、更新bundle文件;
步骤S90、bundle启动完毕正常运行。
具体地,获取本地配置文件版本号,以及从云端获取云端配置文件版本号,并比较两者,如果本地配置文件版本号不低于云端获取的配置文件版本号,则应用正常进行,否则,更新bundle文件。
在本发明中,应用从逻辑上被分为资源部分和非资源部分,每一个部分均对应一个bundle文件,如图3所示,引用bundle文件与被引用bundle文件之间互相调用的协议如下:
引用bundle向被引用bundle输入预设参数,启动被引用bundle以执行该bundle模块对应的功能,所述引用bundle即非资源bundle,所述被引用bundle即资源bundle。具体地,本发明中所述预设的接口协议具体包括:输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
进一步,本发明还提供了一种Android应用间动态共享资源的系统,如图4所示,其中,包括:
划分模块100,用于将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
资源共享模块200,用于根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述划分模块100具体包括:
OSGI框架服务添加单元,用于通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
bundle文件生成单元,用于获取系统中的应用,将应用分为资源部分和非资源部分并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
bundle文件安装单元,用于通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
数据库单元,用于获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
较佳地,所述Android应用间动态共享资源的系统,其中,所述资源共享模块200包括:
更新单元,用于启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述更新单元具体包括:
获取子单元,用于启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
判断子单元,用于判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
更新子单元,用于安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库。
较佳地,所述的Android应用间动态共享资源的系统,其中,所述步骤预设的接口协议具体包括:
输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
综上所述,本发明提供了一种Android应用间动态共享资源的方法及系统,通过将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。通过本发明的方法节省了应用间动态共享资源的步骤、为应用间的资源共享带来了方便,且极大地减轻了系统的负担,提高了资源共享的普适性,方便了用户。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种Android应用间动态共享资源方法,其特征在于,包括步骤:
A、将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
B、根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
2.根据权利要求1所述Android应用间动态共享资源的方法,其特征在于,所述步骤A具体包括:
A01、通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
A02、获取系统中的应用,将应用分为资源部分和非资源部分,并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
A03、通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
A04、获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
3.根据权利要求1所述Android应用间动态共享资源的方法,其特征在于,所述步骤B中还包括:
B1、启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新。
4.根据权利要求3所述Android应用间动态共享资源的方法,其特征在于,所述步骤B1具体包括:
B11、启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
B12、判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
B13、安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库。
5.根据权利要求1所述的Android应用间动态共享资源的方法,其特征在于,所述预设的接口协议具体包括:
输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
6.一种Android应用间动态共享资源的系统,其特征在于,包括:
划分模块,用于将应用文件包划分为资源部分和非资源部分,分别将所述资源部分和非资源部分的java文件编译为jar文件,再将所述jar文件转化为bundle文件,得到资源bundle文件和非资源bundle文件;
资源共享模块,用于根据预设的接口协议,第一应用文件中的非资源bundle文件向第二应用文件中的资源bundle文件输入第一应用文件中资源bundle文件的包名和资源ID,所述第二应用文件中的资源bundle文件根据所述资源ID将更新后的资源返回给第一应用文件中的非资源bundle文件,实现不同应用文件之间的资源共享。
7.根据权利要求6所述Android应用间动态共享资源的系统,其特征在于,所述划分模块具体包括:
OSGI框架服务添加单元,用于通过Android系统中的服务管理器将OSGI框架服务添加至系统服务中,并通过Android系统的binder机制向应用层提供获取OSGI框架服务的代理;
bundle文件生成单元,用于获取系统中的应用,将应用分为资源部分和非资源部分并将所述资源部分和非资源部分按模块分类编写,生成bundle文件;
bundle文件安装单元,用于通过OSGI框架服务代理获取bundle文件,并安装bundle文件;
数据库单元,用于获取Android系统中已安装的bundle文件信息,建立资源数据库并存储bundle文件。
8.根据权利要求6所述的Android应用间动态共享资源的系统,其特征在于,所述资源共享模块包括:
更新单元,用于启动第二应用文件中的资源bundle文件并对所述被引用应用程序中的资源bundle文件进行更新。
9.根据权利要求8所述的Android应用间动态共享资源的系统,其特征在于,所述更新单元具体包括:
获取子单元,用于启动第二应用文件中的资源bundle文件,从云端服务器获取第二应用文件中资源bundle文件的云端配置文件,同时从本地获取第二应用文件中资源bundle文件的本地配置文件;
判断子单元,用于判断所述本地配置文件的版本号是否低于所述云端配置文件的版本号,若是,则根据云端配置文件中的地址,下载新的资源bundle文件;
更新子单元,用于安装新的资源bundle文件,并更新用于存储资源bundle文件的资源数据库。
10.根据权利要求6所述的Android应用间动态共享资源的系统,其特征在于,所述步骤预设的接口协议具体包括:
输入部分和输出部分,其中所述输入部分定义了非资源bundle文件向资源bundle文件输入的参数,所述参数包括资源bundle文件的包名和资源ID;所述输出部分定义了资源bundle文件根据资源ID返回给非资源bundle文件的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610975257.8A CN106569880B (zh) | 2016-11-07 | 2016-11-07 | 一种Android应用间动态共享资源的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610975257.8A CN106569880B (zh) | 2016-11-07 | 2016-11-07 | 一种Android应用间动态共享资源的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106569880A true CN106569880A (zh) | 2017-04-19 |
CN106569880B CN106569880B (zh) | 2020-12-22 |
Family
ID=58540084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610975257.8A Active CN106569880B (zh) | 2016-11-07 | 2016-11-07 | 一种Android应用间动态共享资源的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106569880B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762815A (zh) * | 2018-05-16 | 2018-11-06 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
CN108804236A (zh) * | 2017-05-04 | 2018-11-13 | Tcl集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN109189498A (zh) * | 2018-08-07 | 2019-01-11 | 武汉斗鱼网络科技有限公司 | Android横竖屏数据同步方法、装置、终端及可读介质 |
CN109697076A (zh) * | 2017-10-24 | 2019-04-30 | Tcl集团股份有限公司 | 一种应用软件资源的动态更新方法、装置及设备 |
CN110650136A (zh) * | 2019-09-23 | 2020-01-03 | 睿云联(厦门)网络通讯技术有限公司 | 一种部署于android平台端的SIP PBX实现方法及系统 |
CN111694730A (zh) * | 2020-04-30 | 2020-09-22 | 北京城市网邻信息技术有限公司 | 一种消除错误引用控件资源的方法及装置 |
CN113076146A (zh) * | 2021-03-09 | 2021-07-06 | 北京一亩田新农网络科技有限公司 | 动态apk的加载方法、装置、系统以及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889047A (zh) * | 2005-06-27 | 2007-01-03 | 腾讯科技(深圳)有限公司 | 一种实现程序资源共享的系统及方法 |
CN102130948A (zh) * | 2011-02-11 | 2011-07-20 | 宇龙计算机通信科技(深圳)有限公司 | 应用资源共享的实现方法及移动终端 |
US8538848B1 (en) * | 2005-07-29 | 2013-09-17 | IVP Holdings I, LLC | Revenue allocation for bundled intellectual property transactions |
CN103324537A (zh) * | 2013-05-17 | 2013-09-25 | Tcl集团股份有限公司 | 一种资源共享方法及装置 |
CN104871172A (zh) * | 2012-10-12 | 2015-08-26 | 思杰系统有限公司 | 用于连接的设备的编配框架 |
WO2015153366A1 (en) * | 2014-03-31 | 2015-10-08 | Google Technology Holdings LLC | System and method for providing customized resources on a handheld electronic device |
CN105027493A (zh) * | 2012-12-21 | 2015-11-04 | 移动熨斗公司 | 安全移动应用连接总线 |
CN105159788A (zh) * | 2015-09-11 | 2015-12-16 | Tcl集团股份有限公司 | 一种Android应用间动态共享资源的方法及系统 |
CN105378740A (zh) * | 2013-05-30 | 2016-03-02 | 微软技术许可有限责任公司 | 捆绑包签名 |
CN105511902A (zh) * | 2015-11-09 | 2016-04-20 | Tcl集团股份有限公司 | 一种安卓平台模块动态加载的方法及系统 |
-
2016
- 2016-11-07 CN CN201610975257.8A patent/CN106569880B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889047A (zh) * | 2005-06-27 | 2007-01-03 | 腾讯科技(深圳)有限公司 | 一种实现程序资源共享的系统及方法 |
US8538848B1 (en) * | 2005-07-29 | 2013-09-17 | IVP Holdings I, LLC | Revenue allocation for bundled intellectual property transactions |
CN102130948A (zh) * | 2011-02-11 | 2011-07-20 | 宇龙计算机通信科技(深圳)有限公司 | 应用资源共享的实现方法及移动终端 |
CN104871172A (zh) * | 2012-10-12 | 2015-08-26 | 思杰系统有限公司 | 用于连接的设备的编配框架 |
CN105027493A (zh) * | 2012-12-21 | 2015-11-04 | 移动熨斗公司 | 安全移动应用连接总线 |
CN103324537A (zh) * | 2013-05-17 | 2013-09-25 | Tcl集团股份有限公司 | 一种资源共享方法及装置 |
CN105378740A (zh) * | 2013-05-30 | 2016-03-02 | 微软技术许可有限责任公司 | 捆绑包签名 |
WO2015153366A1 (en) * | 2014-03-31 | 2015-10-08 | Google Technology Holdings LLC | System and method for providing customized resources on a handheld electronic device |
CN105159788A (zh) * | 2015-09-11 | 2015-12-16 | Tcl集团股份有限公司 | 一种Android应用间动态共享资源的方法及系统 |
CN105511902A (zh) * | 2015-11-09 | 2016-04-20 | Tcl集团股份有限公司 | 一种安卓平台模块动态加载的方法及系统 |
Non-Patent Citations (2)
Title |
---|
朱晓佳: "基于OSGi的Android模块动态加载技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
马娜: "基于OSGi的类资源冲突机理与消解方法", 《电脑知识与技术》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804236A (zh) * | 2017-05-04 | 2018-11-13 | Tcl集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN108804236B (zh) * | 2017-05-04 | 2022-05-03 | Tcl科技集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN109697076A (zh) * | 2017-10-24 | 2019-04-30 | Tcl集团股份有限公司 | 一种应用软件资源的动态更新方法、装置及设备 |
CN108762815A (zh) * | 2018-05-16 | 2018-11-06 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
CN108762815B (zh) * | 2018-05-16 | 2021-01-01 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
CN109189498A (zh) * | 2018-08-07 | 2019-01-11 | 武汉斗鱼网络科技有限公司 | Android横竖屏数据同步方法、装置、终端及可读介质 |
CN110650136A (zh) * | 2019-09-23 | 2020-01-03 | 睿云联(厦门)网络通讯技术有限公司 | 一种部署于android平台端的SIP PBX实现方法及系统 |
CN110650136B (zh) * | 2019-09-23 | 2021-09-07 | 睿云联(厦门)网络通讯技术有限公司 | 一种部署于android平台端的SIP PBX实现方法及系统 |
CN111694730A (zh) * | 2020-04-30 | 2020-09-22 | 北京城市网邻信息技术有限公司 | 一种消除错误引用控件资源的方法及装置 |
CN113076146A (zh) * | 2021-03-09 | 2021-07-06 | 北京一亩田新农网络科技有限公司 | 动态apk的加载方法、装置、系统以及介质 |
CN113076146B (zh) * | 2021-03-09 | 2024-06-07 | 北京一亩田新农网络科技有限公司 | 动态apk的加载方法、装置、系统以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106569880B (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569880A (zh) | 一种Android应用间动态共享资源的方法及系统 | |
CN105657191A (zh) | 一种基于Android系统的应用增量升级方法及系统 | |
CN104714828B (zh) | 应用安装、运行方法及装置 | |
CN110912724B (zh) | 一种基于参数驱动的自动业务编排方法及装置 | |
CN105159788B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
US9513891B2 (en) | Method and device for publishing and implementing wireless application | |
US20040003388A1 (en) | Preparation of a software configuration using an XML type programming language | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN105373406B (zh) | 基于Android平台的应用布局动态切换方法及系统 | |
CN107077388A (zh) | 用于在多租户应用服务器环境中提供端到端生命周期的系统和方法 | |
CN102411506A (zh) | Java系统业务单元插件式管理系统及业务功能动态变更方法 | |
JP2003044302A (ja) | 仮想マシンクラスファイルの更新方法及びシステム | |
KR20050086687A (ko) | 전자 파일 업데이트 동안 디바이스 메모리 관리 | |
CN106648755B (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
US20070282801A1 (en) | Dynamically creating and executing an application lifecycle management operation | |
CN102023885A (zh) | 一种存储Java卡运行时环境字节码的方法及系统 | |
CN105516154A (zh) | 应用于SEAndroid系统的安全策略配置方法及装置 | |
KR20060085698A (ko) | 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 | |
CN109240733A (zh) | 一种基于安卓系统更新广告sdk的方法及终端 | |
CN112685020A (zh) | 动态创建服务接口的方法、装置、电子设备及存储介质 | |
CN112035122B (zh) | 一种接口部署方法、系统及存储介质 | |
CN103677933A (zh) | 一种为智能卡打补丁的方法和系统 | |
CN109697076A (zh) | 一种应用软件资源的动态更新方法、装置及设备 | |
CN110941443A (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
CN106778270B (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 | ||
CB02 | Change of applicant information |
Address after: 516006 TCL technology building, No.17, Huifeng Third Road, Zhongkai high tech Zone, Huizhou City, Guangdong Province Applicant after: TCL Technology Group Co.,Ltd. Address before: 516006 Guangdong province Huizhou Zhongkai hi tech Development Zone No. nineteen District Applicant before: TCL RESEARCH AMERICA Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |