在无线二进制运行环境平台实现动态链接库方法技术

技术编号:2844650 阅读:292 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种在无线二进制运行环境(Brew)平台实现动态链接库的方法,该方法为:生成可执行的AIF结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;Brew平台的应用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;应用程序通过动态链接库的句柄使用对应的动态链接库。采用本发明专利技术Brew应用程序不仅能够实现复杂功能,而且还能够增强程序的扩展性。

【技术实现步骤摘要】

本专利技术涉及计算机及通信
,尤其涉及在无线二进制环境(Brew)平台实现动态链接库的方法。
技术介绍
Brew是由美国高通公司针对其CDMA手机芯片提供的一个无线应用程序运行环境,Brew不是一个操作系统,而是一个用于访问手机软件和硬件资源的API集合。Brew平台为应用程序提供了一系列的应用程序接口(API),通过Brew应用程序过这些API,可以访问、使用手机的硬件和软件资源。Brew应用程序运行与支持Brew接口的CDMA手机上,一般是以独立的小应用程序的形式存在,没有类似PC上的动态链接库的概念和实现方法。这样就决定了在Brew平台上开发的应用程序一般规模较小、扩展性和模块化较差,无法实现程序的动态升级。Brew提供了扩展类(Extension Class)方式实现函数输出的功能。该方法实现时与编写正常的Brew应用程序相同,其它的Brew程序可以直接调用扩展类输出的函数。支持Brew的手机可以通过CDMA 1X网络无线下载并运行Brew程序。目前,Brew应用发展十分迅速,用户可以实现下载游戏、应用软件、GPS定位、无线购物等几十种数据服务。由于受限于Brew的开发模式,Brew应用程序大部分应用是单一功能的小软件,没有比较复杂的应用出现;虽然Brew扩展类提供了函数输出的功能,但是它功能单一,只能提供简单的函数输出,无法实现复杂的模块功能和交互,而且也无法实现动态的模块升级更新。
技术实现思路
本专利技术提供一种在无线二进制环境(Brew)平台实现动态链接库的方法,以解决现有Brew平台中存在应用程序功能单一、扩展性和模块化较差的问题。本专利技术进一步解决现有Brew平台中无法实现应用程序动态升级的问题。本专利技术提供以下技术方案一种在无线二进制运行环境(Brew)平台实现动态链接库的方法,包括如下步骤A、生成可执行的AIF(Arm Image Format)结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;B、Brew平台的调用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;C、调用程序通过动态链接库的句柄调用加载的动态链接库。根据上述方法所述初始化代码位于所述动态链接库文件的可执行代码段。步骤B具体包括如下步骤B1、分配内存空间,并将动态链接库读入该内存空间;B2、初始化所述内存空间,使该内存空间分为只读数据段和执行代码段;B3、执行初始化代码初始化动态链接库和向调用程序返回动态链接库的句柄。步骤B3具体包括如下步骤B31、创建动态链接库的句柄实例;B32、初始化相关的变量和运行动态链接库所需的数据结构;B33、初始化动态链接库的句柄并返回给调用程序。所述动态链接库的句柄包括消息处理函数、反初始化函数及与功能相关的数据结构。该方法还包括所述调用程序卸载所述动态链接库。卸载动态链接库包括如下步骤停止动态链接库中正在执行的功能代码;执行反初始化函数释放动态链接库使用的相关资源;释放为动态链接库分配的内在空间。在步骤B之前还包括步骤B1、Brew平台中的应用程序通过网络与服务器建立连接并从服务器下载所述动态链接库文件。步骤B1中还利用下载的动态链接库文件替换需要更新的动态链接库文件。本专利技术有益效果如下1、采用本专利技术,Brew平台上的动态链接库输出的函数或者应用程序地址可以被其他的程序调用,因此,Brew平台上的应用程序可以通过调用不同功能的动态链接库实现复杂功能,同时也能够增强程序的扩展性。2、根据需要还可以通过下载动态链接库替换原来的动态链接库实现Brew程序的在线升级。3、利用本专利技术可改变目前Brew的单人小规模的开发方式,便于程序的模块化开发和管理。附图说明图1为现有技术中Brew执行文件的结构示意图;图2为本专利技术的动态链接库的文件结构示意图;图3为本专利技术中加载动态链接库的流程图;图4为本专利技术中初始化完成后动态链接库的内存分布示意图;图5为本专利技术中动态链接库中的执行初始化代码的流程图;图6为本专利技术中直接函数调用和消息驱动使用动态链接库的示意图;图7为本专利技术中消息驱动方式的示意图; 图8为本专利技术中Brew调用程序加载多个动态链接库的示意图;图9为本专利技术中卸载动态链接库的流程图;图10A为本专利技术中通过网络对Brew应用程序进行升级的流程图;图10B为本专利技术中Brew应用程序与服务器通信的示意图;图10C为本专利技术中Brew应用程序加载新的动态链接库的示意图。具体实施例方式无线二进制运行环境(Brew)手机一般采用ARM7或ARM9作为处理器,在该处理器上运行的应用程序二进制执行文件(MOD文件)为可执行的AIF(Executable AIF(Arm Image Format))结构,Executable AIF文件的第一个字节就是执行代码。根据编译器的不同,编译生成的MOD文件结构略有不同,但均包含初始化代码、执行代码、只读数据区三个基本部分。Brew执行文件的结构如图1所示,其中Header段是程序的入口代码,用于初始化应用程序MOD的地址偏移,完成必要的初始化后,转跳至Text段;Text段是应用程序的执行代码;Rodata段是应用程序的只读数据段,用于存放字符串等常量。Brew将MOD文件加载到内存固定位置,直接从Header开始应用程序的执行。本专利技术利用Executable AIF(Arm Image Format)结构的特点,在Header段和Text段之间增加初始化(Init)代码段来实现动态链接库(DLL),如图2所示。Init代码段位于动态链接库本身的二进制执行代码中,通过与外部的加载程序配合对动态链接库作初始化和生成使用动态链接库的句柄。具有Init代码段的AIF(Arm Image Format)结构的源程序经过正常的Brew编译流程后,便生成Executable AIF结构的动态链接库,该动态链接库还不能直接被调用程序使用,必须通过Brew平台上的应用程序加载后才可被正常使用。动态链接库向调用程序提供两个接口函数,分别用于加载和卸载动态链接库。参阅图3所示,Brew平台上的调用程序加载动态链接库的过程如下步骤100、调用程序为待加载的动态链接库分配内存区。步骤110、将动态链接库文件读入分配的内存区。动态链接库的内存装入地址就是该DLL运行的基地址。步骤120、初始化动态链接库的内存空间。初始化后的动态链接库的内存空间分为只读数据段和执行代码段两部分,其中,只读数据段用于保存由外部为该动态链接库指定的信息,比如操作路径等,在执行代码段的程序只可读取该数据段中的数据,而不能修改。初始化完成后动态链接库的内存分布如图4所示。步骤130、执行Header代码和执行动态链接库中的Init代码,完成动态链接库的初始化和生成动态链接库的句柄。在Header代码完成后自动调用Init代码。由于动态链接库二进制代码文件为Executable AIF结构,所以入口代码即为可执行代码,因此,完成内存空间初始化后,应用程序直接转跳至动态链接库入口开始执行Header代码,在Header代码完成后自动调用Init代码。步骤140、向调用程序返回动态链接库的句柄,该句柄用于调用程序调用(访问)动态链接库。参阅图本文档来自技高网...

【技术保护点】
一种在无线二进制运行环境(Brew)平台实现动态链接库的方法,其特征在于,包括如下步骤:A、生成可执行的AIF(ArmImageFormat)结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代 码;B、Brew平台的调用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;C、调用程序通过动态链接库的句柄调用加载的动态链接库。

【技术特征摘要】
1.一种在无线二进制运行环境(Brew)平台实现动态链接库的方法,其特征在于,包括如下步骤A、生成可执行的AIF(Arm Image Format)结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;B、Brew平台的调用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;C、调用程序通过动态链接库的句柄调用加载的动态链接库。2.如权利要求1所述的方法,其特征在于,所述初始化代码位于所述动态链接库文件的可执行代码段。3.如权利要求1所述的方法,其特征在于,步骤B具体包括如下步骤B1、分配内存空间,并将动态链接库读入该内存空间;B2、初始化所述内存空间,使该内存空间分为只读数据段和执行代码段;B3、执行初始化代码初始化动态链接库和向调用程序返回动态链接库的句柄。4.如权利要求3所述的方法,其特征在于,步骤B3具体包括如下步骤B31、创建动态链接库的句柄实例;B32、初始化相关的变量和运行动态链接库所需的数据结构;B33、初始化动态链接库的句柄并返回给调用程序。5.如权利要求4所述的方法,其...

【专利技术属性】
技术研发人员:段雪峰田边
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1