计算装置及在该计算装置中执行的方法与流程

文档序号:16246238发布日期:2018-12-11 23:36阅读:173来源:国知局
本发明的实施例涉及一种转换应用程序的技术。
背景技术
:企业移动管理(emm:enterprisemobilitymanagement)是包括移动设备管理(mdm:mobiledevicemanagement)功能以及移动应用程序管理(mam:mobileapplicationmanagement)功能的企业用移动安全(mobilesecurity)解决方案之一。尤其,随着最近移动终端的使用普遍化,诸如能够将职员个人终端用于业务中的自带设备(byod:bringyourowndevice)或者将公司提供的特定终端同时用于移动业务和个人用途的公司授权-个人使用(cope:company-issued,personalenabled)等的移动趋势(mobiletrends)正在扩散。但是,随着将个人终端同时用于业务和个人用途,对企业机密泄露的担忧也在增加。并且,因此对终端的诸如无线网络(wifi)、相机控制、gps控制、通信控制等的硬件控制功能以及业务所需的诸如电子邮件、信使(messenger)、公司内部系统等的企业用应用程序本身进行动态控制的要求也在增加。为了使企业用应用程序与emm等形成关联而得到控制,需要使用从emm等提供的应用程序编程接口(api)来另行制造企业用应用程序。但是在这种情况下,需要基于emm重新制造全部的现有的多种企业用应用程序,因此产生成本及时间方面的问题。因此,需要一种以无需另行制造现有的企业用应用程序也能够包括emm等追加功能的方式有效地转换应用程序的方案。另外,随着android平台的不断发展,android应用程序的规模也在不断增加。android应用程序(apk)文件中包括dex(dalvikexecutable))文件格式的可执行字节码文件。dalvikexecutable规范将单个dex文件中内可引用的方法的总数限制为65536,在此包括android框架法、文库法、添加的代码中的方法。在计算机工程方面,“千”,即,k表示1024(或210)。65536等于64×1024,所以所述限制通常被称为“64k引用限制”。如果在现有的企业用应用程序中已引用的方法的数量接近65k的情况下(即,大容量应用程序的情况),若应用程序转换为包括追加功能的应用程序,则发生由于所述64k引用限制导致无法执行应用程序的情况。因此,在转换应用程序时,需要一种能够回避所述64k引用限制的方法。[现有技术文献]韩国公开专利公报第10-2014-0016897号(2014.02.10)技术实现要素:本发明的实施例用于提供如下的技术方案:转换现有的应用程序来使现有的应用程序额外地包括添加所期望的策略和功能。并且,本发明的实施例用于提供如下的技术方案:回避在转换应用程序时可能发生的引用受到限制的错误。根据示例性的实施例,提供一种在计算装置中执行的方法,所述计算装置包括一个以上的处理器以及存储有通过所述一个以上的处理器运行的一个以上的程序的存储器,其中,所述方法包括如下步骤:分解(decompose)原始应用程序包;从所述经分解的原始应用程序包提取一个以上的应用程序运行文件;将包括一个以上的修改类的代理类文件添加到所述经分解的原始应用程序包;将在所述一个以上的应用程序运行文件内引用的类中的至少一部分代替为所述修改类;以及,生成包括以所述修改类代替的所述应用程序运行文件的修改的应用程序包。所述代理类文件还可以包括:用于所述一个以上的修改类的运行的一个以上的应用程序编程接口;以及,在所述应用程序编程接口引用的一个以上的策略信息。所述应用程序编程接口可包括用于从预设的远程服务器接收所述策略信息并对其进行更新的程序运行代码。添加所述代理类文件的步骤还可以包括以下步骤:引用所述一个以上的应用程序运行文件的文件名及所述应用程序运行文件的文件名生成规则,来变更所述代理类文件的文件名。执行分解(decompose)所述原始应用程序包的步骤之后,所述方法还可以包括以下步骤:从所述经分解的原始应用程序包提取与所述原始应用程序包的驱动相关的信息文件;以及,变更所述信息文件内的所述原始应用程序包的包名称。执行分解(decompose)所述原始应用程序包的步骤之后,所述方法还可以包括以下步骤:从所述经分解的原始应用程序包提取所述原始应用程序包的图标文件;以及,将所述图标文件替换为代替的图标文件。根据另一示例性的实施例,提供一种计算装置,包括:一个以上的处理器;存储器;以及,一个以上的程序,其中,所述一个以上的程序构成为存储于所述存储器中并通过所述一个以上的处理器运行,所述一个以上的程序包括:用于分解(decompose)原始应用程序包的指令;用于从所述经分解的原始应用程序包提取一个以上的应用程序运行文件的指令;用于将包括一个以上的修改类的代理类文件添加到所述经分解的原始应用程序包的指令;用于将在所述一个以上的应用程序运行文件内引用的类中的至少一部分代替为所述修改类的指令;以及,用于生成包括以所述修改类代替的所述应用程序运行文件的修改的应用程序包的种类。所述代理类文件还可以包括:用于所述一个以上的修改类的运行的一个以上的应用程序编程接口;以及,在所述应用程序编程接口引用的一个以上的策略信息。所述应用程序编程接口可包括用于从预设的远程服务器接收所述策略信息并对其进行更新的程序运行代码。用于添加所述代理类文件的指令还可以包括:用于引用所述一个以上的应用程序运行文件的文件名及所述应用程序运行文件的文件名生成规则,来变更所述代理类文件的文件名的指令。所述一个以上的程序还可以包括:用于在执行用于分解所述原始应用程序包的指令之后,从所述经分解的所述原始应用程序包提取与所述原始应用程序包的驱动相关的信息文件的指令;以及,用于变更所述信息文件内的所述原始应用程序包的包名称的指令。所述一个以上的程序还可以包括:用于在执行用于分解所述原始应用程序包的指令之后,从经分解的所述原始应用程序包提取所述原始应用程序包的图标文件的指令;以及,用于将所述图标文件替换为代替图标文件的指令。根据本发明的实施例,能够在最小化应用程序的源代码修改的同时有效地转换为符合emm目的的增强安全性的应用程序。并且,根据本发明的实施例,能够有效地回避在转换应用程序时可能发生的引用受到限制的错误,因此应用程序转换也能够适用于大容量应用程序。附图说明图1是用于举例说明包括适合使用于示例性实施例的计算装置的计算环境的框图。图2是用于说明android应用程序包的文件格式的示例图。图3是用于说明根据本发明的一实施例的应用程序转换方法的流程图。图4是用于说明根据本发明的一实施例的代理类文件的框图。符号说明400:代理类文件402:修改类404:应用程序编程接口406:策略信息408:网络410:策略服务器具体实施方式以下,参照附图而对本发明的具体实施方式进行说明。以下的详细说明是为了有助于全面理解本说明书中记载的方法、装置和/或系统而提供的。然而,这仅仅是示例,本发明并不局限于此。在对本发明的实施例进行说明的过程中,如果判断为对有关本发明的公知技术的具体说明有可能对本发明的主旨造成不必要的混乱,则省略其详细说明。另外,后述的术语均为考虑到本发明中的功能而定义的术语,其可能根据使用者、运用者的意图或惯例等而不同。因此,需要以贯穿整个说明书的内容为基础而对其进行定义。在详细说明中使用的术语只用于记载本发明的实施例而并非旨在限定本发明。除非明确不同地使用,否则单数形态的表述包括复数形态的含义。在本说明书中,诸如“包括”或“具有”等的术语用于指代某种特性、数字、步骤、操作、要素及它们一部分或组合,不应被解释为排除所记载项之外的一个或一个以上的其他特性、数字、步骤、操作、要素及它们一部分或组合的存在性或可存在性。图1是用于举例说明包括适合使用于示例性实施例的计算装置的计算环境10的框图。在图示的实施例中,各个组件可以具有除以下记载的内容以外的不同的功能及能力,也可以包括除以下记载的组件以外的额外的组件。图示的计算环境10包括计算装置12。在一实施例中,计算装置12可以是根据本发明的实施例的应用程序转换装置。计算装置12包含至少一个处理器14、计算机可读存储介质16以及通信总线(bus)18。处理器14可使计算装置12根据上文中所提到的示例性的实施例而操作。例如,处理器14可运行存储于计算机可读存储介质16中的一个以上的程序。所述一个以上的程序可以包含一个以上的计算机可执行指令,所述计算机可执行指令可构成为:在由处理器14运行的情况下,使计算装置12运行根据示例性的实施例的操作。计算机可读存储介质16以能够存储计算机可执行指令乃至程序代码、程序数据和/或其他适合的形式的信息的方式构成。存储于计算机可读存储介质16中的程序20包含可由处理器14运行的指令的集合。在一实施例中,计算机可读存储介质16可以是存储器(随机存取存储器等易失性存储器、非易失性存储器或者这些存储器的适当的组合)、一个以上的磁盘存储设备、光盘存储设备、闪速存储设备、除此之外的可由计算装置12访问并能够存储所期望的信息的其他形式的存储介质或者这些的适合的组合。通信总线18用于将包括处理器14、计算机可读存储介质16的计算装置12的其他多样的组件相互连接。计算装置12还可以包含提供用于一个以上的输入输出装置24的接口的一个以上的输入输出接口22以及一个以上的网络通信接口26。输入输出接口22以及网络通信接口26连接到通信总线18。输入输出装置24可以通过输入输出接口22而连接到计算装置12的其他组件。示例性的输入输出装置24可以包括:诸如指示装置(鼠标或者触控板(trackpad)等)、键盘、触摸输入装置(触摸板或者触摸屏等)、语音或者声音输入装置、多样的种类的传感器装置和/或拍摄装置等的输入装置;和/或诸如显示装置、打印机、扬声器和/或网卡(networkcard)等的输出装置。示例性的输入输出装置24可以作为用于构成计算装置12的一组件而被包含在计算装置12的内部,也可以作为区别于计算装置12的独立的装置而连接到计算装置12。根据本发明的实施例的计算装置12是用于对已存在的原始应用程序添加附加功能或政策等而转换所述原始应用程序的装置。在本发明的实施例中,计算装置12构成为分解作为转换对象的原始应用程序包(applicationpackage)而从中提取应用程序运行文件,并向所述应用程序运行文件添加与附加功能相关的代理类文件,之后再次结合所述原始应用程序包而生成经修改的应用程序包。在本发明的实施例中,代理(proxy)类文件表示通过如下的类的集合构成的文件,其中,所述类包括用于期望添加到应用程序的附加功能的接口及原始应用程序包的特定类所引用的类。例如,在所述附加功能是与emm相关的功能时,所述代理类文件可以通过包括用于emm的接口和原始应用程序包的特定类所引用的类的类的集合构成。在本发明的实施例中,代理类文件构成为如同网络中常用的代理服务器一样,在应用程序的内部逻辑调用中附加功能所需或所遵循的功能操作时通过该类,将其成为“代理”类。例如,根据本发明的实施例的计算装置12可以为了在不考虑安全功能而制成的企业用应用程序中附加诸如emm的安全功能而被使用。在此情况下,企业等可无需重新制造当前使用的应用程序也能够容易生成具有安全功能的企业用应用程序。但是,本发明的实施例不限于上述的安全等特定用途,可以无限制地应用于在已存在的应用程序中应用多种附加功能或政策的情况。在本发明的实施例中,应用程序包作为应用程序的部署类型之一,其包括应用程序的运行代码以及运行所述应用程序所需的附加数据(运行环境、附加内容等)而构成。在以下的说明中,为了便于说明,以美国谷歌公司公开的android应用程序包(androidapplicationpackage)的格式(apk文件格式)为基准而对本发明的实施例进行说明。但是,需要留意本发明的实施例不限于特定种类的文件格式。图2是用于说明android应用程序包的文件格式的示例图。android应用程序生成为.apk形态的文件,且相应的文件被压缩成zip格式。如图所示,android应用程序包括7个区域。对各个区域的功能说明如下。androidmanifest.xml是以二进制xml文件形态存储驱动android应用程序所需的信息。所述信息包括包名称、应用程序的名称、版本信息、访问权限等。meta-inf区域是存储应用程序的电子签名信息(apksigning)信息等的目录。assets区域是存储相应应用程序中使用的文件或数据的目录。resources.arsc包括相应应用程序中使用的文本或多语言文本信息等。lib区域是存储相应应用程序中使用的第三方或外部库的目录。classes.dex~classesn.dex是相应应用程序的运行文件。在android应用程序包中,classes.dex~classesn.dex文件通过将应用程序的源代码编译为在谷歌的dalvic虚拟机(dalvicvirtualmachine)中能够驱动的dex文件形式而生成。此时,在相应源代码内引用的方法总数为65536个以内的情况下,仅生成classes.dex文件,在超过65536个的情况下,根据引用的方法的数量以诸如classes2.dex,classes3.dex,...,classesn.dex的形式依次生成多个dex文件(此时,n为大于2的自然数)。res是存储相应应用程序中使用的图像或图片等的内容、图标文件等的目录。图3是用于说明根据本发明的一实施例的应用程序转换方法300的流程图。图3中示出的方法例如可以被如下的计算装置12运行,该计算装置12包括:一个以上的处理器以及存储有通过所述一个以上的处理器而运行的一个以上的程序的存储器。在图示的流程图中,将所述方法分为多个步骤而进行了记载,但是至少一部分步骤可以交换顺序而执行,或者与其他步骤结合而一起执行,或者被省略,或者被分为细分的步骤而执行,或者附加未示出的一个以上的步骤而被执行。在步骤302中,计算装置12分解(decompose)原始应用程序包。例如,在所述原始应用程序包为apk文件的情况下,计算装置12解除原始应用程序包的压缩而分解所述apk文件,并据此而能够得到如所述图2中说明的物理目录以及文件。在步骤304中,计算装置12从经分解的所述原始应用程序包提取应用程序运行文件。例如,所述原始应用程序包为apk文件的情况下,提取的应用程序运行文件可以是classes.dex形态的文件。此时,在应用程序包中存在多个dex文件的情况,计算装置12能够提取classes.dex~classesn.dex(此时,n为大于2的自然数)形态的多个应用程序运行文件。在步骤306中,计算装置12将代理类文件添加到经分解的原始应用程序包。图4是用于说明根据本发明的一实施例的代理类文件400的框图。根据本发明的一实施例的代理类文件400作为包括要添加到应用程序的附加功能的程序运行代码,其构成为与应用程序运行文件相同的格式。例如,在所述应用程序运行文件为classes.dex~classesn.dex形式的文件的情况下,所述代理类文件400也可以构成为dex文件形式。计算装置12可以将代理类文件400添加到与所述应用程序运行文件相同的位置。如图4所示,根据本发明的一实施例的代理类文件400可以包括修改类402、应用程序编程接口(api)404、策略信息406。其中,修改类402是用于执行期望添加到应用程序的附加功能的类。修改类402可以构成为代替转换对象应用程序引用(import)的类中的一个以上,或者代替转换对象应用程序所引用的类的超类(superclass)中的一个以上。例如,修改类402可以代替与将数据写入(write)到计算装置12的功能相关的类,从而应用程序并非将数据存储于应用程序目录,而存储于预设的加密的存储器(securestorage)中。并且,在其他示例中,修改类402可以代替与控制计算装置12的相机的功能相关的类。在这种情况下,修改类402可以检测应用程序对相机功能的访问,并掌握当前计算装置12的位置而仅在计算装置12没有位于预设定的安全区域(特定建筑物内部)等的情况下允许访问相机功能。根据本发明的一实施例的代理类文件400可以包括一个以上这种修改类402。应用程序编程接口404是用于控制一个以上的所述修改类402的运行所需的功能的接口。并且,策略信息406是应用程序编程接口404所引用的信息。例如,在应用程序编程接口404执行与计算装置12或利用计算装置12的用户的安全相关的功能的情况下,策略信息406可以是执行相应安全功能所需的安全策略信息。如图所示,策略信息406可以通过网络408从远程的策略服务器410接收和存储,应用程序编程接口404可以包括用于从策略服务器410接收策略信息406并对其进行更新的程序运行代码。另外,在所述步骤306中,计算装置12可以引用所述一个以上的运行文件的文件名和所述应用程序运行文件的文件名生成规则,来变更所述代理类文件的文件名。为了现有的运行文件能够引用所述代理类文件所包括的修改类,android操作系统应能够读取新添加的代理类文件的信息。例如,对于android操作系统而言,使用称为art的运行时(runtime)环境。art从apk文件中识别classesn.dex形式的多个dex文件,将相应文件编译为一个.oat文件以使android设备能够运行相应文件。为此,计算装置12通过适当地转换添加的代理类文件的文件名来在操作系统上识别添加的代理类文件,从而能够与现有的应用程序运行文件一起被读取。可通过apk扫描等的方法来知道原始应用程序包曾包括的应用程序运行文件的文件名。对于android操作系统而言,如前所述,以诸如classes.dex,classes2.dex,classes3.dex,...,classesn.dex的规则(此时,n为大于2的自然数)生成应用程序运行文件。因此,若已存在的应用程序运行文件仅为一个classes.dex,则将添加的代理类文件的文件名可变更为classes2.dex。并且,若已存在的应用程序运行文件为classes.dex~classesn.dex,则将添加的代理类文件的文件名为classes(n+1).dex的形态。再次回到图3,在步骤308中,计算装置12对提取的各个应用程序运行文件进行解析(parsing)。例如,在所述应用程序运行文件为classes.dex~classesn.dex形式的文件的情况下,计算装置12引用dex文件的文件格式对各个文件进行解析。dex文件的格式由google公开并提供,在对其进行解析时,能够掌握相应应用程序的类(class)及方法(method)结构等。在步骤310中,计算装置12将经解析的应用程序运行文件引用的类中的至少一部分代替为代理类文件400内的修改类402。例如,假设经解析的应用程序运行文件引用(import)如下的类。importandroid.app.activity;importandroid.os.bundle;importandroid.widget.textview;计算装置12可将所述类中的android.app.activity及importandroid.widget.textview类分别代替为作为修改类402的android.app.wrapped.activity及android.widget.wrapped.textview。用程序代码表示这种代替如下。importandroid.app.wrapped.activity;importandroid.os.bundle;importandroid.widget.wrapped.textview;在如上所述地,将所述应用程序运行文件引用的类中的至少一部分代替为所述代理类文件400内的修改类402的情况下,能够在最小化应用程序运行文件的代码修改的同时有效地将期望的附加功能添加到应用程序。针对提取的各个应用程序运行文件均执行所述步骤308及步骤310。接下来,在步骤312中,计算装置12再生成经过所述步骤308及所述步骤310而转换的应用程序运行文件。具体而言,计算装置12对通过反映变更的内容而构成的、作为应用程序运行文件的classes.dex~classesn.dex文件进行重建索引(reindexing),来重新生成应用程序运行文件。在步骤314中,计算装置12生成修改应用程序包。例如,在所述原始应用程序包为apk文件的情况下,计算装置12可通过将现有的应用程序运行文件(classes.dex~classesn.dex)代替为在所述步骤312中重新生成的包括dex文件及代理类文件的新应用程序运行文件(classes.dex~classes(n+1).dex),对构成apk文件的文件及目录进行再压缩,而生成所述修改应用程序包。可以利用预定的签名密钥(signingkey)来对生成的所述修改应用程序包进行签名(signing)。在本发明的实施例中,期望添加到应用程序的附加功能并非插入到原始应用程序的应用程序运行文件内,而是以单独的文件(代理类文件)形态添加到应用程序运行文件。并且,现有的应用程序运行文件(classes.dex~classesn.dex)通过修改当前引用参照(import)的类信息中的至少一部分来运行代理类文件所包括的附加功能。在如上所述的构成的情况下,能够向应用程序添加附加功能的同时防止因此而造成现有的应用程序运行文件受到64k引用限制的情形。另外,根据本发明的一实施例的应用程序转换方法300还可以额外地包括改变原始应用程序包的包名称及图标的步骤。改变原始应用程序包的包名称及图标的步骤可以在执行步骤302之后执行,并且可以与上述的步骤304至312并行地执行,或者在执行所述步骤304至312之前和之后执行。首先,对改变原始应用程序包的包名称的步骤说明如下。在步骤316中,计算装置12从在步骤302中分解的所述原始应用程序包提取与所述原始应用程序包的驱动相关的信息文件。例如,在所述原始应用程序包为apk文件的情况下,所述信息文件可以是androidmanifest.xml文件。在步骤318中,计算装置12变更所述信息文件内的所述原始应用程序包的包名称。例如,假设所述信息文件内的应用程序包名称记载为如下。packagecom.abc.emm.main;在这种情况下,计算装置12可以将作为包名称的com.abc.emm.main变更为例如com.abc.wrapped.emm.main。若用程序代码表示这种变更则如下。packagecom.abc.wrapped.emm.main;对于一般计算系统而言,在包名称相同的情况下无法设置。因此,在如本发明的实施例一样,变更经转换的应用程序的包名称的情况下,能够在一个装置内同时使用未转换的应用程序和经转换的应用程序。例如,对于同一个电子邮件应用程序而言,能够区分为将未转换的原始应用程序用于个人用途,而将经转换的应用程序用于业务用途。接下来,变更原始应用程序的图标的步骤的说明如下。在步骤320中,计算装置12从在步骤302中分解的所述原始应用程序包提取所述原始应用程序的图标文件。例如,在所述原始应用程序包为apk文件的情况下,所述图标文件可以存储于res目录。在步骤322中,计算装置12将所述图标文件替换为用于经转换的应用程序的图标文件。此时,所述经转换的应用程序文件可以是将能够识别经转换的应用程序的视觉标记添加到在所述步骤320中提取的图标文件的文件。在如本发明的实施例一样,改变经转换的应用程序的图标的情况下,在一个装置内同时设置未转换的应用程序和经转换的应用程序的环境下,用户可以在视觉上区分各个应用程序。在经过上述过程而改变包名称的信息文件及代替的图标包含于在所述步骤314中重新结合的应用程序包中。另外,本发明的实施例可以包括用于在计算机上运行本说明书中记载的方法的程序和包括所述程序的计算机可读记录介质。所述计算机可读记录介质可以单独地或者组合地包括程序命令、本地数据文件、本地数据结构等。所述介质可以是为本发明而专门地设计并构成的介质,或者可以是在计算机软件领域中通常能够使用的介质。计算机可读记录介质的示例包括:磁介质,诸如硬盘、软盘以及磁带等;光记录介质,诸如cd-rom、dvd等以及,rom、ram、闪存等为了储存并运行程序命令而专门构成的硬件装置。作为程序命令的示例,不仅包括如利用编译器制作的机器语言代码,还可以包括可利用解释器等而由计算机运行的高级语言代码。以上,通过具有代表性的实施例而对本发明进行了详细的说明,然而在本发明所属的
技术领域
:中具有基本知识的人员可以理解上述的实施例可在不脱离本发明的范围的限度内实现多种变形。因此,本发明的权利范围不应局限于上述的实施例,本发明的权利范围需要根据权利要求书的范围以及与该权利要求书的范围均等的范围来确定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1