用于编译的方法、装置和系统的制作方法

文档序号:6596695阅读:117来源:国知局
专利名称:用于编译的方法、装置和系统的制作方法
用于编译的方法、装置和系统
背景技术
当前的嵌入式设备可能具有数以百兆字节的存储器以及快速处理器,以及图形、图像和视频捕捉和声音处理器以及课程通信的各种能力。开发用于这种设备的软件可能是高要求的任务,即使是在好的开发工具的帮助下。因此,存在使开发用于通用的计算设备的软件更加容易和快速的解决方案的需要。

发明内容
现在,已经发明了ー种实现所述方法的改进方法和技术装备,通过所述改进方法和技术设备能够减缓上述问题。本发明的各种方面包括ー种方法、装置、服务器、客户端和包括其中存储的计算机程序的计算机可读介质,其特征在于独立权利要求中所陈述的内容。在从属权利要求中公开了各种实施方式。将与ニ进制程序的目标平台相关的信息提供给服务器,使得可以适当地发生编译且可以创建正确的目标ニ进制。服务器可以提供在用户创建源代码时所使用的模板。将伴随的目标平台信息用户选择正确的编译环境,并且当将源代码发送到用于编译的服务器吋,为正确的目标平台产生ニ进制。可以测试ニ进制代码,以及可以创建安装包。按这种方式,用户可以避免开发环境的至少ー些组件的安装,其可以容易地开始且执行用于特定目标平台的开发。根据第一方面,提供一种用于形成ニ进制计算机程序的方法,包括在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部,在所述编译器装置处在第二通信接口上访问源代码,基于目标平台信息确定编译环境,使用编译环境,从源代码形成用于目标平台的ニ进制计算机程序,以及提供在第三通信接口上可使用的用于目标平台的ニ进制计算机程序。根据ー个实施方式,所述方法包括基于目标平台信息,提供在第二通信接ロ上可使用的源代码模板。根据ー个实施方式,所述方法包括使用ニ进制计算机程序,形成用于目标平台的安装包,使用目标平台信息对安装包进行签名,以及提供在第三通信接口上可使用的签名的安装包。根据ー个实施方式,所述方法包括基于用于测试ニ进制计算机程序的目标平台信息确定测试环境,测试用于组中的至少ー个的正确操作的ニ进制计算机程序,所述组包括安装、启动、输入和输出以及用户接ロ操作。根据ー个实施方式,所述方法包括将在通信接口上至少部分可使用的测试环境提供给开发者计算机,使得测试环境从开发者计算机接收输入并且将输出提供给开发者计算机。根据ー个实施方式,所述编译环境包括组中的至少ー个,所述组包括虚拟机、物理机、编译器安装和编译器设置。根据ー个实施方式,所述方法包括第一通信接ロ是编译器装置和开发者计算机(例如个人计算机或移动电话)之间的接ロ,第二通信接ロ是编译器装置和源代码存储装置(例如,网络存储设备、内部 存储器设备、外部存储器设备或开发者计算机)之间的接ロ,以及第三通信接ロ是编译器装置之间的接ロ。根据ー个实施方式,第一通信接口和第二通信接ロ是编译器装置和开发计算机处的开发环境之间的接ロ,以及开发环境通过将源代码文件从开发者计算机传送到编译器装置,将源代码提供给编译器装置。根据第二方面,提供ー种装置,包括至少ー个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述装置进行在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部,在所述编译器装置处在第二通信接口上访问源代码,基于平台信息确定编译环境,使用编译环境,从源代码形成用于目标平台的ニ进制计算机程序,以及提供在第三通信接ロ上可使用的用于目标平台的ニ进制计算机程序。根据ー个实施方式,所述装置包括计算机程序代码,被配置为利用处理器促使所 述装置基于目标平台信息,提供在第二通信接口上可使用的源代码模板。根据ー个实施方式,所述装置包括计算机程序代码,被配置为利用处理器促使所述装置使用ニ进制计算机程序,形成用于目标平台的安装包,使用目标平台信息对安装包进行签名,以及提供在第三通信接ロ上可使用的签名的安装包。根据ー个实施方式,所述装置包括计算机程序代码,被配置为利用处理器促使所述装置基于用于测试ニ进制计算机程序的目标平台信息,确定测试环境,以及测试用于组中的至少ー个的正确操作的ニ进制计算机程序,所述组包括安装、启动、输入和输出以及用户接ロ操作。根据ー个实施方式,所述装置包括计算机程序代码,被配置为利用处理器促使所述装置将在通信接口上至少部分可使用的测试环境提供给开发者计算机,使得测试环境从开发者计算机接收输入并且将输出提供给开发者计算机。根据ー个实施方式,其中所述编译环境包括组中的至少ー个,所述组包括虚拟机、物理机、编译器安装和编译器设置。根据ー个实施方式,第一通信接ロ是编译器装置和开发者计算机(例如,个人计算机或移动电话)之间的接ロ,第二通信接ロ是编译器装置和源代码存储装置(例如,网络存储器设备、内部存储器设备、外部存储器设备或开发者计算机)之间的接ロ,以及第三通信接ロ是编译器装置之间的接ロ。根据ー个实施方式,第一通信接口和第二通信接ロ是编译器装置和开发计算机处的开发环境之间的接ロ,并且编译器装置被配置为通过接收从开发者计算机到编译器装置的源代码文件,从开发者环境接收源代码。根据第三方面,提供一种系统,包括至少ー个计算机,所述计算机包括至少ー个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述系统在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部,在所述编译器装置处在第二通信接口上访问源代码,基于平台信息确定编译环境,使用编译环境,从源代码形成用于目标平台的ニ进制计算机程序,以及提供在第三通信接ロ上可使用的用于目标平台的ニ进制计算机程序。根据ー个实施方式,系统包括计算机程序代码,被配置为利用处理器促使所述系统基于目标平台信息,提供在编译器装置处第二通信接口上可使用的源代码模板。根据ー个实施方式,系统包括计算机程序代码,被配置为利用处理器促使所述系统使用ニ进制计算机程序,形成用于目标平台的安装包,使用目标平台信息对安装包进行签名,以及提供在编译器装置处第三通信接口上可使用的签名的安装包。根据ー个实施方式,系统包括计算机程序代码,被配置为利用处理器促使所述系统基于用于在测试装置处测试ニ进制计算机程序的目标平台信息,确定测试环境,以及测试用于组中的至少ー个的正确操作的ニ进制计算机程序,所述组包括安装、启动、输入和输出以及用户接ロ操作,其中所述测试装置可操作地连接到具有由目标平台信息所确定的操作系统的设备。根据第四方面,提供ー种装置,包括至少ー个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述装置提供可用于第一通信接口上的编译器装置的目标平台信息,目标平台在所述编译器装置的外部,接收源代码模块,基于目标平台信息已经形成所述面板,使用源代码模块来形成源代码,并且在通信接口上提供可用于编译器装置的源代码,以及接收从源代码形成的用于目标平台的ニ进制计算机程序,通过基于目标平台信息确定目标平台,已经形成ニ进制计算机程序。根据第五方面,提供ー种装置,包括用于在第一通信接口上访问目标平台信息的部件,所述目标平台在所述装置的外部,用于在第二通信接口上访问源代码的部件,用于基于平台信息确定编译环境的部件,用于使用编译环境,从源代码形成用于目标平台的ニ进制计算机程序的部件,以及用于提供在第三通信接口上可使用的用于目标平台的ニ进制计 算机程序的部件。根据第六方面,提供ー种网络服务,为用户至少提供以下内容在编译器装置的第一通信接ロ处上传目标平台信息,所述目标平台在所述编译器装置的外部,在所述编译器装置的第二通信接ロ处上传源代码,基于平台信息确定编译环境,使用编译环境,从源代码形成用于目标平台的ニ进制计算机程序,以及提供在第三通信接ロ上可使用的用于目标平台的ニ进制计算机程序。根据第七方面,提供一种在计算机可读介质上存储且在数据处理设备中可执行的计算机程序产品,其中所述计算机程序产品包括用于在编译器装置处在第一通信接口上访问目标平台信息的计算机程序代码部分,所述目标平台在所述编译器装置的外部,用于在所述编译器装置处在第二通信接口上访问源代码的计算机程序代码部分,用于基于所述平台信息确定编译环境的计算机程序代码部分,用于使用所述编译环境,从所述源代码形成用于所述目标平台的ニ进制计算机程序的计算机程序代码部分,以及用于提供在第三通信接ロ上可使用的用于目标平台的ニ进制计算机程序的计算机程序代码部分。根据第八方面,提供一种在计算机可读介质上存储且在数据处理设备中可执行的计算机程序产品,其中所述计算机程序产品包括用于在第一通信接ロ上提供用于编译器装置的目标平台信息的计算机程序代码部分,所述目标平台在所述编译器装置的外部,用于接收源代码模板的计算机程序代码部分,基于所述目标平台信息已经形成所述模板,用于使用源代码模板形成源代码并且在通信接口上提供可用于编译器装置的源代码的计算机程序代码部分,用于接收从源代码形成的用于目标平台的ニ进制计算机程序,通过基于目标平台信息确定目标平台,已经形成ニ进制计算机程序的计算机程序代码部分。


