CN110134378A - 应用程序创建方法及装置、计算机设备及存储介质 - Google Patents
应用程序创建方法及装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110134378A CN110134378A CN201810130356.5A CN201810130356A CN110134378A CN 110134378 A CN110134378 A CN 110134378A CN 201810130356 A CN201810130356 A CN 201810130356A CN 110134378 A CN110134378 A CN 110134378A
- Authority
- CN
- China
- Prior art keywords
- clr
- towards
- application program
- operating system
- code
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
一种应用程序创建方法及装置、计算机设备及存储介质,方法包括获取面向CLR的源代码;对源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;获取操作系统对应的面向CLR的开发框架,其中,源代码与操作系统对应;基于中间代码以及面向CLR的开发框架,生成操作系统对应的应用程序。采用本方法能够使用同样编程语言的源程序只要其为面向CLR的源程序,即可创建不同平台下的不同版本的应用程序,针对同一种应用程序,无需再对每一种操作系统采用不同的编程语言进行创建,无需再针对不同平台通过不同编程语言来创建对应的应用程序,减少工作量,提高应用程序开发效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用程序创建方法及装置、计算机设备及存储介质。
背景技术
随着计算机技术和移动互联网技术的发展,应用程序的种类也不断增多,应用程序开发是在某一种操作系统环境下进行应用程序的编写和调试等工作,对于不同操作系统,开发应用程序时所使用的工具或程序语言不同,如此,针对同一应用程序,为适应各种操作系统,需要针对每一种操作系统分别编写该应用程序的代码。
目前,智能移动终端常使用的两大主流操作系统为IOS(Iphone OperationSystem)操作系统和安卓操作系统,安卓应用程序和IOS应用程序开发分别在各自系统的IDE(Integrated Development Environment,是用于程序开发的软件) 环境下,分别使用安卓和IOS特定的开发语言进行开发,应用程序分别在安卓和IOS系统上的体验都要保持一致,即UI(User Interface,用户界面)和功能均一致,只是针对安卓和IOS系统使用不同的开发语言,安卓应用程序可在 android studio(一种全新的安卓开发环境)中进行开发,使用java语言,IOS应用程序在xcode(运行在Mac OS X操作系统上的集成开发工具,是开发IOS应用程序的平台)环境中进行开发,使用OC语言(即Objective-C编程语言,是对C语言的一种封装,在C语言的基础上增加了一层面向对象的语法,完全兼容C语言),但应用程序的功能和逻辑是完全相同的。即同一应用程序需要分为安卓和IOS两个版本,目前同一应用程序在不同操作系统上的版本需要搭建不同的开发环境,并分别利用不同编程语言进行开发,工作量大,导致开发过程效率低。
发明内容
基于此,有必要针对开发效率低的问题,提出一种应用程序创建方法及装置、计算机设备及存储介质。
一种应用程序创建方法,包括:
获取面向CLR的源代码;
对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
一种应用程序创建装置包括:
源代码获取模块,用于获取面向CLR的源代码;
编译模块,用于对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
框架获取模块,用于获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
应用程序生成模块,用于基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取面向CLR的源代码;
对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取面向CLR的源代码;
对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
上述应用程序创建方法及装置、计算机设备及存储介质,首先,获取面向 CLR的源代码,并将其编译为面向CLR的通用中间语言对应的中间代码,确保中间代码后续可被CLR编译。由于操作系统的多样性,为确保后续创建的应用程序能在各操作系统上运行,在源代码编译为通用中间语言对应的中间代码后,针对操作系统,获取对应的开发框架,再对中间代码以及开发框架进行打包操作,生成该操作系统下的应用程序,即生成该操作系统对应版本的应用程序。即可采用面向CLR的源代码,基于其编译成的通用中间语言对应的中间代码结合不同平台(不同操作系统)对应的开发框架,可生成不同平台对应的应用程序。可以理解,使用同样编程语言的源程序只要其为CLR支持的编程语言对应的源程序(即面向CLR的源程序),即可创建不同平台下的不同版本的应用程序,针对同一种应用程序,无需再对每一种操作系统采用不同的编程语言进行创建,无需再针对不同平台通过不同编程语言来创建对应的应用程序,减少工作量,提高应用程序开发效率。
附图说明
图1为一个实施例中应用程序创建方法的应用环境示意图;
图2为一个实施例中应用程序创建方法的流程示意图;
图3为一个实施例中应用程序开发架构图;
图4为一个实施例中应用程序创建装置的模块示意图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本申请,并不限定本申请的保护范围。
如图1为一个实施例中应用程序创建方法的应用环境示意图,该应用程序创建方法应用于应用程序创建系统。该应用程序创建系统包括终端10和服务器 20。终端10和服务器20通过网络连接。服务器20可以用独立的服务器或者是多个服务器组成的服务器集群来实现。应用程序创建方法可应用于终端10中,终端10通过上述应用程序方法生成应用程序后,可将应用程序上传至服务器20,用户终端可通过访问服务器20下载应用程序。
在一个实施例中,如图2所示,提供了一种应用程序创建方法。以该方法应用于图1中的终端10为例进行说明,包括如下步骤:
S210:获取面向CLR的源代码。
CLR为通用语言运行库(Common Language Runtime),也可称为通用语言运行时,和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。CLR是.net framework框架的主要执行引擎。
源代码是指用计算机编程语言直接编写出来的程序。CLR不用关心开发人员用哪一种计算机编程语言来编写源代码,但后续要能使CLR进行编译,源代码还需经过一定的处理,于是就需要相应的面向CLR的、可以编译源代码的编译器对源代码进行编译,以便CLR可以识别编写的源代码。从而,为了能对源程序进行编译得到CLR能执行的语言,则源代码需要通过CLR支持的编程语言进行编写的代码,可以理解,面向CLR的源代码是CLR支持的编程语言(CLR 支持的计算机开发语言)对应的源代码,也可以认为是面向CLR的编程语言对应的源代码。在一个示例中,CLR支持的编程语言包括C#编程语言、C++编程语言、java script编程语言(即js编程语言)和lua编程语言(即脚本编程语言) 等,开发者可以使用上述CLR支持的编程语言中任何一种编程语言进行源程序编写,可得到任何一种编程语言对应的源程序。C#编程语言对应C#语言源程序, C++编程语言对应C++语言源程序,java script编程语言对应java script语言源程序,lua编程语言对应lua语言源程序,由于上述编程语言为CLR支持的编程语言,得到的对应源程序即为面向CLR的源程序。
S220:对源代码进行编译,获得面向CLR的通用中间语言对应的中间代码。
通用中间语言(Common Intermediate Language,CIL),也可称为MSIL(Microsoft Intermediate Language)或IL(Intermediate Language),是一种属于通用语言架构和.NET框架的低阶(lowest-level)的人类可读的编程语言,即将源代码转化为机器语言的一个中间语言。源代码被翻译成CIL的中间代码,而不是基于特定平台或处理器的目标代码。CIL对应的中间代码是一种独立于具体 CPU和平台的指令集。在运行时,CLR可将CIL对应的中间代码编译成本机 CPU指令(即机器代码)。CIL对应的中间代码需要CLR才能执行,即面向CLR 的CIL对应的中间代码即表示需通过CLR进行编译才能执行的CIL的中间代码, CLR为CIL提供一个运行时环境。具体通过何种编译方法进行编译,可进行选择。在一个实施例中,CIL对应的中间代码以位元码(是一个程序处理的电脑目标代码(objectcode),通常指虚拟机(virtual machine)而不是真的电脑机或硬件处理器(processor))的形式存在。
S230:获取操作系统对应的面向CLR的开发框架,其中,源代码与操作系统对应。
开发框架是一个可复用的设计构件,它规定了应用程序的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法(即一组抽象构件及构件实例间交互的方法),它为构件复用提供了上下文关系。可以理解,开发框架时实现了某通用完备功能(除去特殊应用的部分)的底层服务,使用开发框架的开发人员可以在一个通用功能已经实现的基础上开始具体的系统开发,开发框架提供了应用所期望的默认行为的类集合,具体的应用通过重写子类(该子类属于开发框架的默认行为)或组装对象来支持应用专用的行为。开发框架强调的是软件的设计重用性和系统的可扩展性,可缩短开发周期,提高开发质量。
即开发框架可以理解为某种应用的半成品,是一组组件,供开发者选用完成应用程序的开发。每种开发框架可看成一个框架文件,不同操作系统选择对应的开发框架即选择对应的框架文件。面向CLR的开发框架表示包括CLR,即面向CLR的框架文件中包括CLR,可通过CLR对CIL对应的中间代码进行编译,生成原生代码。CIL对应的中间代码需要CLR才能被执行,从而,在本实施例中,选用面向CLR的开发框架,以确保后续运行应用程序时,可通过开发框架中的CLR对CIL对应的中间代码进行编译。
另外,面向CLR的开发框架还包括编译器和类库(是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类,即为应用程序开发提供一套广泛而有效的工具类),编译器的选择直接决定在CLR换将下的编译方式。操作系统需通过其支持的编译方式进行编译,而不同操作系统支持的编译方式不仅相同。例如,对于安卓操作系统,可支持即时编译和静态编译方式,对于IOS操作系统,禁止即时编译和静态编译方式,可支持完全静态编译。即操作系统对应的面向CLR的开发框架为该操作系统支持的面向CLR的开发框架,该面向CLR的开发框架可在对应的操作系统上运行。
由于操作系统的多样性,在各操作系统上需运行对应版本的应用程序,才能确保应用程序的正常运行,为生成不同操作系统下的应用程序,则需要操作系统对应的面向CLR的开发框架,即该面向CLR的开发框架对应的编译方式可被操作系统支持。且针对同一编程语言的源程序,针对不同操作系统,实现同一功能时虽然编程语言可以相同,但其所采用的调用函数可能不同,从而需要确保源程序与操作系统对应。例如,对于某终端上的某一应用程序,可调用终端的摄像头进行扫描,然而,针对安卓操作系统和IOS操作系统,为实现调用摄像头进行扫描,需要调用不同的函数来实现(比如,在安卓操作系统下,可通过调用函数A实现,如此,在对应的源程序中,需包括调用函数A的代码,然而,在IOS操作系统下,需要通用函数B和C实现,如此,在对应的源程序中,需包括调用函数B和C的代码)。从而,需要确保源程序与操作系统对应,以确保后续能正常运行应用程序的功能。
可以理解,针对不同操作系统下不同版本的同一应用程序创建过程中,可采用相同编程语言的源程序,且不同操作系统对应的源程序可部分共享,即不涉及平台的应用程序功能对应的部分源程序可以共享,涉及平台的应用程序功能的源程序可存在不同。例如,上述应用程序调用摄像头扫描的功能,需要涉及到平台的摄像头调用,不同平台的摄像头调用可能需要不同的调用函数,对应的该部分源程序可不同。即可采用相同的编程语言对不同平台下对应版本的应用程序进行创建,相同编程语言下不同版本的应用程序的源代码的内容可存在差异。
S240:基于中间代码以及面向CLR的开发框架,生成操作系统对应的应用程序。
在获取CIL对应的中间代码和操作系统对应的面向CLR的开发框架后,即可基于中间代码和面向CLR的开发框架生成操作系统对应的应用程序(即应用程序安装包)。比如,针对安卓操作系统,上述面向CLR的开发框架为安卓操作系统对应的开发框架,如此,可生成安卓操作系统对应的应用程序,该应用程序可在安卓操作系统上正常运行。具体地,可通过调用安卓SDK编译生成apk 文件,即实现安卓操作系统下的应用程序的生成。
针对IOS操作系统,上述面向CLR的开发框架为IOS操作系统对应的开发框架,如此,可生成IOS操作系统对应的应用程序,该应用程序可在IOS操作系统上正常运行。具体地,可通过导出xode工程然后编译生成ipa文件,即实现IOS操作系统下的应用程序的生成。
上述应用程序创建方法,首先,获取面向CLR的源代码,并将其编译为面向CLR的通用中间语言对应的中间代码,确保中间代码后续可被CLR编译。由于操作系统的多样性,为确保后续创建的应用程序能在各操作系统上运行,在源代码编译为通用中间语言对应的中间代码后,针对操作系统,获取对应的开发框架,再对中间代码以及开发框架进行打包操作,生成该操作系统下的应用程序,即生成该操作系统对应版本的应用程序。即可采用面向CLR的源代码,基于其编译成的通用中间语言对应的中间代码结合不同平台(不同操作系统) 对应的开发框架,可生成不同平台对应的应用程序。可以理解,使用同样编程语言的源程序只要其为CLR支持的编程语言对应的源程序(即面向CLR的源程序),即可创建不同平台下的不同版本的应用程序,针对同一种应用程序,无需再对每一种操作系统采用不同的编程语言进行创建,无需再针对不同平台通过不同编程语言来创建对应的应用程序,减少工作量,提高应用程序开发效率。
在一个实施例中,上述基于中间代码以及面向CLR的开发框架,生成操作系统对应的应用程序的步骤S240,可具体为:对中间代码以及面向CLR的开发框架进行打包处理,生成操作系统对应的应用程序。可以理解,是对中间代码以及面向CLR的开发框架进行编译处理,生成操作系统对应的应用程序。
在其中一个实施例中,上述应用程序创建方法,还包括:获得对源代码进行编译得到的元数据,其中,元数据与中间代码对应。
基于中间代码以及面向CLR的开发框架之前,还包括:根据中间代码以及元数据生成托管文件。
基于中间代码以及面向CLR的开发框架,包括:基于托管文件以及面向CLR 的开发框架,生成操作系统对应的应用程序。
可以使用任何面向CLR的编程语言创建源程序,然后用对应的编译器去检查语法和源代码,通过编译器编译后,除生成CIL对应的中间代码之外,还生成元数据。元数据又称为中介数据或中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。在本实施例中,元数据可以包含两种类型的元数据表:一个表描述源代码中定义的类型和成员;另一个表描述源代码引用的类型和成员。在一个实施例中,是通过面向CLR的编译器对源程序进行编译,得到CIL对应的中间代码。本地代码编译器(native code compilers)进行编译生成的是面向特定CPU架构((比如X86、X64、ARM)的代码,而面向 CLR的编译器对源代码进行编译后得到的是CIL对应的中间代码,可以称为托管代码,通过CLR管理CIL代码的执行。
然后,根据中间代码以及元数据生成托管文件(即托管模块),如此,可确保元数据和CIL对应的中间代码的同步,需要CLR才能执行。托管模块利用 Windows的数据执行保护(Data Execution Prevention,DEP)和地址空间布局随机化(Adress Space LayoutRamdomization,ASLR),这两个功能旨在增强整个系统的安全性。其中,托管模块是一个标准的32位Microsoft Windows可移植执行体(PE32)文件或标准的64位Microsoft Windows可移植执行体(PE32+)文件,它需要CLR才能执行。托管模块包括PE32或PE32+头、CLR头(包括要求的CLR 版本,一些标志(flag),托管模块入口方法(Main方法)等信息)、元数据和CIL对应的中间代码。可以理解,托管文件即为托管DLL(动态链接库),是能在 CLR中能够直接引用的,并且扩展名为“DLL”的文件,具体就是封装各种命名空间所在的DLL文件。
在其中一个实施例中,上述基于托管文件以及面向CLR的开发框架,生成操作系统对应的应用程序,可具体为:对托管文件以及面向CLR的开发框架进行打包处理,生成操作系统对应的应用程序。可以理解,是对托管文件以及面向CLR的开发框架进行编译处理,生成操作系统对应的应用程序。
在其中一个实施例中,获取面向CLR的源代码之前,包括:建立软件开发环境。
获取面向CLR的源代码,包括:获取在软件开发环境下的面向CLR的源代码。
即在终端建立软件开发环境,例如,Visual Studio(VS),可获取在该软件开发环境下的面向CLR的源代码。在一个示例中,用户可通过在软件开发环境下编写待创应用程序对应的源代码,如此,即可获取在软件开发环境下用户输入的面向CLR的源代码,之后再对其进行编译得到CIL对应的中间代码。
在其中一个实施例中,获取操作系统对应的面向CLR的开发框架,包括:响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取选择操作对应的操作系统的面向CLR的开发框架。
在用于开发的终端上,预先存储各操作系统对应的面向CLR的开发框架,在进行应用程序的创建过程中,用户可选择开发框架,由于各操作系统对应的开发框架可不同,为确保后续应用程序能正常使用,需要选择对应操作系统的面向CLR的开发框架。
在其中一个实施例中,操作系统为安卓操作系统或IOS操作系统。
安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
可以理解,操作系统不同,获取的操作系统对应的面向CLR的开发框架不同,可以是安卓操作系统对应的面向CLR的开发框架,也可以是IOS操作系统对应的面向CLR的开发框架,从而,可以实现安卓操作系统下的应用程序创建,也可以实现IOS操作系统下的应用程序创建。由于各操作系统支持的编译方式不仅相同,为确保编译正常,选择操作系统对应的开发框架即为选择操作系统支持的编译方式的开发框架。
JIT(Just-in-Time compilation,即时编译)和AOT(Ahead-of-Time,静态编译或静态编译)两种方式都是将CIL进一步编译成各平台对应的原生代码。
JIT:也称动态编译,在程序执行时编译代码,解释一条语句执行一条语句,即将一条中间的托管的语句翻译成一条机器语句,然后执行这条机器语句。同时将编译过的代码进行缓存,不是每一次都进行编译。它是静态编译和解释器的结合体。机器既要处理代码的逻辑,同时还要进行编译的工作,所以其运行时的效率肯定是受到影响的。因此,有一部分代码通过AOT静态编译,以降低在程序运行时JIT动态编译在效率上的问题。IOS平台不允许这种动态的编译方式。安卓平台Dalvik虚拟机使用的就是JIT编译方案。
AOT:AOT静态编译和JIT并非对立,AOT同样使用JIT进行编译,AOT 编译的代码在程序运行之前就已经编译了。还有一部分代码会通过JIT来进行动态编译。AOT的过程,收集要被编译的方法,使用JIT进行编译,发射(Emitting) 经JIT编译过的代码和其他信息,直接生成文件或者调用本地汇编器或连接器进行处理之后生成文件。
Full AOT(全静态编译):IOS平台禁止使用JIT,为此,提供一个Full AOT 编译模式。预先对程序集中的所有CIL代码进行AOT编译生成一个本地代码映像,然后在运行时直接加载这个映像而不再使用JIT引擎。
需要说明的是,操作系统对应的面向CLR的开发框架的编译方式是对CIL 的中间代码的编译方式,编译后得到机器可执行的原生代码。在创建应用程序过程中,需要获取操作系统对应的面向CLR的框架,对于不同操作系统,支持的编译方式不同,例如,安卓操作系统支持上述即时编译方式和静态编译方式,而IOS操作系统支持全静态编译方式,需要选择操作系统支持的编译方式才能实现对中间代码的编译。从而,在创建过程中获取操作系统对应的面向CLR的开发框架时,需要获取采用在该操作系统下支持的编译方式的开发框架。例如,对于安卓操作系统,则需要获取编译方式为即时编译或静态编译的面向CLR的开发框架,即安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译。对于IOS操作系统,则需要获取编译方式为全静态编译方式的面向CLR的开发框架,即IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
例如,对于创建的安卓操作系统下的应用程序A,在安卓终端上安装应用程序A,运行应用程序A的某个功能时,则需要通过安卓操作系统对应的面向 CLR的开发框架的编译方式(例如,即时编译方式或静态编译方式)对该功能对应的中间代码进行编译得到可执行的原生代码。对于创建的IOS操作系统下的应用程序B,在IOS终端上安装应用程序B,运行应用程序B的某个功能时,则需要通过IOS操作系统对应的面向CLR的开发框架的编译方式(例如,全静态编译方式)对该功能对应的中间代码进行编译得到可执行的原生代码。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
下面以一个实施例对上述应用程序创建方法的流程加以具体说明。
现有安卓应用开发架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
Linux Kernel:安卓基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
Android Runtime:安卓包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个安卓应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx是一套工具,可以将Java.class转换成.dex格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。Dalvik 虚拟机依赖于Linux内核提供基本功能,如线程和底层内存管理。
Libraries:安卓包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过安卓的应用程序框架(application framework)暴露给开发者。
Application Framework:通过提供开放的开发平台,安卓使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。所有的应用程序其实是一组服务和系统,包括:视图(View):丰富的、可扩展的视图集合,可用于构建一个应用程序。包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器。内容提供者(Content Providers):使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。资源管理器(Resource Manager):提供访问非代码资源,如本地化字符串、图形和布局文件通知管理器(Notification Manager):使所有的应用程序能够在状态栏显示自定义警告。活动管理器(Activity Manager):管理应用程序生命周期,提供通用的导航回退功能。
Applications:安卓装配一个核心应用程序集合,包括电子邮件客户端、SMS 程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。安卓本身是一套软件堆迭(Software Stack),或称为软件迭层架构,迭层主要分成三层:操作系统、中间件、应用程序。
现有IOS应用开发架构由4部分组成,分别是:Cocoa Touch层(应用程序快速开发提供的一个类库,此库以一系列框架库的形式存在,支持开发人员使用用户界面元素构建图像化的事件驱动的应用程序,例如,可提供各种可视化控件供应用程序使用,如窗口、视图、视图控制器和各种用户控件)、Media层 (媒体层,主要提供图像、音频和视频服务)、Core Services层(核心服务层,可提供诸如字符串管理、集合管理、网络操作、URL(统一资源定位符)使用工具、联系人管理、偏好设置等服务,还提供一些基于硬件特性的服务,例如加速仪、陀螺仪等)和Core OS层(位于IOS应用开发架构的最底层,主要包括内核、文件系统、网络基础架构、安全管理、电源管理、设备驱动、线程管理、内存管理等,即该层提供了最低级的、系统级的服务)。
然而,本申请提供的一个实施例的应用程序开发架构如图3所示,在本实施例中,以面向CLR的开发框架为.net framework框架为例进行说明,.net framework框架可实现将CIL对应的中间代码在CLR环境下编译为原生代码,可将.net framework框架和中间代码进行打包,生成应用程序。
.net framework框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库为基础,支持多种编程语言(C#、C++和lua等)的开发,也为应用程序接口(API)提供了新功能和开发工具。CIL运行在.net framework之上,.net Framework运行在安卓或IOS之上。操作系统上安装.net framework后,即可将 CIL部署在操作系统上,如此,通过.netframework中的CLR以及对应的编译方式对CIL对应的代码进行编译,生成原生代码。CIL可以在任何支持.net framework的环境下运行。.net framework框架包括执行程序所需的项目:CLR、编译器(即时编译器和静态编译器)、垃圾收集器(GC)和类库(核心.NET基础类库)。
CIL是CLI(Common Language Infrastructure,通用语言基础结构)标准定义的一种可读性较低的语言,CIL可以在任何支持CLI的环境中运行。可以理解,.net framework框架是对CLI这一标准的实现。CLI定义了构成.net framework 基础结构的可执行代码以及代码运行时的环境规范,它定义了一个与语言无关的跨体系结构的运行环境,使得开发者可以用规范内定义的各种高级语言来创建应用程序,可以理解,CLI是一种规范,CLR是.netframework的核心,可以理解为是CLI这种标准的一种实现。CLI可以包括通用类型系统(CTS,规范.net framework中数据的类型)、元数据系统(Metadata,是.net framework中描述数据的数据)、通用语言规范(CLS,描述多语言之间进行交互的语言规范)和虚拟执行系统(VES,一个可运行受管理代码的运行环境)等。由于CIL能运行在所有支持CLI的环境中,例如,上述net framework运行时以及Mono运行时,和具体的平台或者CPU无关。这样就无需根据平台的不同而部署不同的内容了。可以理解,可通过面向CLR的编译器对源代码进行编译,获得上述CIL对应的中间代码,后续通过CLR对CIL对应的中间代码进行编译即可获得原生代码(即机器代码,CPU的目标执行代码,它的执行不依赖某个虚拟机或者解释器,编译后可直接依附操作系统运行,不需要经过虚拟机)。另外,Mono(自由开放源代码项目)则是对CLI的又一实现。
本实施例的应用程序的创建过程如下:
首先,通过编程语言编写所需的应用程序对应的源程序,例如,可选择C#、 C++、js或lua编程语言中任意一种语言编写源代码,进而可获取C#、C++、js 或lua编程语言中任意一种语言对应的源代码。
其次,通过面向CLR的编译器对源程序进行编译,得到通用中间语言(CIL) 对应的中间代码以及元数据,并根据CIL对应的中间代码和元数据生成托管模块。其中,CIL对应的中间代码以位元码的形式存在。
本实施例提供所见即所得的开发模式,应用程序架构提供应用开发所需要的各种UI控件,开发者通过拖拽就可以完成应用程序界面的开发工作。图3的应用程序模型中的模块使用CIL代码生成,因此可以被各种CRL(C语言运行库,指在运行时需要的库文件,这个文件一般包含函数的具体实现)语言调用。其中,提供应用界面的管理功能的window manager模块,实现用户界面的切换, view manager用来对控件进行统一管理,network manager用来进行网络交互。
然后,选择操作系统对应的.net framework框架(面向CLR的),即选择操作系统支持的编译方式的.net framework框架,从而可获取操作系统对应的.net framework框架。
再次,根据托管模块和选择的.net framework框架,生成操作系统下的应用程序安装包,安卓操作系统对应apk安装包,IOS操作系统对应ipa安装包。
得到的应用程序安装包可在对应操作系统上安装运行,应用程序在运行时,可通过extension模块(扩展模块)调用安卓或IOS的相关接口,例如,电话、短信和摄像等功能,需要调用安卓或IOS的相关接口才能实现。
在生成应用程序安装包后,可将其发送至服务器用,用户终端通过访问服务器可下载对应版本的应用程序安装包。在用户终端上根据应用程序安装包进行应用程序的安装,即可运行应用程序。
另外,本实施例为了确保应用体验的一致性和开发的高效性,实现了应用程序开发需要使用到的与平台无关的组件,如UI控件、图形、网络等,实现了一套应用程序框架,其使用CRL开发编译为CIL代码的托管模块,使得任意 CLR语言都可以调用。平台相关功能,如电话、短信、摄像等需要通过扩展形式调用安卓和IOS相关接口实现。
另外,面向CLR的开放框架还可选择mono框架,mono框架可实现将CIL 对应的中间代码在CLR环境下编译为原生代码。mono框架包括C#编程语言的编译器、CLR和类库。能够使得开发人员使用C#开发应用程序。其目标是创建一系列符合ECMA(European ComputerManufactures Association,欧洲计算机制造联合会)标准的.net开发工具。Mono项目不仅可以运行于Windows系统内,还可以运行于Linux系统,FreeBSD系统,Unix系统,Mac OS X系统和Solaris 系统内。
通过获取操作系统对应的mono框架,并基于中间代码和操作系统对应的 mono框架,可打包生成操作系统对应的应用程序。
需要说明的是,面向CLR的开发框架可以采用.net framework框架或mono 框架,但不限于此,有包括CLR且能通过CLR将CIL对应的中间代码编译生成可执行的原生代码的开发框架均可。
在一个实施例中,如图4所示,提供一种应用程序创建装置,包括:
源代码获取模块410,用于获取面向CLR的源代码。
编译模块420,用于对源代码进行编译,获得面向CLR的通用中间语言对应的中间代码。
框架获取模块430,用于获取操作系统对应的面向CLR的开发框架,其中,源代码与操作系统对应。
应用程序生成模块440,应用程序生成模块,用于基于中间代码以及面向 CLR的开发框架,生成操作系统对应的应用程序。
上述应用程序创建装置,首先,获取面向CLR的源代码,并将其编译为面向CLR的通用中间语言对应的中间代码,确保中间代码后续可被CLR编译。由于操作系统的多样性,为确保后续创建的应用程序能在各操作系统上运行,在源代码编译为通用中间语言对应的中间代码后,针对操作系统,获取对应的开发框架,再对中间代码以及开发框架进行打包操作,生成该操作系统下的应用程序,即生成该操作系统对应版本的应用程序。即可采用面向CLR的源代码,基于其编译成的通用中间语言对应的中间代码结合不同平台(不同操作系统) 对应的开发框架,生成不同平台对应的应用程序。可以理解,使用同样编程语言的源程序只要其为CLR支持的编程语言对应的源程序(即面向CLR的源程序),即可创建不同平台下的不同版本的应用程序,针对同一种应用程序,无需再对每一种操作系统采用不同的编程语言进行创建,无需再针对不同平台通过不同编程语言来创建对应的应用程序,减少工作量,提高应用程序开发效率。
在其中一个实施例中,上述应用程序创建装置,还包括托管生成模块。
编译模块,还用于获得对源代码进行编译得到的元数据,其中,元数据与中间代码对应。
托管生成模块,用于根据中间代码以及元数据生成托管文件。
应用程序生成模块,用于基于托管文件以及面向CLR的开发框架,生成操作系统对应的应用程序。
在其中一个实施例中,上述应用程序创建装置,还包括:环境建立模块。
环境建立模块,用于建立软件开发环境。
源代码获取模块,用于获取在软件开发环境下的面向CLR的源代码。
在其中一个实施例中,上述应用程序创建装置,框架获取模块,用于响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取选择操作对应的操作系统的面向CLR的开发框架。
在其中一个实施例中,操作系统为安卓操作系统或IOS操作系统。
安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
关于应用程序创建装置的具体限定可以参见上文中对于应用程序创建方法的限定,在此不再赘述。上述应用程序创建装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是图1中的终端10,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序创建方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取面向CLR的源代码;
对源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,源代码与操作系统对应;
基于中间代码以及面向CLR的开发框架,生成操作系统对应的应用程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获得对源代码进行编译得到的元数据,其中,元数据与中间代码对应;
打包中间代码以及面向CLR的开发框架之前,还包括:根据中间代码以及元数据生成托管文件;
基于中间代码以及面向CLR的开发框架,包括:基于托管文件以及面向CLR 的开发框架,生成操作系统对应的应用程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取面向CLR的源代码之前,包括:建立软件开发环境;
获取面向CLR的源代码,包括:获取在软件开发环境下的面向CLR的源代码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取操作系统对应的面向CLR的开发框架,包括:响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取选择操作对应的操作系统的面向CLR的开发框架。
在一个实施例中,面向CLR的开发框架为.net framework框架和mono框架中的任意一种。
在一个实施例中,操作系统为安卓操作系统或IOS操作系统;
安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取面向CLR的源代码;
对源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,源代码与操作系统对应;
基于中间代码以及面向CLR的开发框架,生成操作系统对应的应用程序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获得对源代码进行编译得到的元数据,其中,元数据与中间代码对应;
基于中间代码以及面向CLR的开发框架之前,还包括:根据中间代码以及元数据生成托管文件;
基于中间代码以及面向CLR的开发框架,包括:基于托管文件以及面向CLR 的开发框架,生成操作系统对应的应用程序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取面向CLR的源代码之前,包括:建立软件开发环境;
获取面向CLR的源代码,包括:获取在软件开发环境下的面向CLR的源代码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取操作系统对应的面向CLR的开发框架,包括:响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取选择操作对应的操作系统的面向CLR的开发框架。
在一个实施例中,面向CLR的开发框架为.net framework框架和mono框架中的任意一种。
在一个实施例中,操作系统为安卓操作系统或IOS操作系统;
安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路 (Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM) 等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种应用程序创建方法,其特征在于,包括:
获取面向CLR的源代码;
对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
2.根据权利要求1所述的应用程序创建方法,其特征在于,
还包括:获得对所述源代码进行编译得到的元数据,其中,所述元数据与所述中间代码对应;
基于所述中间代码以及所述面向CLR的开发框架之前,还包括:根据所述中间代码以及所述元数据生成托管文件;
基于所述中间代码以及所述面向CLR的开发框架,包括:基于所述托管文件以及所述面向CLR的开发框架,生成操作系统对应的应用程序。
3.根据权利要求1所述的应用程序创建方法,其特征在于,
所述获取面向CLR的源代码之前,包括:建立软件开发环境;
所述获取面向CLR的源代码,包括:获取在所述软件开发环境下的所述面向CLR的源代码。
4.根据权利要求1-3中任意一项所述的应用程序创建方法,其特征在于,
所述获取操作系统对应的面向CLR的开发框架,包括:响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取所述选择操作对应的所述操作系统的面向CLR的开发框架。
5.根据权利要求1所述的应用程序创建方法,其特征在于,所述操作系统为安卓操作系统或IOS操作系统;
所述安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,所述IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
6.一种应用程序创建装置,其特征在于,包括:
源代码获取模块,用于获取面向CLR的源代码;
编译模块,用于对所述源代码进行编译,获得面向CLR的通用中间语言对应的中间代码;
框架获取模块,用于获取操作系统对应的面向CLR的开发框架,其中,所述源代码与所述操作系统对应;
应用程序生成模块,用于基于所述中间代码以及所述面向CLR的开发框架,生成所述操作系统对应的应用程序。
7.根据权利要求6所述的应用程序创建装置,其特征在于,还包括托管生成模块;
所述编译模块,还用于获得对所述源代码进行编译得到的元数据,其中,所述元数据与所述中间代码对应;
所述托管生成模块,用于根据所述中间代码以及所述元数据生成托管文件;
所述应用程序生成模块,用于基于所述托管文件以及所述面向CLR的开发框架,生成操作系统对应的应用程序。
8.根据权利要求6所述的应用程序创建装置,其特征在于,还包括:环境建立模块;
所述环境建立模块,用于建立软件开发环境;
所述源代码获取模块,用于获取在所述软件开发环境下的所述面向CLR的源代码。
9.根据权利要求6-8中任意一项所述的应用程序创建装置,其特征在于,
所述框架获取模块,用于响应对预先存储的各操作系统对应的面向CLR的开发框架的选择操作,获取所述选择操作对应的所述操作系统的面向CLR的开发框架。
10.根据权利要求6所述的应用程序创建装置,其特征在于,所述操作系统为安卓操作系统或IOS操作系统;
所述安卓操作系统对应的面向CLR的开发框架的编译方式包括即时编译和静态编译,所述IOS操作系统对应的面向CLR的开发框架的编译方式包括全静态编译。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5中任意一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述权利要求1-5中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810130356.5A CN110134378B (zh) | 2018-02-08 | 2018-02-08 | 应用程序创建方法及装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810130356.5A CN110134378B (zh) | 2018-02-08 | 2018-02-08 | 应用程序创建方法及装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110134378A true CN110134378A (zh) | 2019-08-16 |
CN110134378B CN110134378B (zh) | 2022-02-22 |
Family
ID=67567890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810130356.5A Active CN110134378B (zh) | 2018-02-08 | 2018-02-08 | 应用程序创建方法及装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134378B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489128A (zh) * | 2019-08-23 | 2019-11-22 | 第四范式(北京)技术有限公司 | 将特征计算脚本转换成底层程序代码的方法和设备 |
CN110852259A (zh) * | 2019-11-08 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 活体识别方法、系统、装置、设备及计算机可读存储介质 |
CN111324381A (zh) * | 2020-02-17 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 开发系统、方法、装置、计算机设备及存储介质 |
CN111538496A (zh) * | 2020-01-17 | 2020-08-14 | 上饶市维斯顿数字科技有限公司 | 一种应用界面的操作方法 |
CN111880779A (zh) * | 2020-07-17 | 2020-11-03 | 盛视科技股份有限公司 | 一种系统应用源代码生成方法及装置 |
CN112199097A (zh) * | 2020-10-13 | 2021-01-08 | 深圳市广和通无线股份有限公司 | 安装包生成方法、装置、计算机设备和存储介质 |
CN112653836A (zh) * | 2020-12-14 | 2021-04-13 | 珠海格力智能装备有限公司 | 图像采集方法和装置、存储介质、处理器 |
CN112748914A (zh) * | 2020-03-18 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN113377638A (zh) * | 2021-06-11 | 2021-09-10 | 北京百度网讯科技有限公司 | 性能测试工具的生成方法和装置 |
WO2021179842A1 (zh) * | 2020-03-13 | 2021-09-16 | 华为技术有限公司 | 一种集成开发环境的构建方法、装置、设备及介质 |
CN113687833A (zh) * | 2021-08-09 | 2021-11-23 | 深圳市汇川技术股份有限公司 | 混合编译方法、混合编译系统、编译器及存储介质 |
CN114051046A (zh) * | 2021-11-16 | 2022-02-15 | 北京百度网讯科技有限公司 | 云数据下发方法、相关装置及计算机程序产品 |
CN114168115A (zh) * | 2020-09-10 | 2022-03-11 | 荣耀终端有限公司 | 通信系统、应用下载方法及设备 |
CN117075907B (zh) * | 2023-08-07 | 2024-02-23 | 北京冠群信息技术股份有限公司 | 应用程序编译方法、系统、编译器及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534311A (zh) * | 2016-11-15 | 2017-03-22 | 江西博微新技术有限公司 | 配网设计现场定位勘测app工具及配套web服务端系统 |
CN106933610A (zh) * | 2015-12-30 | 2017-07-07 | 北京金山安全软件有限公司 | 一种应用程序安装包生成方法、装置及电子设备 |
-
2018
- 2018-02-08 CN CN201810130356.5A patent/CN110134378B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933610A (zh) * | 2015-12-30 | 2017-07-07 | 北京金山安全软件有限公司 | 一种应用程序安装包生成方法、装置及电子设备 |
CN106534311A (zh) * | 2016-11-15 | 2017-03-22 | 江西博微新技术有限公司 | 配网设计现场定位勘测app工具及配套web服务端系统 |
Non-Patent Citations (3)
Title |
---|
JEFFREY RICHTER著,周靖译: ""CLR基础"", 《CLR VIA C# (第4版)》 * |
特洛伊-MICRO: ""Xamarin 跨平台机制原理剖析"", 《HTTPS://WWW.CNBLOGS.COM/MICRO-CHEN/P/5173344.HTML》 * |
葡萄城控件: ""Xamarin 技术全解析"", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1017263》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489128A (zh) * | 2019-08-23 | 2019-11-22 | 第四范式(北京)技术有限公司 | 将特征计算脚本转换成底层程序代码的方法和设备 |
CN110489128B (zh) * | 2019-08-23 | 2023-08-29 | 第四范式(北京)技术有限公司 | 将特征计算脚本转换成底层程序代码的方法和设备 |
CN110852259A (zh) * | 2019-11-08 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 活体识别方法、系统、装置、设备及计算机可读存储介质 |
CN111538496A (zh) * | 2020-01-17 | 2020-08-14 | 上饶市维斯顿数字科技有限公司 | 一种应用界面的操作方法 |
CN111324381B (zh) * | 2020-02-17 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 开发系统、方法、装置、计算机设备及存储介质 |
CN111324381A (zh) * | 2020-02-17 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 开发系统、方法、装置、计算机设备及存储介质 |
WO2021179842A1 (zh) * | 2020-03-13 | 2021-09-16 | 华为技术有限公司 | 一种集成开发环境的构建方法、装置、设备及介质 |
CN112748914B (zh) * | 2020-03-18 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN112748914A (zh) * | 2020-03-18 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN111880779A (zh) * | 2020-07-17 | 2020-11-03 | 盛视科技股份有限公司 | 一种系统应用源代码生成方法及装置 |
CN111880779B (zh) * | 2020-07-17 | 2023-12-26 | 盛视科技股份有限公司 | 一种系统应用源代码生成方法及装置 |
CN114168115A (zh) * | 2020-09-10 | 2022-03-11 | 荣耀终端有限公司 | 通信系统、应用下载方法及设备 |
CN112199097A (zh) * | 2020-10-13 | 2021-01-08 | 深圳市广和通无线股份有限公司 | 安装包生成方法、装置、计算机设备和存储介质 |
CN112199097B (zh) * | 2020-10-13 | 2024-01-05 | 深圳市广和通无线股份有限公司 | 安装包生成方法、装置、计算机设备和存储介质 |
CN112653836A (zh) * | 2020-12-14 | 2021-04-13 | 珠海格力智能装备有限公司 | 图像采集方法和装置、存储介质、处理器 |
CN113377638A (zh) * | 2021-06-11 | 2021-09-10 | 北京百度网讯科技有限公司 | 性能测试工具的生成方法和装置 |
CN113377638B (zh) * | 2021-06-11 | 2023-10-27 | 北京百度网讯科技有限公司 | 性能测试工具的生成方法和装置 |
CN113687833A (zh) * | 2021-08-09 | 2021-11-23 | 深圳市汇川技术股份有限公司 | 混合编译方法、混合编译系统、编译器及存储介质 |
CN114051046A (zh) * | 2021-11-16 | 2022-02-15 | 北京百度网讯科技有限公司 | 云数据下发方法、相关装置及计算机程序产品 |
CN117075907B (zh) * | 2023-08-07 | 2024-02-23 | 北京冠群信息技术股份有限公司 | 应用程序编译方法、系统、编译器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110134378B (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134378A (zh) | 应用程序创建方法及装置、计算机设备及存储介质 | |
US10839141B2 (en) | System and method for provisioning a mobile software application to a mobile device | |
CN110020307B (zh) | 一种客户端视图的绘制方法和装置 | |
CN102402427B (zh) | 一种Java应用程序的更新方法及装置 | |
CN107092473B (zh) | 桌面应用开发方法及设备 | |
US8479150B2 (en) | Compositional modeling of integrated systems using event-based legacy applications | |
Wu et al. | Porting mobile web application engine to the android platform | |
WO2018032653A1 (zh) | 一种Java卡应用的功能实现方法及装置 | |
CN109240697A (zh) | 调用处理方法及装置、存储介质 | |
CN113918195A (zh) | 应用界面更新方法、装置、电子设备及可读存储介质 | |
CN104699503A (zh) | 一种替换安卓系统中函数的执行逻辑的方法及装置 | |
CN116974620A (zh) | 应用程序的生成方法、运行方法以及相应的装置 | |
Botturi et al. | Model-driven design for the development of multi-platform smartphone applications | |
JP2005182562A (ja) | コンパイル方法および装置、ならびにコンパイラ | |
KR101416096B1 (ko) | 하이브리드 웹 어플리케이션 개발을 위한 호환성 높은 플러그인 시스템 | |
CN108228266B (zh) | 一种Android插件框架下不同插件间启动Fragment组件的方法和装置 | |
CN115080098A (zh) | 基于JavaScript的Flutter热更新方法、装置、设备及介质 | |
CN101944120A (zh) | 一种无线标记语言脚本的执行方法及装置 | |
Debbabi et al. | Embedded Java security: security for mobile devices | |
CN116700694B (zh) | 小程序引擎 | |
CN102375740A (zh) | 手持装置及利用其实现Java组件与自定义构件互操作的方法 | |
Kim et al. | On-demand materialization of aspects for application development | |
CN118069137A (zh) | 页面渲染方法、装置、计算机设备及计算机可读存储介质 | |
JavaFX | Introduction to JavaFX | |
Kereki | Web 2.0 development with the Google web toolkit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |