CN100552628C - 在无线二进制运行环境平台实现动态链接库方法 - Google Patents

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

Info

Publication number
CN100552628C
CN100552628C CNB2005100985451A CN200510098545A CN100552628C CN 100552628 C CN100552628 C CN 100552628C CN B2005100985451 A CNB2005100985451 A CN B2005100985451A CN 200510098545 A CN200510098545 A CN 200510098545A CN 100552628 C CN100552628 C CN 100552628C
Authority
CN
China
Prior art keywords
dynamic link
link library
initialization
handle
brew
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.)
Expired - Fee Related
Application number
CNB2005100985451A
Other languages
English (en)
Other versions
CN1924805A (zh
Inventor
段雪峰
田边
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Maimaibao Information Technology Co., Ltd.
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CNB2005100985451A priority Critical patent/CN100552628C/zh
Publication of CN1924805A publication Critical patent/CN1924805A/zh
Application granted granted Critical
Publication of CN100552628C publication Critical patent/CN100552628C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种在无线二进制运行环境(Brew)平台实现动态链接库的方法,该方法为:生成可执行的高级RISC微处理器应用程序镜像文件格式AIF结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;Brew平台的应用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;应用程序通过动态链接库的句柄使用对应的动态链接库。采用本发明Brew应用程序不仅能够实现复杂功能,而且还能够增强程序的扩展性。

Description

在无线二进制运行环境平台实现动态链接库方法
技术领域
本发明涉及计算机及通信技术领域,尤其涉及在无线二进制环境(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、生成可执行的高级RISC微处理器应用程序镜像文件格式(AdvancedRISC Microprocessor Image Format,AIF)结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;
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、向调用程序返回动态链接库的句柄,该句柄用于调用程序调用(访问)动态链接库。
参阅图5所示,动态链接库中的Init代码执行的流程如下:
步骤200、创建动态链接库的句柄实例。
步骤210、初始化有关的变量和运行动态链接库所需的数据结构。
步骤220、初始化句柄。
由于DLL句柄的数据结构是由用户根据DLL的具体功能而定义,所以句柄初始化就是完成句柄数据结构的赋值,比如输出函数指针、输出对象指针等。
步骤230、返回动态链接库句柄。
在上述步骤210中,初始化动态链接库所需的数据结构包括:
(1)初始化IShell指针;该指针是Brew的标准指针,用于访问IShell接口函数和访问BREW的全局系统服务。
(2)初始化IDisplay指针;该指针是Brew的标准指针,用于访问IDisplay接口函数和用于屏幕输出操作。
(3)初始化由外部分配的消息通讯标识(ID);该ID由调用程序在初始化DLL之前为其分配,在初始化时传递给DLL。
(4)初始化可操作的目录路径。该目录由调用程序在初始化DLL之前为DLL分配。
动态链接库的句柄所包含的信息是与该动态库的具体功能相关的,不同的动态库句柄内容可能不相同,但应包含以下的基本信息:
A、消息处理函数,用于调用程序与动态链接库之间的消息通讯。
B、反初始化函数,用户调用程序卸载该动态链接库时,对动态库中使用到的资源作必要的释放,如关闭文件、释放内存等,具体执行的操作和释放的资源与动态库的具体功能相关。
C、用户自定义的其他与功能相关的数据结构,比如输出函数地址、输出对象地址等。
在完成动态链接库的加载后,调用程序即可使用动态链接库,使用方式包括直接函数调用和消息驱动,如图6所示。这两种方式可以独立使用,但更多的是结合起来一起使用。
(1)直接函数调用
动态链接库将其提供的函数地址通过句柄输出,调用者可以直接调用这些输出函数。因此,直接函数调用的方式使用较为简单。
(2)消息驱动
动态链接库只输出消息处理函数接口,所有的功能处理均通过调用程序发送的消息来触发。消息驱动方式使用比较灵活,能实现更为强大的功能,如输出应用程序的入口地址等。
参阅图7所示,消息驱动方式包含三种消息传递方式:
(1)调用程序发往动态链接库的消息。由调用程序直接调用动态链接库的消息处理函数,将消息传递给动态链接库。
(2)动态链接库发往调用程序的消息。由动态链接库将消息发往Brew消息队列,指明接收者标识为调用程序,然后由Brew消息队列派发至调用程序。
(3)动态链接库发往自身的消息(因为DLL中有些功能的实现是异步过程,这个过程需要通过消息通知实现。发往自身的消息,是为了完成DLL内部的异步操作)。由动态链接库将消息发往Brew消息队列,然后由Brew消息队列派发至调用程序,最后由调用程序再派发至相应的动态链接库。
如图8所示,对于一个应用程序而言,可以加载多个动态链接库,各个动态链接库之间模块相互独立,应用程序可以直接使用动态链接库输出的功能。使用动态链接库功能的方式包括:
(1)使用动态链接库输出的函数。动态链接库可以输出函数指针,调用程序可以通过函数指针使用动态链接库输出的功能。
(2)使用动态链接库输出的对象实例。动态链接库可以输出对象实例指针,调用程序可以通过该指针使用动态链接库输出的功能。
(3)应用程序作为执行平台使用动态链接库。动态链接库可以输出一个应用程序入口地址,在这种情况下,调用程序作为应用程序运行平台存在,为动态链接库输出的应用程序提供所需的运行环境,并对其进行调度。
应用程序加载并使用动态链接库的功能后,根据需要可以通过调用卸载函数卸载该动态链接库。卸载动态链接库的过程基本上与加载动态链接库的过程相反,如图9所示,其主要流程如下:
步骤300、停止动态链接库的执行。如果该动态链接库的某些功能代码正在执行,则停止该代码的执行。
步骤310、反初始化动态链接库。
反初始化主要目的是释放动态链接库用到的资源,如内存、文件、对象等,具体操作和释放的资源与动态链接库的功能实现相关。因为在加载动态链接库时,创建的句柄中保存了动态链接库的反初始化函数指针,所以,此时可以直接调用该反初始化函数,释放有关资源。
步骤320、释放调用程序为动态链接库分配的内存空间。至此DLL的卸载过程完成。
从上可知,使用动态链接库构建的Brew应用程序,其各个功能模块之间相对独立,如果程序的某个模块功能发生变化,或者增加了新的功能模块,只需通过网络下载新的动态链接库进行更新即可实现对Brew应用程序的动态升级。
参阅图10A所示,通过网络对Brew应用程序进行升级的过程如下:
步骤400、Brew应用程序通过CDMA 1X网络与位于互联网上的服务器建立IP连接,该服务器上保存有按前述的格式生成的新的动态链接库文件,如图10B所示。
步骤410、从服务器下载需要更新的动态链接库文件。
步骤420、Brew应用程序成功下载新的动态链接库文件后,卸载要替换的动态链接库文件。
步骤430、Brew应用程序加载新的动态链接库文件,执行新的DLL功能完成Brew应用程序升级,如图10C所示。
本发明通过在Brew平台上实现动态链接库,Brew应用程序可以调用动态链接库输出的函数或者应用程序入口地址,从而可改变目前Brew的单人小规模的开发方式,便于程序的模块化开发和管理,增强程序的扩展性;采用本发明还能够很容易地实现Brew程序的在线升级。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1、一种在无线二进制运行环境Brew平台实现动态链接库的方法,其特征在于,包括如下步骤:
A、生成可执行的高级RISC微处理器应用程序镜像文件格式AIF结构的动态链接库文件,其中所述动态链接库文件中包含有用于初始化动态链接库的初始化代码;
B、Brew平台的调用程序加载所述动态链接库文件,并在该加载过程中通过执行所述初始化代码得到该动态链接库的句柄;
C、调用程序通过动态链接库的句柄调用加载的动态链接库。
2、如权利要求1所述的方法,其特征在于,所述初始化代码位于所述动态链接库文件的可执行代码段。
3、如权利要求1所述的方法,其特征在于,步骤B具体包括如下步骤:
B1、分配内存空间,并将动态链接库读入该内存空间;
B2、初始化所述内存空间,使该内存空间分为只读数据段和执行代码段;
B3、执行初始化代码初始化动态链接库和向调用程序返回动态链接库的句柄。
4、如权利要求3所述的方法,其特征在于,步骤B3具体包括如下步骤:
B31、创建动态链接库的句柄实例;
B32、初始化相关的变量和运行动态链接库所需的数据结构;
B33、初始化动态链接库的句柄并返回给调用程序。
5、如权利要求4所述的方法,其特征在于,初始化运行动态链接库所需的数据结构包括:
初始化系统内核调用编程接口Shell指针和系统图形显示编程接口IDisplay指针;
初始化由外部分配的消息通信标识和可操作的目录路径。
6、如权利要求1至5任一项所述的方法,其特征在于,所述动态链接库的句柄包括消息处理函数、反初始化函数及与功能相关的数据结构。
7、如权利要求6所述的方法,其特征在于,该方法还包括调用程序卸载所述动态链接库。
8、如权利要求7所述的方法,其特征在于,卸载动态链接库包括如下步骤:
停止动态链接库中正在执行的功能代码;
执行反初始化函数释放动态链接库使用的相关资源;
释放为动态链接库分配的内在空间。
9、如权利要求1所述的方法,其特征在于,在步骤C中,调用程序通过直接调用句柄中的函数使用所述动态链接库;或者,调用程序通过句柄中的消息处理函数接口,利用消息驱动方式使用所述动态链接库。
10、如权利要求1所述的方法,其特征在于,在步骤B之前还包括步骤:
B1、Brew平台中的应用程序通过网络与服务器建立连接并从服务器下载所述动态链接库文件。
11、如权利要求10所述的方法,其特征在于,步骤B1中还利用下载的动态链接库文件替换需要更新的动态链接库文件。
CNB2005100985451A 2005-09-02 2005-09-02 在无线二进制运行环境平台实现动态链接库方法 Expired - Fee Related CN100552628C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100985451A CN100552628C (zh) 2005-09-02 2005-09-02 在无线二进制运行环境平台实现动态链接库方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100985451A CN100552628C (zh) 2005-09-02 2005-09-02 在无线二进制运行环境平台实现动态链接库方法

Publications (2)

Publication Number Publication Date
CN1924805A CN1924805A (zh) 2007-03-07
CN100552628C true CN100552628C (zh) 2009-10-21

Family

ID=37817460

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100985451A Expired - Fee Related CN100552628C (zh) 2005-09-02 2005-09-02 在无线二进制运行环境平台实现动态链接库方法

Country Status (1)

Country Link
CN (1) CN100552628C (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101309437B (zh) * 2007-05-17 2011-06-22 中兴通讯股份有限公司 单向文件传输方法及接口配置装置
CN101661397B (zh) * 2008-08-29 2012-09-12 宇龙计算机通信科技(深圳)有限公司 实现程序动态加载的方法和生成映射文件的方法及设备
CN101702130B (zh) * 2009-11-12 2012-12-26 深圳市五巨科技有限公司 一种移动终端加载共享函数库的方法和装置
CN101916203B (zh) * 2010-08-18 2012-12-26 优视科技有限公司 服务于移动通讯的终端软件平台的编译方法及系统
CN102073520A (zh) * 2010-12-30 2011-05-25 中国民航信息网络股份有限公司 一种c++应用程序版本动态管理系统和方法
CN105094878B (zh) * 2014-05-22 2019-02-22 阿里巴巴集团控股有限公司 一种集成系统库文件的方法和装置
CN105653961B (zh) * 2015-12-31 2019-07-23 北京元心科技有限公司 一种提高移动终端应用加载安全性的方法和装置
CN108170491B (zh) * 2017-12-26 2022-01-28 五八有限公司 App动态链接库的配置方法、终端及计算机可读存储介质
CN108427571A (zh) * 2018-02-07 2018-08-21 深圳市雁联计算系统有限公司 一种动态链接库更新方法及服务器
CN108845813A (zh) * 2018-06-14 2018-11-20 郑州云海信息技术有限公司 一种应用程序热更新方法
CN109032605B (zh) * 2018-07-05 2022-09-20 北京奇艺世纪科技有限公司 一种应用运行方法和装置
CN109800546A (zh) * 2019-01-03 2019-05-24 深圳联友科技有限公司 一种防动态链接库被反编译的方法、装置及系统
CN112631684B (zh) * 2020-12-30 2021-08-06 北京元心科技有限公司 可执行程序的运行方法、装置、电子设备及计算机存储介质
CN115794260B (zh) * 2023-02-06 2023-05-05 湖南高至科技有限公司 一种简单的dsp软件库动态加载方法

Also Published As

Publication number Publication date
CN1924805A (zh) 2007-03-07

Similar Documents

Publication Publication Date Title
CN100552628C (zh) 在无线二进制运行环境平台实现动态链接库方法
KR100940179B1 (ko) 무선 통신 장치 소프트웨어 코드 섹션의 현장 다운로드시스템 및 방법
US7810105B2 (en) Method and apparatus for running different types of applications on a wireless mobile device
US7127709B2 (en) System and method for jointly managing dynamically generated code and data
US6295645B1 (en) Method and apparatus for providing downloadable functionality to an embedded coprocessor
CN100498703C (zh) 以存储技术抽象方式在文件内创建文件系统
CA2768752C (en) Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform
US20040194081A1 (en) Update system for facilitating firmware/software update in a mobile handset
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
CN101026826B (zh) 用于提供在无线装置中使用的整体映像的系统和方法
CN102411506A (zh) Java系统业务单元插件式管理系统及业务功能动态变更方法
US7941790B2 (en) Data processing apparatus, system and method
US8943486B2 (en) Multiple instruction execution mode resource-constrained device
CN104750528A (zh) 一种Android程序中的组件管理方法和装置
US7669197B1 (en) Embedded system employing component architecture platform
US20050204351A1 (en) Dynamic addressing (DA) using a centralized DA Manager
WO2018032653A1 (zh) 一种Java卡应用的功能实现方法及装置
CN106598647A (zh) 一种智能装置开发平台
US8489860B1 (en) Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device
US7350193B2 (en) Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
US7096467B2 (en) Initialization of Java classes in Java virtual machine environments
US20040025009A1 (en) Method and apparatus for acceleration of multimedia content
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
KR101083090B1 (ko) 기능별로 모듈화된 구조로 이루어진 모바일 플랫폼이 탑재된 이동통신단말, 그 모바일 플랫폼의 동작 방법 및 대기화면 어플리케이션 관리 방법
KR100444945B1 (ko) 이동단말기를 위한 효율적인 이동데이터 관리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: WUXI MAIMAIBAO INFORMATION TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: TENGXUN SCI-TECH (SHENZHEN) CO., LTD.

Effective date: 20130301

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518044 SHENZHEN, GUANGDONG PROVINCE TO: 214135 WUXI, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130301

Address after: 214135 Jiangsu Province, Wuxi City District Zhenze Wuxi Road No. 18 (home) Lion Garden A block 4 layer software

Patentee after: Wuxi Maimaibao Information Technology Co., Ltd.

Address before: 2, 518044, East 410 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091021

Termination date: 20180902

CF01 Termination of patent right due to non-payment of annual fee