下面,通过參照附图将更为详细地介绍本发明的各种实施方式,其中图Ia示出了根据示例实施方式的用于编译的方法的流程图;图Ib示出了根据示例实施方式的用于编译的安排;图2a示出了根据示例实施方式的用于开发、编译和测试计算机程序的系统;图2b示出了根据示例实施方式的用于开发、编译和测试计算机程序的设备;
图3a和3b示出了根据示例实施方式的编译环境;图4示出了根据示例实施方式的用于开发、编译和测试计算机程序的信令和操作示意图;图5示出了根据示例实施方式的用于开发、编译和测试计算机程序的流程图;图6a示出了根据示例实施方式的用于测试计算机程序的测试安排;图6b示出了根据示例实施方式的用于测试计算机程序的流程图;图7a和7b示出了根据示例实施方式的开发环境;图8a示出了根据示例实施方式的ニ进制程序的结构;以及图8b示出了根据示例实施方式的安装包的结构。
具体实施例方式下面,将以驻留在开发者计算机的远程位置处的编译器的上下文来介绍本发明的几个实施方式。然而,注意的是,本发明并不限于编译服务器。实际上,不同的实施方式具有在广泛地任意环境中的应用,其中要求数据或代码的平台专用处理以及平台专用数据或ニ进制代码的创建。图Ia示出了根据示例实施方式的用于编译软件代码的方法的流程图。在110,接收关于目标平台的信息。目标平台可以包括例如,开发所述软件的设备的操作系统和操作系统版本,以及所述设备的能力和设置,例如屏幕分辨率、音频和视频能力、指令集以及识别诸如设备标识符或订户标识符的数据的可能性。在120,接收要被编译的源代码。源代码可以完成且准备好用于编译,或其可以仅包括源代码的基本部分,且可以从编译器设备的内部存储器或从另ー个源取回剰余部分。在130,基于目标平台,确定合适的编译器环境。这种编译器环境具有按下述方式建立的编译器,其产生用于目标平台的ニ进制代码,并且具有例如所有可使用的必要库。在140,例如将源代码编译为ニ进制代码,将至少部分是人类可读的源代码编译为目标平台的处理器可以使用的格式,例如是计算机可执行的。术语“ニ进制代码”不应理解为被限制为人类不可读的代码,而仅是选择以指示通过源代码来形成的且计算机处理器可使用的任意代码。然后,在150,传递ニ进制代码以在目标平台处使用,例如,返回到源代码的发送者。图Ib示出了根据示例实施方式的用于编译的安排。开发者使用用于开发程序的计算机170。开发者还可以具有用于开发程序的设备175 (目标设备),或组装设备。设备175可以附着到计算机170。还具有编译服务器180,网络且被可通信地连接到开发者计算机170。编译服务器180包括至少ー些用于将来自计算机170的源代码编译成ニ进制代码195的部件。ニ进制代码195可以被回送到计算机170,或例如,通过将其存储在网络且提供存储ニ进制代码的位置的链接,其可以由用户通过其它部件来使用。图2a示出了根据示例实施方式的用于开发、编译和测试计算机程序的系统。通过以下网络来连接不同的设备固定网络210,例如因特网或局域网;或移动通信网络220,例如全球移动通信系统(GSM)网络、第三代(3G)网络、第3. 5代(3. 5G)网络、第4代(4G)网络、无线局域网(WLAN)、蓝牙 、或其它现代和未来的网络。通过通信接ロ 280,将不同的网络彼此连接。网络包括网络元件,例如处理数据的路由器和交換机(未示出)、以及通信接ロ,例如用于提供不同设备对网络的访问的基站230和231,以及基站230、231,它们自身经由固定连接276或无线连接277连接到移动网络220。存在多个连接到网络的服务器,并且此处示出了用于编译源代码且连接到固定网络210的服务器240、用于存储程序数据和/或源代码且连接到固定网络210和移动网络220的服务器241、以及用于编译源代码且连接到移动网络220的服务器242。还存在多个连接到网络210和/或220的计算设备290,其用于存储数据且经由例如web服务器接ロ或数据存储接ロ等提供对数据的访问,以及用于访问其他设备。上述设备中的ー些,例如,计算机240、241、242、290可以是这样的,它们组成具有驻留在固定网络210内的通信元件的因特网。一些计算设备可以通过固定连接(例如,通用串行总线(USB))、火线或串行或并行连接、光学连接或任意其它类型的连接提供对测试设备291的访问,或通过诸如无线局域网(WLAN)连接或蓝牙龙连接提供对测试设备294的访问。还存在多个最终用户设备,例如各种尺寸和格式的移动电话和智能电话251、因特网接入设备(因特网平板)250和个人计算机260。这些设备250、251和260还可以由多个部分组成。各种设备经由通信连接连接到网络210和220,所述通信连接例如是到因特网的 固定连接270、271、272和280、到因特网210的无线连接273、到移动网络220的固定连接275、以及到移动网络220的无线连接278、279和282。通过在通信连接的各个端处的通信接ロ来实现连接271-282。图2b示出了根据示例实施方式的用于开发、编译和测试计算机程序的设备。如图2b所示,服务器240包含存储器245、一个或多个处理器246、247以及驻留在存储器245中用于实现例如编译器功能的计算机程序代码248。不同的服务器241、242、290可以包含用于使用与每个服务器相关的功能的至少这些相同的元件。相似地,終端用户设备251包含存储器252、至少ー个处理器253和256、以及驻留在存储器2252中用于实现例如编译器功能的计算机程序代码254。終端用户设备还可具有用于拍摄照片的至少ー个照相机255。终端用户设备还可包含用于捕获声音的ー个、两个或多个麦克风257和258。不同的終端用户设备250、260可以包含用于使用与每个设备相关的功能的至少这些相同的元件。一些终端用户设备可配备有能够获取数字图片的数字照相机,以及能够在获取图片期间、之前或之后进行音频记录的ー个或多个麦克风。需要理解的是,不同的实施方式允许在不同的元件中执行不同的部分。例如,可以在诸如250、251或260的一个用户设备上完全执行编译,或者可以ー个服务器240、241、242或290中完全执行编译,或者可以在多个用户设备250、251、260之间或在多个网络设备240、241、242、290之间,或者在用户设备250、251、260和网络设备240、241、242、290之间执行编译。可以将编译实现为在ー个设备上驻留的或在如上所述的多个设备之间分布的软件组件,例如使得来自被称为云的设备。编译还可以是用户通过接ロ例如使用浏览器访问编译服务的服务。图3a和3b示出了根据示例实施方式的编译环境。在图3a中,编译系统300驻留在单个计算机(服务器)上,或其可以驻留在形成单个服务器实体的计算机集群上。服务器可以包括虚拟机310、312和314,每个虚拟机是其自己的、在物理计算机顶部或计算机集群上的服务器安装。虚拟服务器可以容纳不同的操作系统,例如服务器310可以具有微软Windows 操作系統,服务器312可以具有Apple OSX 操作系統,且服务器314可以具有Linux操作系统。
虚拟机和物理服务器机器每个均可以具有编译环境的安装,例如虚拟服务器310中的编译环境320到329、虚拟服务器312中的编译环境330到339以及虚拟服务器314中的编译环境340到349。将编译环境安排为能够创建用于特定目标平台或目标平台范围的ニ进制代码。需要注意的是,不同的编译环境可能彼此不同,或它们可以是相同的。例如,每个虚拟服务器可以容纳不同编译环境的相同集合,或每个虚拟机可以具有一种类型的多个编译环境,并且不同虚拟机于是可以具有虚拟机之间的不同编译环境。编译环境可以具有用于创建特定目标平台或目标平台范围的ニ进制代码的不同的编译环境设置。例如,如图3a所示,虚拟机340中的编译环境314可以具有编译设置350、352和359。无论是在虚拟机内部或在物理机顶部,任意其它编译环境可具有这种编译设 置。图3b示出了由云计算设置380提供的编译环境的安排。在这种设置中,或通常地特定服务没有按固定方式被绑定到特定硬件的任意设置中,不同的编译环境382、384和386可以被提供为对用户直接可见的服务。在图3a的上下文中介绍的编译环境和编译设置可以被转换为用户单独可访问的。因此,用户可以仅需要从他的/她的开发计算机390请求可使用的特定编译设置,并且所述云提供可以使用的这种设置。图4示出了根据示例实施方式的用于开发、编译和测试计算机程序的信令和操作图。系统包括开发者计算机410、编译服务器或服务415、测试服务器或服务420以及远程设备425。这些实体的功能可以共享,例如,编译服务器415和测试服务器可以是单个实体。还可以按与所述图中示出的内容不同的方式来分布所述功能。例如,开发者机器410可以包括来自编译器415的多个特征,由此在编译服务器415处可能不需要它们。下面,介绍与编译程序修改的不同步骤和信号。按照系统的可能操作所允许的,可以省略或组合这些步骤,或按不同顺序来安排这些步骤。在430,选择目标平台并且将目标平台从开发者计算机通信到编译服务器。选择可通过从可用目标平台的集合选取而发生,或可通过选取介绍目标平台的能力的目标平台參数的集合而发生。可发生通信,使得在通信包中打包信息并将其传送到编译服务器415,或其可例如在开发者计算机410处使用web浏览器通过web服务交互地发生,以将信息递送给服务器415。接下来,在435,可形成源模板。源模板可以包括例如骨干(skeleton)源代码文件,其中开发者可容易地创建应用的专用源代码,且由于在模板中提供了定义所以不需要考虑所有定义。源代码模板还可包括用户接ロ定义或甚至是用于便于开发的小段代码实例。例如通过到开发者机器的网络,可以对源模板进行打包且发送到开发者机器,或其可以由其它部件开使用。在后者的情况中,可以将到源代码模板的链路提供给开发者机器。在开发源代码之后,在440,开发者可以选择传递源代码或使源代码可用于编译服务器415。可以将源代码打包为通信包且发送到服务器,或其可以在另一位置处对服务器可用,使得服务器可以通过通信接ロ访问源代码。在445,在与源代码的连接中,可以将目标平台信息和定义传递给编译服务器415。目标平台信息可以与之前从编译服务器接收的信息相同,或其可以是独立地形成的,或其可以是从编译服务器415接收的目标平台信息的修改和/或补充版本。在点450,当编译服务器415访问源代码和目标平台信息时,编译服务器415可基于目标平台信息选择或配置用于创建ニ进制代码的编译环境。可按图3a和3b的上下文中所解释的来发生编译环境的这种选择和/或设置。在选择了编译环境之后,服务器采用源代码且将其编译为目标平台处理器已经可以执行的ニ进制代码。形成ニ进制代码还可以包括,将从源代码创建的ニ进制代码链接到用于目标平台的合适库,例如,输入/输出库、图形库等。链接可以是静态的或动态的,如所属领域的技术人员通常理解的那样。ニ进制代码的形成还可以包括创建安装包,其中将编译的和可能链接的ニ进制代码和适当数据和库打包到安装包中。这种安装包可以准备好用于目标平台的安装。可以对安装包进行数字签名,使得目标平台可以验证安装包的来源,从而信任所述源且允许或推荐安装。在点455,可以将ニ进制代码传递到开发者机器,使得其可以被安装到目标平台。可以将ニ进制代码发送到用于测试的测试服务器420,如果开发者希望通过测试创建的ニ进制代码来继续开发。这可以发生,在458,使得编译服务器可直接将ニ进制代码传递到测试服务器,或编译服务器可在测试服务器直接访问ニ进制代码,或在459,使得开发者将ニ进制代码发送到测试服务器,或开发者使测试服务器可以访问ニ进制代码。如果编译和测试服务器是统ー的,这种发送可以简化或根本不进行。
当测试服务器接收用于测试的ニ进制代码459时,在460,测试服务器459可以保留用于测试代码的适当远程设备。响应于接收测试请求可自动发生保留,或测试服务器可允许开发者预定测试时隙。例如,在没有同时可用的测试设备的情况下,测试服务器还可以提供测试时隙。测试服务器可以在存储器中存储ニ进制代码直到那时,或如果调度测试以用于之后的时间,在测试时其可能需要使ニ进制代码可用于测试服务器。例如,如之前解释的,通过无线或有线连接,测试设备或远程设备可操作地连接到测试服务器,并且可以由测试服务器来记录远程设备的操作。在465,远程设备还可以将监测结果或测试脚本的结果提供给测试服务器。在468,测试服务器可将这种测试结果和监测结果传递到开发者机器,或测试服务器可使开发者机器可访问这种测试结果和监测結果。在470,测试ニ进制代码的操作可以发生,使得测试设备接ロ通过数据连接可用于开发者。开发者因此能够观察远程设备的屏幕上发生了什么,并且能够将按键按压或甚至是接触屏操作通信给远程设备。可以形成输入和输出的日志,其示出提供给远程设备的输入、远程设备的可能的状态改变以及远程设备的输出。测试还可以自动发生,例如,连接到点450,或开发者可请求自动测试。例如,可以自动完成设备的安装测试、ニ进制代码的启动、功率消耗、处理器负载、执行速度、屏幕输出和传感器数据。测试设备可以是实际的、真实的诸如移动电话或计算机的设备。测试设备还可以例如是虚拟的计算机建模的设备。测试设备还可以是集成设备,其中测试设备的一部分是真实的且测试设备的一部分是建模的设备。图5示出了根据实例实施方式的用于开发、编译和测试计算机程序的流程图。在502,接收目标平台上的信息。目标平台可以包括例如开发软件的设备的操作系统和操作系统版本,以及设备的能力和设置,例如屏幕分辨率、音频和视频能力、指令集以及诸如设备标识符或订户标识符的识别数据。在504,至少部分基于目标平台上的这种信息,可以将源模板传递到开发者计算机。源模板可以包括源代码、定义(例如用户接ロ定义)、数据、图像、声音以及甚至是用于创建目标平台的项目的实例。在506,接收要被编译的源代码。源代码可以是完整的且准备好用于编译的,或其可以仅包括源代码的重要部分,且剩余部分可以从编译器设备的内部存储器或从另一源来取回。通过源代码,可以接收目标平台的定义,例如目标平台的名称和设置。在510,基于目标平台确定适当的编译环境。所述编译环境具有按照下述方式建立的编译器,其产生适于目标平台的ニ进制代码且具有例如所有可用的必要库。在512,可以通过选择和激活环境和/或定义编译參数,建立编译环境。在514,将源代码编译为ニ进制代码,例如人类至少部分可读的源代码被编译成目标平台的处理器可以使用的格式,例如是机器可读的。术语“ニ进制代码”不应理解为将代码限制为人类不可读的,而仅是选择以指示从源代码形成的且计算机处理器可使用的任意代码。编译可以产生所谓的目标代码,所述目标代码是ニ进制代码形式。在516,可以将目标代码或ニ进制带代码链接到库以及诸如数据的其它源文件,以形成可执行文件。在520,可执行文件于是可以和其它文件一起被打包到安装包或多个安装包。在522,可以为目标平台对安装包进行签名,以指示包的源。、
在525,如果确定要进行ニ进制代码的自动测试,开始自动测试例程。在自动测试例程中,在530,可以测试安装包或其它形式ニ进制代码的安装。在532,当已经在测试设备上安装了ニ进制代码时,可以测试ニ进制代码的执行或启动。当ニ进制代码运行时,在534,可以执行自动测试脚本,由此测试脚本通过提供输入到ニ进制代码来调用ニ进制代码的功能,并且监测和记录结果输出。可以监测和记录诸如处理器使用、存储器使用、功率消耗、温度和屏幕使用的其它參数和条件。基于监测和记录,在536可以形成测试结果集合且在538可以传递测试结果集合。在540,如果确定ニ进制代码准备好被传递到开发者,则在545通过通信接ロ发送ニ进制代码到开发者或通过通信接ロ使开发者可使用ニ进制代码。否则,在550,提供ニ进制代码可用于测试服务器。如果在548确定要进行ニ进制代码的手动测试,开始自动测试例程。在550,提供ニ进制代码可用于测试服务器。这可以通过以下方式来发生将ニ进制代码发送到测试服务器或为测试服务器提供在特定地址的对ニ进制代码的访问。在之前介绍的方式中,在560,于是可以保留用于测试的测试设备。在570,可以在测试设备上安装且启动ニ进制代码。如之前介绍的,在575,当执行测试时,开发者能够通过数据连接观察测试设备的操作。在测试期间,可以产生测试设备的输入和输出的日志,以及诸如处理器使用、存储器使用、功率消耗和温度及屏幕使用的测试设备的不同条件的日志。在590,当开发者已经访问ニ进制代码且已经执行了可能期望的测试过程时,过程结束。在所谓的最小解决方案中,用户不需要在能够开发用于目标平台(例如,Symbian平台)的程序的开发机器上进行任何设置。可以实现web服务,其中用户可以选择目标设备平台且下载用于所选平台的骨干项目。然后,用户可以开发应用并且使用web服务对其进行编译,web服务能够实现后端编译。在成功的编译之后,用户还可以选择在诸如论坛NokiaRDA的测试服务的帮助下,在远程设备中运行ニ进制代码。这样的益处可以是,用户不需要其它软件,而只需要文本编辑器,例如开发计算机上的诸如因特网浏览器的not印ad和web浏览器。在这种情况下,甚至在使用诸如智能电话的移动电话或甚至是常规移动电话也可以进行开发。在最小的解决方案中,可以仅需要实现web后端服务。这可以按各种方式来进行。ー种可能性是具有带Windows操作系统的物理或虚拟机,其中我们安装了启用Perl脚本的Web服务器,例如Apache web服务器。Web服务器提供具有如下形式的网页,用户可以选择目标平台且将选择递送给服务器。之后,web服务器可允许用户通过链接在同一服务器或其它服务器处下载骨干项目或可以将骨干项目推送给用户,或可以通过链接使骨干项目在同一服务器或其它服务器处可用。可以实现编译,使得网页包括用户可以用于上传如压缩的或组合的包(例如,ZIP包)完整的项目的形式。后端服务器的Perl脚本然后对包进行解包,检查目标平台且从后端服务器选择正确的环境以及编译源代码。可以将不同的开发和编译环境安装到后端服务器。编译产生日志文件和安装包,例如是SIS格式的。用户能够从网页看到日志且于是下载包含结果ニ进制代码的安装包。可选地,在成功的编译之后,例如通过使用诸如论坛Nokia RDA服务的测试服务,后端服务器可以为用户给出在实际远程设备中测试ニ进制代码应用的可能性。
在所谓的增强解决方案中,用户可以仅在开发计算机上安装诸如Carbide C++环境的开发环境。可以创建用于开发环境的web服务插件,并且所述web服务插件可用于开发者,开发者例如利用ー个按钮按压来实现使用后端编译的可能性。通过这种解决方案,用户能够将开发工具用作通常的,但复杂的环境可以被安装到后端服务器或服务,而不是开发者计算机。这样使得开发环境的安装和使用更轻。可通过使用开发环境的插件框架来创建插件。例如,可通过使用Eclipse插件开发环境来实现Carbide C++插件。于是,可以使用创建的插件直接从开发者用户接ロ来创建诸如压缩的ZIP文件的源代码包,以及使用创建的插件来发送要被编译的包到后端服务器。图6a示出了根据实例实施方式的用于测试计算机程序的测试安排。可能存在前端服务器或分配服务器610,其从通信接ロ 615接收进入的测试请求。可选地连接到分配服务器610,或连接到通信接ロ 615,可以有多个测试服务器620、622和624。这些测试服务器可以包括调试和记录软件以及用于与附加的测试设备进行通信的部件。可以操作多个测试设备,例如连接到测试服务器620的测试设备630、632和634,以及连接到测试服务器6240的测试设备640、642和644。测试设备可以具有不同的软件平台且它们可以具有不同的能力,或测试设备可以彼此类似,或ー些测试可以不同且ー些类似。测试服务器和测试设备之间的连接可以是有线的或无线,如之前介绍的,例如通过WLAN或BhieiOOth i;>蓝牙连接,或USB或火线连接。如果测试设备提供用于在测试模式运行测试设备的部件,例如,通过记录测试设备的操作,则也可以省略测试服务器。图6b示出了根据示例实施方式的用于测试计算机程序的流程图。例如,在650,从开发计算机或从编译器服务器接收测试请求。测试请求可以包括用于测试的ニ进制代码包,或请求可以指示在哪可以发现用于通过通信接ロ进行访问的ニ进制代码。响应于测试请求,在655,测试服务器可以保留用于测试的测试设备(远程设备)。这种保留可以是中间的,或在没有测试设备可用的情况下,其可以是未来的保留。还可以有用于测试请求中测试时间的请求,在这种情况下,服务器根据测试时间来保留测试设备。接下来在660,可以接收用于测试的安装包,或在测试请求中可能已经接收到这种包。例如,通过将文件经由web接口上传到测试服务器,可以按从通信接ロ接收通信包的形式来发生接收。
在已经接收到用于测试的ニ进制代码且已经保留了测试设备时,测试服务器现在可以建立测试。在665,测试服务器可以例如通过视频连接、或能够传递图像和其它数据的数据连接,或通过其它数据连接,使测试设备对开发者是可见的。在670,测试服务器于是可以在测试设备上安装且运行(执行)ニ进制代码。在675,在执行期间,测试服务器和/或测试设备可以记录测试设备的输入、输出和可操作參数。替代使测试设备对开发者可见或除了使测试设备对开发者可见,可以完成上述内容。在680,例如通过发送测试会话的日志或通过连续地发送数据到开发者计算机,测试服务器于是可以将输出传递到开发者计算机。在690,当测试就绪时,测试服务器停止测试例程且可将设备初始化为其通常状态。上述测试建立可以重复进行,使得开发者请求测试,或其可以自动的例如使得编译服务器请求测试。 图7a和7b示出了根据实例实施方式的开发环境。开发环境700包括用于示出正在开发的项目的不同部分的不同区域。在项目窗ロ 710中可以示出诸如项目定义文件710、头部文件712、用户接ロ定义文件和程序文件714或可以被理解为源代码文件的任意其它文件的项目文件。例如,以可适于编辑源代码的文本格式或以可适于编辑用户接ロ定义的图形格式,在编辑窗ロ 720中可以示出这些文件中的任意文件的内容。在一个窗ロ 730中可以示出编译和链接的结果并且在另ー窗ロ 740中的当前打开的文档。可以具有用于编译项目的按钮750和/或菜单项、用于运行项目的按钮755和/或菜单项,以及用于调试项目的按钮760和/或菜单项。可以通过用于在不同视图间切換的视图窗格770来控制开发环境的不同视图。可以将开发环境的上述说明应用到任意已知的开发环境,例如Nokia的Qt开发环境或Carbide开发环境。在示例实施方式中,通过当前已知的内容来修改这种开发环境的操作。例如,可以将源文件提供为从另一位置可见,并且它们可以按骨干项目的形式从编译服务器来接收。可以发生编译,使得当按下编译按钮750时,将项目发送到用于编译的编译服务器。接下来,可从编译服务器接收ニ进制代码。还具有用于这种发送的単独按钮。可以发生项目或结果应用的运行,使得当按下用于这个目的的按钮755或其它按钮或菜单项时,启动从编译服务器接收的ニ进制代码。可以发生项目的调试或测试,使得当编译服务器已经将程序编译为ニ进制代码时,将ニ进制代码传递到测试服务器。这可以通过按下用于这个目的的按钮760或其它按钮或菜单项来发生。开发环境于是可以形成与测试服务器的数据连接并且将执行ニ进制代码的远程设备带为对开发者可见。还可以发生开发,使得在开发机器处本地执行上述操作的ー些或一部分,以及在服务器处执行部分或全部操作。通过web接ロ可以提供开发环境的用户接ロ,由此开发环境可以驻留在服务器处。编译、链接或构建安装包中的一些可以在本地机器上发生,或其一些或全部可以在服务器处发生。 图8a示出了根据示例实施方式的ニ进制程序的结构。ニ进制程序800可以是文件形式的或文件集合格式的。ニ进制程序可以包括报头810,例如用于指示ニ进制程序想要哪个平台,并且用于指示ニ进制程序的结构。存在用于可执行程序的不同格式,例如用于Unix平台的a. out、公共对象文件格式(COFF )、可执行以及可链接格式(ELF )、用于App I e OSX操作系统的Mach-O格式、用于Windows平台的便携式可执行(PE)、系统对象模型(SOM)、DOSMZ格式以及COM格式等。ニ进制程序报头可以包括关于ニ进制程序执行期间使用的段落840的信息820,以及关于用于例如链接的部分830、835和838的信息825。图8b示出了根据示例实施方式的安装包的结构。安装包850可包含报头860,其包含与目标平台有关的信息以及安装包的内容。安装包可包括用于保持数据和(ニ进制)程序代码的条目870、872和 874。条目可包括示出了所述条目中的内容类型的类型指示器882,以及包括数据或程序代码的数据部分。可以在彼此间嵌入安装包。此处介绍的示例实施方式可提供优点。例如,由于其不需要手动配置正确的开发环境,其可以更容易地开始开发。这样可以产生用于开发的更多时间,例如大约25%更多的时间可以用于开发而不是配置开发和编译环境。提示测试服务可以允许用户在真实的目标硬件上测试ニ进制代码,而不是在模拟器上,其可以帮助实现更好质量的结果软件。此处介绍的安排可以同时支持多个平台。在驻留在存储器中计算机程序代码的帮助下可以实现本发明的各种实施方式且促使相关装置执行本发明。例如,终端设备可以包括用于处理、接收和传送数据的电路或电子设备、存储器中的计算机程序代码和处理器,当处理器运行计算机程序代码时,促使終端设备执行实施方式的特征。其它方面,网络设备可以包括用于处理、接收和传送数据的电路和电子设备、存储器中的计算机程序代码以及处理器,当处理器运行计算机程序代码时,促使网络设备执行实施方式的特征。明显的是,本发明并仅限于上述呈现的实施方式,但是其可以在所附权利要求的范围内进行修改。
权利要求
1.一种用于形成二进制计算机程序的方法,包括 在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部; 在所述编译器装置处在第二通信接口上访问源代码; 基于目标平台信息确定编译环境; 使用编译环境,从源代码形成用于目标平台的二进制计算机程序;以及 提供在第三通信接口上可使用的用于目标平台的二进制计算机程序。
2.根据权利要求I所述的方法,进一步包括基于目标平台信息,提供在第二通信接口上可使用的源代码模板。
3.根据权利要求I或2所述的方法,进一步包括 使用二进制计算机程序,形成用于目标平台的安装包; 使用目标平台信息对安装包进行签名;以及 提供在第三通信接口上可使用的签名的安装包。
4.根据权利要求1、2或3所述的方法,进一步包括 基于用于测试二进制计算机程序的目标平台信息,确定测试环境;以及测试用于以下组中的至少一个的正确操作的二进制计算机程序,所述组包括安装、启动、输入和输出以及用户接口操作。
5.根据权利要求I至4中任意一项所述的方法,进一步包括 将在通信接口上至少部分可使用的测试环境提供给开发者计算机,使得测试环境从开发者计算机接收输入并且将输出提供给开发者计算机。
6.根据权利要求I至5中任意一项所述的方法,其中所述编译环境包括以下组中的至少一个,所述组包括虚拟机、物理机、编译器安装和编译器设置。
7.根据权利要求I至6中任意一项所述的方法,其中 第一通信接口是编译器装置和开发者计算机之间的接口; 第二通信接口是编译器装置和源代码存储装置之间的接口;以及 第三通信接口是编译器装置和开发者计算机之间的接口。
8.根据权利要求I至7中任意一项所述的方法,其中第一通信接口和第二通信接口是编译器装置和开发计算机处的开发环境之间的接口,以及开发环境通过将源代码文件从开发者计算机传送到编译器装置,将源代码提供给编译器装置。
9.一种装置,包括至少一个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述装置进行 在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部; 在所述编译器装置处在第二通信接口上访问源代码; 基于平台信息确定编译环境; 使用编译环境,从源代码形成用于目标平台的二进制计算机程序;以及 提供在第三通信接口上可使用的用于目标平台的二进制计算机程序。
10.根据权利要求9所述的装置,进一步包括计算机程序代码,被配置为利用处理器促使所述装置进行基于目标平台信息,提供在第二通信接口上可使用的源代码模板。
11.根据权利要求9或10所述的装置,进一步包括计算机程序代码,被配置为利用处理器促使所述装置进行 使用二进制计算机程序,形成用于目标平台的安装包; 使用目标平台信息对安装包进行签名;以及 提供在第三通信接口上可使用的签名的安装包。
12.根据权利要求9、10或11所述的装置,进一步包括计算机程序代码,被配置为利用处理器促使所述装置进行 基于用于测试二进制计算机程序的目标平台信息,确定测试环境;以及测试用于以下组中的至少一个的正确操作的二进制计算机程序,所述组包括安装、启动、输入和输出以及用户接口操作。
13.根据权利要求9至12中任意一项所述的装置,进一步包括计算机程序代码,被配置为利用处理器促使所述装置进行 将在通信接口上至少部分可使用的测试环境提供给开发者计算机,使得测试环境从开发者计算机接收输入并且将输出提供给开发者计算机。
14.根据权利要求9至13中任意一项所述的装置,其中所述编译环境包括以下组中的至少一个,所述组包括虚拟机、物理机、编译器安装和编译器设置。
15.根据权利要求9至14中任意一项所述的装置,其中 第一通信接口是编译器装置和开发者计算机之间的接口; 第二通信接口是编译器装置和源代码存储装置之间的接口;以及 第三通信接口是编译器装置和开发者计算机之间的接口。
16.根据权利要求9至15中任意一项所述的装置,其中第一通信接口和第二通信接口是编译器装置和开发计算机处的开发环境之间的接口,并且编译器装置被配置为通过接收从开发者计算机到编译器装置的源代码文件,从开发者环境接收源代码。
17.一种系统,包括至少一个计算机,所述计算机包括至少一个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述系统进行 在编译器装置处在第一通信接口上访问目标平台信息,所述目标平台在所述编译器装置的外部; 在所述编译器装置处在第二通信接口上访问源代码; 基于平台信息确定编译环境; 使用编译环境,从源代码形成用于目标平台的二进制计算机程序;以及 提供在第三通信接口上可使用的用于目标平台的二进制计算机程序。
18.根据权利要求17所述的系统,进一步包括计算机程序代码,被配置为利用处理器促使所述系统至少执行以下内容 基于目标平台信息,提供在编译器装置处第二通信接口上可使用的源代码模板; 在开发装置处,接收且存储源代码模板。
19.根据权利要求17或18所述的系统,进一步包括计算机程序代码,被配置为利用处理器促使所述系统至少执行以下内容使用二进制计算机程序,形成用于目标平台的安装包; 使用目标平台信息对安装包进行签名;以及 提供在编译器装置处第三通信接口上可使用的签名的安装包。
20.根据权利要求17、18或19所述的系统,进一步包括计算机程序代码,被配置为利用处理器促使所述系统至少执行以下内容 基于用于在测试装置处测试二进制计算机程序的目标平台信息,确定测试环境, 测试用于以下组中的至少一个的正确操作的二进制计算机程序,所述组包括安装、启动、输入和输出以及用户接口操作,其中所述测试装置可操作地连接到具有由目标平台信息所确定的操作系统的设备。
21.一种装置,包括至少一个处理器、包括计算机程序代码的存储器,所述存储器和计算机程序代码被配置为,利用处理器促使所述装置至少执行以下内容 在第一通信接口上提供可用于编译器装置的目标平台信息,目标平台在所述编译器装置的外部; 接收源代码模块,基于目标平台信息已经形成所述面板; 使用源代码模块来形成源代码,并且在通信接口上提供可用于编译器装置的源代码;以及 接收从源代码形成的用于目标平台的二进制计算机程序,通过基于目标平台信息确定目标平台,已经形成二进制计算机程序。
22.—种装置,包括 用于在第一通信接口上访问目标平台信息的部件,所述目标平台在所述装置的外部; 用于在第二通信接口上访问源代码的部件; 用于基于平台信息确定编译环境的部件; 用于使用编译环境,从源代码形成用于目标平台的二进制计算机程序的部件;以及 用于提供在第三通信接口上可使用的用于目标平台的二进制计算机程序的部件。
23.一种网络服务,为用户至少提供以下内容 在编译器装置处在第一通信接口上上传目标平台信息,所述目标平台在所述编译器装置的外部; 在所述编译器装置处在第二通信接口上上传源代码; 基于平台信息确定编译环境; 使用编译环境,从源代码形成用于目标平台的二进制计算机程序;以及 提供在第三通信接口上可使用的用于目标平台的二进制计算机程序。
24.一种在计算机可读介质上存储且在数据处理设备中可执行的计算机程序产品,所述计算机程序产品包括 用于在编译器装置处在第一通信接口上访问目标平台信息的计算机程序代码部分,所述目标平台在所述编译器装置的外部; 用于在所述编译器装置处在第二通信接口上访问源代码的计算机程序代码部分; 用于基于所述平台信息确定编译环境的计算机程序代码部分; 用于使用所述编译环境,从所述源代码形成用于所述目标平台的二进制计算机程序的计算机程序代码部分;以及用于提供在第三通信接口上可使用的用于目标平台的二进制计算机程序的计算机程序代码部分。
25.一种在计算机可读介质上存储且在数据处理设备中可执行的计算机程序产品,其中所述计算机程序产品包括 用于在第一通信接口上提供用于编译器装置的目标平台信息的计算机程序代码部分,所述目标平台在所述编译器装置的外部; 用于接收源代码模板的计算机程序代码部分,基于所述目标平台信息已经形成所述模板; 用于使用源代码模板形成源代码并且在通信接口上提供可用于编译器装置的源代码的计算机程序代码部分; 用于接收从源代码形成的用于目标平台的二进制计算机程序,通过基于目标平台信息确定目标平台,已经形成二进制计算机程序的计算机程序代码部分。
全文摘要
本发明涉及形成二进制计算机程序。将目标平台信息提供给编译器,以及源代码。然后,基于平台信息和二进制计算机程序来确定编译环境,其中通过用于编译环境中的目标平台的源代码来形成所述二进制计算机程序。
文档编号G06F9/44GK102667717SQ200980163107
公开日2012年9月12日 申请日期2009年12月21日 优先权日2009年12月21日
发明者J·科斯基宁 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1