CN104317573B - 安卓安装包转换方法和装置以及运行应用的方法和装置 - Google Patents
安卓安装包转换方法和装置以及运行应用的方法和装置 Download PDFInfo
- Publication number
- CN104317573B CN104317573B CN201410522318.6A CN201410522318A CN104317573B CN 104317573 B CN104317573 B CN 104317573B CN 201410522318 A CN201410522318 A CN 201410522318A CN 104317573 B CN104317573 B CN 104317573B
- Authority
- CN
- China
- Prior art keywords
- application
- file
- data packets
- new data
- client
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种安卓安装包转换方法和装置以及运行应用的方法和装置。响应于用户基于第一应用的客户端运行第二应用的请求,获取通过转换第二应用的安卓安装包而构建的新数据包,然后基于第一应用的客户端,使用新数据包运行第二应用。该转换方法包括:获取安卓安装包中的基础可执行文件;从基础可执行文件获取资源类文件;将资源类文件中特定于安卓系统的内容修改为特定于第一应用的客户端的内容,以形成新资源类文件;将新资源类文件编译为附加可执行文件;以及构建新数据包,新数据包包括基础可执行文件和附加可执行文件。由此,使得可以基于第一应用,在不需要安装第二应用的情况下,直接运行第二应用,从而可以为用户提供更好的体验。
Description
技术领域
本发明涉及安卓系统中的应用,特别涉及转换安卓安装包的方法和装置以及基于第一应用的客户端运行第二应用的方法和装置。
背景技术
安卓(Android)系统是由谷歌公司推出的移动终端操作系统。
基于安卓系统,用户可以在应用市场(或应用商店)中购买/下载并安装应用,然后可以在移动终端(例如手机等)上运行应用。
目前,在安卓系统中,每个应用在安装前都以安卓安装包(APK)的方式存在。用户如果想在安卓系统中使用某个应用,则需要使用系统提供的应用安装API(应用程序接口),在应用商店或其他应用中,将此应用的APK安装到系统中,之后用户可以直接运行这个应用。
不只是应用市场,还有很多应用,都会在其中提供一些其它应用的介绍和链接。用户可以通过点击这些链接来下载其它应用。
根据目前的技术,如果要在一个应用(例如应用市场)中,不经过对其它应用的安装过程而直接启动(运行)其它应用,而该其它应用尚没有被安装在安卓系统中,则需要采用插件技术。
插件一般指为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主程序中,主程序可在运行时安装和卸载。
在安卓系统中如何实现插件也已经被广泛传播,实现的原理都是实现一套插件接口,把插件实现编成apk包或者dex文件,然后,在运行时使用DexClassLoader动态加载进来。
通过这样的方式,可以在一个应用中,直接启动并使用通过插件技术实现的apk。
然而,在通过插件来实现在一个应用中启动其它应用的情况下,需要将被启动的应用本身修改为安卓插件的形式。而这样的修改往往需要被启动的应用的开发者自己来执行。因此,在一般情况下,这种方案是不方便的,甚至是难以或不能做到的。
发明内容
本发明所要解决的技术问题是提供一种转换安卓安装包的方法和装置以及基于第一应用的客户端运行第二应用的方法和装置,使得不需要将应用修改为安卓插件的形式即可在第一应用中不经过对第二应用的安装过程而直接启动/运行尚没有被安装在安卓系统中的第二应用。
根据本发明的一个方面,提供了一种对第二应用的安卓安装包进行转换以适于在第一应用中运行的方法,包括:获取安卓安装包中的基础可执行文件;从基础可执行文件获取资源类文件;将资源类文件中特定于安卓系统的内容修改为特定于第一应用的客户端的内容,以形成新资源类文件;将新资源类文件编译为附加可执行文件;以及构建新数据包,新数据包包括基础可执行文件和附加可执行文件。
优选地,该方法还可以包括:检索安卓安装包的资源文件目录中是否有XML布局文件;如果检索到XML布局文件,则通过安卓系统软件开发工具包将XML布局文件的内容合并到资源类文件中。
优选地,该方法还可以包括:判断在基础可执行文件的实际执行过程中是否会用到XML布局文件。如果判定没有用到XML布局文件,则忽略XML布局文件。
优选地,将资源类文件中特定于安卓系统的内容修改为特定于第一应用的客户端的内容的步骤可以包括:将资源类文件中依赖安卓活动对象的编程语句修改为依赖第一应用的客户端管理的相应活动对象的编程语句;和/或将资源类文件中与安卓系统进行交互的编程语句修改为与第一应用的客户端进行交互的编程语句。
优选地,该方法还可以包括:对基础可执行文件进行修改,以便将其中依赖于安卓系统对服务对象和活动对象的生命周期进行管理的内容,修改为依赖于第一应用的客户端对服务对象和活动对象的生命周期进行管理的内容。新数据包中包括的是修改后的基础可执行文件。
优选地,可以按照适于第一应用的客户端执行的结构来构建新数据包。新数据包适于在第一应用中无需安装而直接运行第二应用。
优选地,该方法还可以包括:获取安卓安装包中的资源文件;以第一应用的客户端能够提取的格式压缩资源文件,以形成资源压缩包。新数据包还包括资源压缩包。
优选地,该方法还可以包括:创建针对第一应用的客户端的新签名文件。新数据包还包括新签名文件。
优选地,该方法还可以包括:获取安卓安装包中除基础可执行文件、XML布局文件、资源文件以及原有的签名文件之外的至少部分其余文件。新数据包还包括上述至少部分其余文件。
优选地,该方法可以是在所述第一应用的服务器端执行的。或者,该方法也可以是在所述第一应用的客户端执行的。
根据本发明的另一个方面,提供了一种基于第一应用的客户端运行第二应用的方法,包括:响应于用户基于第一应用的客户端运行第二应用的请求,获取根据上述转换方法针对第二应用构建的新数据包;基于第一应用的客户端,使用新数据包运行第二应用。
优选地,获取新数据包的步骤可以包括:向第一应用的服务器端发送获取针对第二应用构建的新数据包的请求;从第一应用的服务器端接收新数据包。
优选地,获取新数据包的步骤可以包括:向第一应用的服务器端发送获取第二应用的安卓安装包的请求;从第一应用的服务器端接收安卓安装包;基于安卓安装包,使用上述转换方法,构建新数据包。
优选地,使用新数据包运行第二应用的步骤可以包括:获取第二应用对安卓系统资源的调用请求;基于调用请求,调用安卓系统资源。
优选地,使用新数据包运行第二应用的步骤可以包括:获取第二应用的数据输入请求;基于数据输入请求,从安卓系统资源获取数据;将数据提供给第二应用。
优选地,使用新数据包运行第二应用的步骤可以包括:使第一应用的客户端管理和控制第二应用的服务对象和活动对象的生命周期;以及使第一应用的客户端替代安卓系统为第二应用提供全部的安卓系统服务与功能。
优选地,在使用新数据包运行第二应用的步骤中,不需要安装第二应用而直接使用新数据包运行第二应用。
根据本发明的另一个方面,提供了一种对第二应用的安卓安装包进行转换以适于在第一应用中运行的装置,包括:用于获取安卓安装包中的基础可执行文件的装置;用于从基础可执行文件获取资源类文件的装置;用于将资源类文件中特定于安卓系统的内容修改为特定于第一应用的客户端的内容以形成新资源类文件的装置;用于将新资源类文件编译为附加可执行文件的装置;以及用于构建新数据包的装置,新数据包包括基础可执行文件和附加可执行文件。
优选地,该装置还可以包括:用于检索安卓安装包的资源文件目录中是否有XML布局文件的装置;用于在检索到XML布局文件的情况下通过安卓系统软件开发工具包将XML布局文件的内容合并到资源类文件中的装置。
优选地,该装置还可以包括:用于在检索到XML布局文件的情况下判断在基础可执行文件的实际执行过程中是否会用到XML布局文件的装置。如果判定没有用到XML布局文件,则忽略XML布局文件。
优选地,将资源类文件中特定于安卓系统的内容修改为特定于第一应用的客户端的内容以形成新资源类文件的装置包括:用于将资源类文件中依赖安卓活动对象的编程语句修改为依赖第一应用的客户端管理的相应活动对象的编程语句的装置;和/或用于将资源类文件中与安卓系统进行交互的编程语句修改为与第一应用的客户端进行交互的编程语句的装置。
优选地,该装置还可以包括:用于对基础可执行文件进行修改的装置,以便将其中依赖于安卓系统对服务对象和活动对象的生命周期进行管理的内容,修改为依赖于第一应用的客户端对服务对象和活动对象的生命周期进行管理的内容。新数据包中包括的是修改后的基础可执行文件。
优选地,用于构建新数据包的装置可以按照适于第一应用的客户端执行的结构来构建新数据包。新数据包适于在第一应用中无需安装而直接运行第二应用。
优选地,该装置还可以包括:用于获取安卓安装包中的资源文件的装置;用于以第一应用的客户端能够提取的格式压缩资源文件以形成资源压缩包的装置。新数据包还包括资源压缩包。
优选地,该装置还可以包括:用于创建针对第一应用的客户端的新签名文件的装置。新数据包还包括新签名文件。
优选地,该装置还可以包括:用于获取安卓安装包中除基础可执行文件、XML布局文件、资源文件以及原有的签名文件之外的至少部分其余文件的装置。新数据包还包括上述至少部分其余文件。
根据本发明的另一个方面,提供了一种基于第一应用的客户端运行第二应用的装置,包括:用于响应于用户基于第一应用的客户端运行第二应用的请求获取根据上述转换装置针对第二应用构建的新数据包的装置;用于基于第一应用的客户端使用新数据包运行第二应用的装置。
优选地,用于获取新数据包的装置包括:用于向第一应用的服务器端发送获取针对第二应用构建的新数据包的请求的装置;用于从第一应用的服务器端接收新数据包的装置。
优选地,用于获取新数据包的装置包括:用于向第一应用的服务器端发送获取第二应用的安卓安装包的请求的装置;用于从第一应用的服务器端接收安卓安装包的装置;用于基于安卓安装包使用根据上述转换装置构建新数据包的装置。
优选地,用于使用新数据包运行第二应用的装置包括:用于获取第二应用对安卓系统资源的调用请求的装置;用于基于调用请求调用安卓系统资源的装置。
优选地,用于使用新数据包运行第二应用的装置包括:用于获取第二应用的数据输入请求的装置;用于基于数据输入请求从安卓系统资源获取数据的装置;用于将数据提供给第二应用的装置。
优选地,用于使用新数据包运行第二应用的装置包括:用于使第一应用的客户端管理和控制第二应用的服务对象和活动对象的生命周期的装置;以及用于使第一应用的客户端替代安卓系统为第二应用提供全部的安卓系统服务与功能的装置。
优选地,用于基于第一应用的客户端使用新数据包运行第二应用的装置不需要安装第二应用而直接使用新数据包运行第二应用。
根据本发明,使得可以在第一应用中提供试用/直接运行第二应用的功能,即基于第一应用,在不需要安装第二应用的情况下,直接运行第二应用,从而可以为用户提供更好的体验。对于第二应用,不需要第二应用的开发者进行任何改动,也不需要用户对其进行任何改动,即可实现在第一应用中直接启动。
根据本发明,由第一应用例如应用市场接管了第二应用对系统的大部分(甚至全部)依赖,进而实现了第一应用直接启动第二应用的目的。
附图说明
图1是根据本发明第一实施例转换安卓安装包的方法的流程图。
图2是根据本发明第一实施例转换安卓安装包的方法的子步骤的流程图。
图3是根据本发明第二实施例转换安卓安装包的方法的流程图。
图4是根据本发明第三实施例基于第一应用的客户端运行第二应用的方法的流程图。
图5是可以用来实现图4中的步骤S400的一种方式的流程图。
图6是可以用来实现图4中的步骤S400的另一种方式的流程图。
图7是图4中的步骤S500的部分子步骤的流程图。
图8是图4中的步骤S500的部分子步骤的流程图。
图9是图4中的步骤S500的部分子步骤的流程图。
具体实施方式
下面参考附图来详细描述根据本发明对第二应用的安卓安装包进行转换以适于在第一应用中运行的方法和装置,以及基于第一应用的客户端运行第二应用的方法和装置。
在本公开文本中,第一应用可以是应用市场(应用商店),也可以是其它类型的应用,其中例如可以提供第二应用的链接。用户可以在第一用户中接触到第二应用,例如可以根据需要下载第二应用。
然而用户有时候在下载安装第二应用之前,希望能够试用一下第二应用,或者说尝试一下第二应用,或者说在不经过安装过程的情况下直接运行第二应用,以便能够充分了解第二应用,然后再决定是否需要安装第二应用。
或者,用户也有可能并不想安装第二应用,而是希望每次都总是在第一应用(例如应用商店)中直接运行第二应用。
例如,用户在使用一个基于安卓系统或者在安卓系统上修改得到的系统(比如MIUI)的设备,例如手机/平板电脑/智能电视/机顶盒时,如果用户想使用一个在当前设备上没有安装的应用时,用户需要在应用商店中安装此应用,之后用户可以打开安装的这个应用(应用是一个统称,包括各种类别,比如但不限于游戏)。但是很多时候,用户只是想试用一下这个应用,或者用户的设备上已经没有空间安装这个应用。这时候,用户就会遇到问题,因为现在所有的此类应用商店或者类似的应用和功能,都没有提供用户直接启动一个应用的功能。
通过本发明的技术方案,可以实现在任何基于安卓系统的系统里,在应用商店(或者类似于应用商店的应用,或其它应用)中,不需要安装而直接启动并使用任何应用,而且这个应用的开发者和用户都不需要对这个应用进行任何修改。
本发明提供了一种使得用户能够在第一应用中选择试用或直接使用第二应用的方案。
为了在第一应用中,无需安装而直接运行第二应用,需要对第二应用的现有安卓安装包(apk包)进行转换,以便适于在第二应用中运行。
一个APK包通常包括以下文件和目录:
根据需要,APK包中可能还包括其它文件和目录。
图1是根据本发明第一实施例转换安卓安装包的方法的流程图。
首先,在步骤S100,获取安卓安装包中的基础可执行文件,一般是classes.dex文件。
后缀名为dex的文件(dex文件)是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源代码经过ADT的复杂编译后转换成dex文件,这是一个逐步优化的过程。dex文件的指令码就是Dalvik虚拟机专有的一套指令集,专门为嵌入式系统优化过,相比标准java的.class文件,它体积小,运行效率高。
然后,在步骤S110,从基础可执行文件例如classes.dex获取资源类文件例如R.java。
R.java文件是在程序编译过程中自动生成的,是Java代码和独立于Java代码的资源文件之间的访问窗口,Java程序可以通过R.java来访问那些资源文件。
在apk包中,R.java已经被编译到基础可执行文件classes.dex中。
因此,可以例如通过反编译过程,从classes.dex中逆向取出R.java。
对于一些apk包而言,因为已经在R.java中对资源文件做了充分的描述,因此其资源文件目录(res\)中没有XML布局文件。
而在另一些apk包中,在其资源文件目录(res\)中还会有XML布局文件。
为了使第一应用能够直接运行第二应用,需要将资源文件目录中的XML布局文件合并到R.java中。
图2示出了实现这一合并的步骤的流程图。
图2中示出在步骤S110从基础可执行文件classes.dex中获取资源类文件R.java之后,执行步骤S112和S114。本领域技术人员应该明白,步骤S110的执行与步骤S112和S114的执行顺序可以颠倒,或者可以同时执行,而并不会影响本发明的效果。
在步骤S112,检索安卓安装包(apk包)的资源文件目录(res\)中是否有XML布局文件。
如果在步骤S112中检索到XML布局文件,可以在步骤S114中判断在基础可执行文件(classes.dex)的实际执行过程中是否会用到XML布局文件。
步骤S114的判断可以在第一应用的服务器端,也可以在第一应用的客户端执行。例如通过在第一应用的服务器端运行第二应用来判断基础可执行文件(classes.dex)是否用到了该XML布局文件。
在判定需要使用XML布局文件的情况下,在步骤S116,例如可以通过安卓系统软件开发工具包将XML布局文件的内容合并到资源类文件(R.java)中。
如果在步骤S114中判定第二应用的实际运行中并没有用到XML布局文件,则可以忽略XML布局文件。
另外,上述步骤S114也可以省略,而只是简单地在步骤S112中检索到XML布局文件的情况下,都在步骤S116中将XML布局文件的内容合并到资源类文件(R.java)中。
返回图1,在步骤S120,将资源类文件(R.java)中特定于安卓系统的内容修改为特定于第一应用的客户端的内容,以形成新资源类文件(R.java)。
在这里,可以将资源类文件(R.java)中,依赖安卓活动对象(activity)的编程语句修改为依赖第一应用的客户端管理的相应活动对象的编程语句。
或者,还可以将资源类文件(R.java)中与安卓系统进行交互的编程语句修改为与第一应用的客户端进行交互的编程语句。
通过这样修改,消除了资源类文件(R.java)对安卓系统的依赖,而可以使其依赖于第一应用的客户端。从而使得根据本发明的方法转换后的新数据包能够基于第一应用的客户端运行。
接下来,在步骤S130,将新资源类文件(R.java)编译为附加可执行文件(R.dex)。在第一应用的客户端,可以直接运行该附加可执行文件(R.dex)。
然后,在步骤S200,构建新数据包。新数据包可以包括基础可执行文件(classes.dex)和附加可执行文件(R.dex)。
附加可执行文件(R.dex)使得第一应用能够调用相关的资源文件。基础可执行文件(classes.dex)则例如可以使得第一应用能够运行第二应用的其它功能。两个可执行文件结合,从而在第一应用中能够运行第二应用。
在步骤S200中,可以按照适于第一应用的客户端执行的结构来构建新数据包。这里包的结构可以指包中包含哪些文件和目录。
这样构建的新数据包适于在第一应用中无需安装而直接运行第二应用。
如上所述,安卓安装包(apk包)中包含有若干内容。
在一个完整的新数据包中,除了基础可执行文件(classes.dex)和附加可执行文件(R.dex)之外,也会具有一些其它内容。其中一些内容也可以做出适应性的修改,以适于在第二应用的客户端上运行。
下面参考图3描述根据本发明第二实施例转换安卓安装包的方法的流程图,其中进一步示出了新数据包中其它内容的处理。
图3是根据本发明第二实施例转换安卓安装包的方法的流程图。
如图3所示,在步骤S100中获取基础可执行文件(classes.dex)之后,一方面,如图1所示,经步骤S110、S120、S130而产生了附加可执行文件(R.dex),在步骤S200中构建新数据包时,将该附加可执行文件(R.dex)包括在内。
另外,在步骤S150中,还可以对基础可执行文件(classes.dex)做一些适应性修改,以便将其中依赖于安卓系统对服务对象(service)和活动对象(activity)的生命周期进行管理的内容,修改为依赖于第一应用的客户端对服务对象和活动对象的生命周期进行管理的内容。
在步骤S200中,将修改后的基础可执行文件(classes.dex)添加到新数据包中。
另外,在步骤S160中,获取安卓安装包(apk包)中的资源文件,例如资源文件目录(res\)中的图片和文本。
然后,在步骤S165,以第一应用的客户端能够提取的格式,例如zip格式,压缩资源文件,以形成资源压缩包。
在步骤S200中,还可以在新数据包添加资源压缩包。
另外,在步骤S170,创建针对第一应用的客户端的新签名文件。
这样,在步骤S200中,可以在新数据包添加新签名文件以替代原有的签名文件。
另外,在步骤S180,可以获取安卓安装包(apk包)中除上述基础可执行文件、上述XML布局文件、上述资源文件以及原有的签名文件之外的至少部分其余文件,例如assets\目录中的配置文件等。
这些文件可以不需要做出修改,在步骤S200中,直接将这些assets文件添加到新数据包。
经过上述转换,原apk包中的程序全局配置文Androidmanifest.xml和资源索引表resources.arsc可以不再需要。因此,在新数据包中可以省略这两个文件,也可以保留这两个文件。
至此,已经描述了根据本发明对第二应用的安卓安装包进行转换以适于在第一应用中运行的方法。
根据本发明的安卓安装包的转换方法的上述各步骤既可以在第一应用的服务器端执行,也可以在第一应用的客户端执行。甚至也可以部分步骤在第一应用的服务器端执行,而另一部分步骤在第一应用的客户端执行。
在第一应用的服务器端执行转换的好处例如有:
1.性能好:在客户端执行转换,会导致apk启动速度慢,用户启动apk,需要先经过转换过程。
2.安全:由服务器端管理安装包,可以保证安装包的代码不被恶意修改。
3.保密:由于这个过程对客户端透明,所以可以做到更好的保密。
下面参考图4至图9,详细描述使用转换后的新数据包来在第一应用中运行第二应用的方法。
图4至图9中所示出且在下文中描述的各步骤都是由第一应用的客户端执行的,或者说,基于第一应用的客户端执行的。
图4是根据本发明第三实施例基于第一应用的客户端运行第二应用的方法的流程图。
在第一应用中,例如可以有对第二应用的介绍宣传等,并且还可以有第二应用的下载/安装链接。另外,根据本发明,在第一应用中还设置了例如“试用”/“直接使用”按钮。当用户按下“试用”/“直接使用”按钮(即用户发出了基于第一应用的客户端运行第二应用的请求)时,可以在第一应用中无需安装第二应用而直接运行第二应用。
具体实现方式如下。
响应于用户基于第一应用的客户端运行第二应用的请求,在步骤S400,获取根据本发明上述对第二应用的安卓安装包进行转换的方法针对第二应用构建的新数据包。
当在第一应用的服务器端执行上述转换方法时,可以采用图5所示方法来获取新数据包。
图5是可以用来实现图4中的步骤S400的一种方式的流程图。
在步骤S410,向第一应用的服务器端发送获取针对第二应用构建的新数据包的请求。
服务器端可以响应于该请求而执行上述转换方法对第二应用对应的安卓安装包(apk包)进行转换,以得到新数据包。
服务器端也可以预先执行上述转换方法而准备好新数据包,以备客户端请求时发送。在这种情况下,可以节省操作时间。
然后,在步骤S420,从第一应用的服务器端接收新数据包。
当在第一应用的客户端执行上述转换方法时,可以采用图6所示方法来获取新数据包。
图6是可以用来实现图4中的步骤S400的另一种方式的流程图。
在步骤S420,向第一应用的服务器端发送获取第二应用的安卓安装包(apk包)的请求。
然后,在步骤S422,从第一应用的服务器端接收安卓安装包(apk包)。
然后,在步骤S424,基于安卓安装包(apk包),使用根据上面描述的根据本发明的转换方法,构建新数据包,从而获得新数据包。
返回图4,在步骤S400获取新数据包之后,在步骤S500,基于第一应用的客户端,使用新数据包运行第二应用。
在步骤S500中,不需要安装第二应用而直接使用新数据包运行第二应用。
从用户的感受来看,例如可以是在点击了“试用”/“直接运行”按钮之后,直接在第一应用中,或者基于第一应用,开始运行第二应用了。
另外,当从第二应用返回的时候,可以回到第一应用的界面。
下面参考图7至9,对步骤S500做一些更详细的描述。
图7是图4中的步骤S500的部分子步骤的流程图。
例如,当第二应用需要调用安卓系统资源时,可以执行图7所示的子步骤。
在步骤S510,第一应用的客户端获取第二应用对安卓系统资源的调用请求。或者,也可以说,第一应用的客户端截取了第二应用对安卓系统资源的调用请求。
然后,在步骤S515,第一应用的客户端基于来自第二应用的调用请求,调用安卓系统资源。
由于第二应用不是基于安卓系统来运行的,所以不能直接调用安卓系统资源。但是第二应用的新数据包是适应于第一应用而转换的,所以第一应用能够截取第二应用对安卓系统资源的调用请求。而第一应用已经安装在安卓系统上,能够调用安卓系统资源。因此,第一应用可以基于来自第二应用的调用请求调用安卓系统资源。从用户的感受来看,似乎就是第二应用调用了安卓系统资源一样。
由此,可以实现第二应用对安卓系统资源的调用。
图8是图4中的步骤S500的部分子步骤的流程图。
例如,当第二应用需要从安卓系统资源获取数据时,例如需要接收用户输入的数据、接收来自麦克风的声音、接收来自通信接口的数据、接收来自手机产生的数据例如传感器数据等时,可以执行图8所示的子步骤。
在步骤S520,第一应用的客户端获取第二应用的数据输入请求。
然后,在步骤S522,第一应用的客户端基于来自第二应用的数据输入请求,从安卓系统资源获取数据。
然后,在步骤S524,第一应用的客户端将来自安卓系统资源的数据提供给第二应用。
由于第二应用不是基于安卓系统来运行的,所以不能直接获取来自安卓系统资源的数据。但是第二应用的新数据包是适应于第一应用而转换的,所以第一应用能够截取第二应用从安卓系统资源获取数据的数据输入请求。而第一应用已经安装在安卓系统上,能够从安卓系统资源获取数据。因此,第一应用可以基于来自第二应用的数据输入请求从安卓系统资源获取数据,然后将所获取的数据提供给第二应用。从用户的感受来看,似乎就是第二应用直接获取了安卓系统资源一样。
图9是图4中的步骤S500的部分子步骤的流程图。
另外,当在第二应用的运行过程中涉及到服务对象(service)和活动对象(activity)的生命周期时,也需要由第一应用的客户端来管理和控制它们的生命周期。
在步骤S530,使第一应用的客户端管理和控制第二应用的服务对象和活动对象的生命周期。
另外,在步骤S535,还使第一应用的客户端替代安卓系统为第二应用提供全部的安卓系统服务与功能。
步骤S530和步骤S535可以根据需要按任何顺序执行,或者同时执行,或者相互穿插着执行。因此,图9中并没有体现两者之间的顺序。
至此,已经详细描述了根据本发明的转换安卓安装包的方法和基于第一应用的客户端运行第二应用的方法。
根据本发明,还可以有对应于上述方法的装置,即对第二应用的安卓安装包进行转换以适于在第一应用中运行的装置,以及基于第一应用的客户端运行第二应用的装置。该装置可以分别具有与上述各个步骤对应的子装置。
本发明适于在基于安卓系统或者在安卓系统上修改得到的系统(如MIUI)的设备上试用,例如手机、平板电脑、智能电视、机顶盒。
本发明可以体现为软件程序产品,其中包括若干机器可读代码,分别指示手机或计算机执行上述相应的方法步骤。
本发明还可以体现为计算机可读存储介质,其上存储有上述机器可读代码。
至此,已详细描述了根据本发明的转换安卓安装包的方法和装置以及运行应用市场中的应用的方法和装置的具体实施例。然而本领域技术人员应该明白,本发明不限于这里描述的各种细节,而是可以做出适当的修改。本发明的保护范围由所附权利要求书限定。
Claims (33)
1.一种对第二应用的安卓安装包进行转换以适于在第一应用中运行的方法,包括:
获取所述安卓安装包中的基础可执行文件;
从所述基础可执行文件获取资源类文件;
将所述资源类文件中特定于安卓系统的内容修改为特定于所述第一应用的客户端的内容,以形成新资源类文件;
将所述新资源类文件编译为附加可执行文件;以及
构建新数据包,所述新数据包包括所述基础可执行文件和所述附加可执行文件。
2.根据权利要求1所述的方法,还包括:
检索所述安卓安装包的资源文件目录中是否有XML布局文件;
如果检索到所述XML布局文件,则通过安卓系统软件开发工具包将所述XML布局文件的内容合并到所述资源类文件中。
3.根据权利要求2所述的方法,还包括:
判断在所述基础可执行文件的实际执行过程中是否会用到所述XML布局文件,
如果判定没有用到所述XML布局文件,则忽略所述XML布局文件。
4.根据权利要求1所述的方法,其中,将所述资源类文件中特定于安卓系统的内容修改为特定于所述第一应用的客户端的内容的步骤包括:
将所述资源类文件中依赖安卓活动对象的编程语句修改为依赖所述第一应用的客户端管理的相应活动对象的编程语句;和/或
将所述资源类文件中与安卓系统进行交互的编程语句修改为与所述第一应用的客户端进行交互的编程语句。
5.根据权利要求1所述的方法,还包括:
对所述基础可执行文件进行修改,以便将其中依赖于安卓系统对服务对象和活动对象的生命周期进行管理的内容,修改为依赖于所述第一应用的客户端对服务对象和活动对象的生命周期进行管理的内容,
其中,所述新数据包中包括的是修改后的基础可执行文件。
6.根据权利要求1至5中任何一项所述的方法,其中,
按照适于所述第一应用的客户端执行的结构来构建所述新数据包,
所述新数据包适于在所述第一应用中无需安装而直接运行所述第二应用。
7.根据权利要求6所述的方法,还包括:
创建针对所述第一应用的客户端的新签名文件,
其中,所述新数据包还包括所述新签名文件。
8.根据权利要求6所述的方法,还包括:
获取所述安卓安装包中的资源文件;
以所述第一应用的客户端能够提取的格式压缩所述资源文件,以形成资源压缩包,
其中,所述新数据包还包括所述资源压缩包。
9.根据权利要求8所述的方法,还包括:
获取安卓安装包中除所述基础可执行文件、XML布局文件、所述资源文件以及原有的签名文件之外的至少部分其余文件,
其中,所述新数据包还包括所述至少部分其余文件。
10.根据权利要求1至5中任何一项所述的方法,其中,
该方法是在所述第一应用的服务器端执行的;或者
该方法是在所述第一应用的客户端执行的。
11.一种基于第一应用的客户端运行第二应用的方法,包括:
响应于用户基于所述第一应用的客户端运行第二应用的请求,获取根据权利要求1至10中任何一项所述的方法针对所述第二应用构建的新数据包;
基于所述第一应用的客户端,使用所述新数据包运行所述第二应用。
12.根据权利要求11所述的方法,其中,获取新数据包的步骤包括:
向所述第一应用的服务器端发送获取针对所述第二应用构建的新数据包的请求;以及
从所述第一应用的服务器端接收所述新数据包。
13.根据权利要求11所述的方法,其中,获取新数据包的步骤包括:
向所述第一应用的服务器端发送获取所述第二应用的安卓安装包的请求;
从所述第一应用的服务器端接收所述安卓安装包;以及
基于所述安卓安装包,使用根据权利要求1至10中任何一项所述的方法,构建所述新数据包。
14.根据权利要求11所述的方法,其中,使用所述新数据包运行所述第二应用的步骤包括:
获取所述第二应用对安卓系统资源的调用请求;以及
基于所述调用请求,调用所述安卓系统资源。
15.根据权利要求11所述的方法,其中,使用所述新数据包运行所述第二应用的步骤包括:
获取所述第二应用的数据输入请求;
基于所述数据输入请求,从所述安卓系统资源获取数据;以及
将所述数据提供给所述第二应用。
16.根据权利要求11所述的方法,其中,使用所述新数据包运行所述第二应用的步骤包括:
使所述第一应用的客户端管理和控制所述第二应用的服务对象和活动对象的生命周期;以及
使所述第一应用的客户端替代安卓系统为第二应用提供全部的安卓系统服务与功能。
17.根据权利要求11所述的方法,其中,在使用所述新数据包运行所述第二应用的步骤中,不需要安装所述第二应用而直接使用所述新数据包运行所述第二应用。
18.一种对第二应用的安卓安装包进行转换以适于在第一应用中运行的装置,包括:
用于获取所述安卓安装包中的基础可执行文件的装置;
用于从所述基础可执行文件获取资源类文件的装置;
用于将所述资源类文件中特定于安卓系统的内容修改为特定于所述第一应用的客户端的内容以形成新资源类文件的装置;
用于将所述新资源类文件编译为附加可执行文件的装置;以及
用于构建新数据包的装置,所述新数据包包括所述基础可执行文件和所述附加可执行文件。
19.根据权利要求18所述的装置,还包括:
用于检索所述安卓安装包的资源文件目录中是否有XML布局文件的装置;
用于在检索到所述XML布局文件的情况下通过安卓系统软件开发工具包将所述XML布局文件的内容合并到所述资源类文件中的装置。
20.根据权利要求18所述的装置,还包括:
用于在检索到XML布局文件的情况下判断在所述基础可执行文件的实际执行过程中是否会用到所述XML布局文件的装置,
如果判定没有用到所述XML布局文件,则忽略所述XML布局文件。
21.根据权利要求18所述的装置,其中,将所述资源类文件中特定于安卓系统的内容修改为特定于所述第一应用的客户端的内容以形成新资源类文件的装置包括:
用于将所述资源类文件中依赖安卓活动对象的编程语句修改为依赖所述第一应用的客户端管理的相应活动对象的编程语句的装置;和/或
用于将所述资源类文件中与安卓系统进行交互的编程语句修改为与所述第一应用的客户端进行交互的编程语句的装置。
22.根据权利要求18所述的装置,还包括:
用于对所述基础可执行文件进行修改的装置,以便将其中依赖于安卓系统对服务对象和活动对象的生命周期进行管理的内容,修改为依赖于所述第一应用的客户端对服务对象和活动对象的生命周期进行管理的内容,
所述新数据包中包括的是修改后的基础可执行文件。
23.根据权利要求18至22中任何一项所述的装置,其中,
用于构建新数据包的装置按照适于所述第一应用的客户端执行的结构来构建所述新数据包,
其中,所述新数据包适于在所述第一应用中无需安装而直接运行所述第二应用。
24.根据权利要求23所述的装置,还包括:
用于创建针对所述第一应用的客户端的新签名文件的装置,
其中,所述新数据包还包括所述新签名文件。
25.根据权利要求23所述的装置,还包括:
用于获取所述安卓安装包中的资源文件的装置;
用于以所述第一应用的客户端能够提取的格式压缩所述资源文件以形成资源压缩包的装置,
其中,所述新数据包还包括所述资源压缩包。
26.根据权利要求25所述的装置,还包括:
用于获取安卓安装包中除所述基础可执行文件、XML布局文件、所述资源文件以及原有的签名文件之外的至少部分其余文件的装置,
其中,所述新数据包还包括所述至少部分其余文件。
27.一种基于第一应用的客户端运行第二应用的装置,包括:
用于响应于用户基于所述第一应用的客户端运行第二应用的请求获取根据权利要求18至26中任何一项所述的装置针对所述第二应用构建的新数据包的装置;
用于基于所述第一应用的客户端使用所述新数据包运行所述第二应用的装置。
28.根据权利要求27所述的装置,其中,用于获取新数据包的装置包括:
用于向所述第一应用的服务器端发送获取针对所述第二应用构建的新数据包的请求的装置;
用于从所述第一应用的服务器端接收所述新数据包的装置。
29.根据权利要求27所述的装置,其中,用于获取新数据包的装置包括:
用于向所述第一应用的服务器端发送获取所述第二应用的安卓安装包的请求的装置;
用于从所述第一应用的服务器端接收所述安卓安装包的装置;
用于基于所述安卓安装包使用根据权利要求18至26中任何一项所述的装置构建所述新数据包的装置。
30.根据权利要求27所述的装置,其中,用于使用所述新数据包运行所述第二应用的装置包括:
用于获取所述第二应用对安卓系统资源的调用请求的装置;
用于基于所述调用请求调用所述安卓系统资源的装置。
31.根据权利要求27所述的装置,其中,用于使用所述新数据包运行所述第二应用的装置包括:
用于获取所述第二应用的数据输入请求的装置;
用于基于所述数据输入请求从所述安卓系统资源获取数据的装置;
用于将所述数据提供给所述第二应用的装置。
32.根据权利要求27所述的装置,其中,用于使用所述新数据包运行所述第二应用的装置包括:
用于使所述第一应用的客户端管理和控制所述第二应用的服务对象和活动对象的生命周期的装置;以及
用于使所述第一应用的客户端替代安卓系统为第二应用提供全部的安卓系统服务与功能的装置。
33.根据权利要求27所述的装置,其中,用于基于所述第一应用的客户端使用所述新数据包运行所述第二应用的装置不需要安装所述第二应用而直接使用所述新数据包运行所述第二应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410522318.6A CN104317573B (zh) | 2014-10-03 | 2014-10-03 | 安卓安装包转换方法和装置以及运行应用的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410522318.6A CN104317573B (zh) | 2014-10-03 | 2014-10-03 | 安卓安装包转换方法和装置以及运行应用的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317573A CN104317573A (zh) | 2015-01-28 |
CN104317573B true CN104317573B (zh) | 2017-06-16 |
Family
ID=52372808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410522318.6A Active CN104317573B (zh) | 2014-10-03 | 2014-10-03 | 安卓安装包转换方法和装置以及运行应用的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317573B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772930B2 (en) * | 2015-06-22 | 2017-09-26 | Adobe Systems Incorporated | Techniques for evaluating applications through use of an auxiliary application |
CN106528206A (zh) * | 2016-10-12 | 2017-03-22 | 北京奇虎科技有限公司 | 应用的启动控制方法、装置和加固应用安装包的装置 |
CN106941709B (zh) | 2016-12-28 | 2019-02-26 | 上海掌门科技有限公司 | 通过用户设备中的应用连接无线接入点的方法与设备 |
CN107193544B (zh) * | 2017-04-01 | 2021-01-15 | 北京五八信息技术有限公司 | 一种应用程序组件化开发方法及装置 |
CN108762821B (zh) * | 2017-04-18 | 2023-04-25 | 海马云(天津)信息技术有限公司 | 电子设备运行应用的装置及方法、电子设备 |
CN107871080A (zh) * | 2017-12-04 | 2018-04-03 | 杭州安恒信息技术有限公司 | 大数据混合式Android恶意代码检测方法及装置 |
CN109857405A (zh) * | 2019-02-02 | 2019-06-07 | Oppo广东移动通信有限公司 | 应用程序安装包的编译方法、装置、存储介质及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968539B1 (en) * | 1999-09-30 | 2005-11-22 | International Business Machines Corporation | Methods and apparatus for a web application processing system |
CN103716346A (zh) * | 2012-09-29 | 2014-04-09 | 北京神州泰岳软件股份有限公司 | 一种安卓手机客户端上应用的管理方法和装置 |
CN103838572A (zh) * | 2013-12-20 | 2014-06-04 | 北京掌阔技术有限公司 | 一种安卓开发包的打包系统和方法 |
-
2014
- 2014-10-03 CN CN201410522318.6A patent/CN104317573B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968539B1 (en) * | 1999-09-30 | 2005-11-22 | International Business Machines Corporation | Methods and apparatus for a web application processing system |
CN103716346A (zh) * | 2012-09-29 | 2014-04-09 | 北京神州泰岳软件股份有限公司 | 一种安卓手机客户端上应用的管理方法和装置 |
CN103838572A (zh) * | 2013-12-20 | 2014-06-04 | 北京掌阔技术有限公司 | 一种安卓开发包的打包系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104317573A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317573B (zh) | 安卓安装包转换方法和装置以及运行应用的方法和装置 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN107168742B (zh) | 基于定制安卓平台的应用快速部署方法 | |
KR102218995B1 (ko) | 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치 | |
CN102971688B (zh) | 跨平台应用程序框架 | |
US20160132612A1 (en) | Methods and systems for the provisioning and execution of a mobile software application | |
CN110058863A (zh) | Docker容器的构建方法、装置、设备及存储介质 | |
KR102122451B1 (ko) | 애플리케이션의 개발을 지원하는 플랫폼의 동작 방법 및 플랫폼을 제공하는 서버 | |
US20100281475A1 (en) | System and method for mobile smartphone application development and delivery | |
US7509658B2 (en) | System and method for adaptable provisioning of generic application content | |
KR20160061305A (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
JP2011107752A (ja) | 情報処理装置、通信システムおよびプログラム | |
CN106997298A (zh) | 一种应用资源获取方法及装置 | |
CN104636122B (zh) | 一种能力组件的共享方法和设备 | |
KR20180053358A (ko) | 컴퓨팅 장치에서의 애플리케이션 실행방법 | |
US20060248508A1 (en) | Method and system for applet extensibility application program interface (API) | |
CN109240733A (zh) | 一种基于安卓系统更新广告sdk的方法及终端 | |
WO2013134813A1 (en) | A method and system of application development for multiple device client platforms | |
KR20110123867A (ko) | 웹 어플리케이션 실행 장치 및 그의 웹 어플리케이션 관리 방법 | |
Miravet et al. | Framework for the declarative implementation of native mobile applications | |
EP3611616A1 (en) | Software code optimizer and method | |
KR20130012603A (ko) | 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체 | |
JP2008243070A (ja) | 環境移行サーバ装置、端末装置、環境移行方法及び環境移行プログラム | |
KR20130094003A (ko) | 다양한 기종에서 지원 가능한 하이브리드 어플리케이션 제작 시스템 및 그 제작 방법 | |
JP2014164545A (ja) | デプロイメント方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |