[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN104317587A - 面向安卓移动设备的程序自动生成方法 - Google Patents

面向安卓移动设备的程序自动生成方法 Download PDF

Info

Publication number
CN104317587A
CN104317587A CN201410566367.XA CN201410566367A CN104317587A CN 104317587 A CN104317587 A CN 104317587A CN 201410566367 A CN201410566367 A CN 201410566367A CN 104317587 A CN104317587 A CN 104317587A
Authority
CN
China
Prior art keywords
android
page
file
control
program
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.)
Pending
Application number
CN201410566367.XA
Other languages
English (en)
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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201410566367.XA priority Critical patent/CN104317587A/zh
Publication of CN104317587A publication Critical patent/CN104317587A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向安卓移动设备的程序自动生成方法,目的是提供一种可通过快速简便的可视化定制自动生成所需要的安卓应用程序的方法。技术方案是设计由安卓程序可视化定制器、安卓页面解析器、安卓程序权限文件生成器、安卓Java代码文件生成器、安卓项目生成器、安卓程序编译部署器组成的程序自动生成工具;安卓程序可视化定制器生成安卓页面信息XML文件;安卓页面解析器解析安卓页面信息XML文件;安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器、安卓基类代码文件生成器分别生成相应文件;安卓项目生成器创建安卓项目;安卓程序编译部署器编译部署安卓程序到移动设备。采用本发明可在分钟级自动生成程序。

Description

面向安卓移动设备的程序自动生成方法
技术领域
本发明属于移动互联网领域,涉及一种应用程序自动生成的方法,特别涉及一种应用于安卓(Android)移动设备的应用程序自动生成的方法。
背景技术
随着移动互联网的发展,手机、平板电脑等移动设备逐渐成为人们生活中不可或缺的日常工具。同时移动设备特有的移动性和便捷性,使得大量PC平台上已有的应用和信息采集等对便捷性要求很高的应用开始出现在移动设备上。但目前这类应用的开发存在三个方面的问题:1)应用开发需要面向安卓等新的软件平台的专业人士,开发技术门槛高;2)应用开发按照传统软件开发流程,耗时过长;3)前两个方面导致了应用开发的成本过高。因此,迫切需要一种面向移动设备可自动生成程序的方法,该方法需要支持直接转换已有程序,或者接收用户的傻瓜式可视化定制后自动生成应用程序。
移动设备程序与传统PC程序的差别在于界面的布局、事件的响应处理等方面,实现上述程序自动生成方法的难点在于两个方面:1)输入的读取与解析。自动化需要读取已有程序代码,或者是获取用户可视化定制程序的信息,并将其解析为构建安卓程序所需的元素信息,具有一定难度。2)代码的自动转换。如何将上述构建安卓程序所需的元素信息,自动装换并生成安卓代码,需要研究代码自动生成技术,具有一定的技术挑战。
由于移动设备普及时间短,以及上述面向移动设备程序的自动生成所存在的技术难度,导致目前尚未出现相关的工具和方法。因此,如何基于当前使用最为广泛的安卓设备,提供一种面向安卓移动设备的程序自动生成方法,减小移动设备程序开发的时间和成本,成为本领域技术人员极为关注的技术问题。
发明内容
本发明要解决的技术问题是:提供一种面向安卓移动设备的程序自动生成方法,可使用户通过快速简便的可视化定制,自动生成所需要的安卓应用程序。
第一步,设计一种面向安卓移动设备的程序自动生成工具,包括:安卓程序可视化定制器、安卓页面解析器、安卓程序权限文件生成器、安卓Java代码文件生成器、安卓项目生成器、安卓程序编译部署器。
安卓程序可视化定制器是用于定制安卓程序的功能和界面的软件模块,它供用户按照需求,以鼠标拖拽控件和键盘输入的方式,或者通过读取已有程序内容的方式,定制一组页面(一个满屏显示的内容称为一个页面),每个页面包含可输入信息的各类控件:文本控件、数值控件、时间控件、单选控件、多选控件、下拉框控件、拍照控件、录像控件、录音控件、GPS控件等,定制完成后生成一个包含上述一组页面信息的XML文件,并将包含这组页面信息的XML文件传送给安卓页面解析器。
安卓页面解析器是负责解析包含页面信息的XML文件的软件模块。它解析包含页面信息的XML文件,获得页面、页面数量K、各个页面所包含的控件及其类型、布局位置、各类型控件相关属性,并将解析所得信息传送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器。
安卓程序权限文件生成器是依据安卓页面解析器的输出信息生成安卓程序权限文件的软件模块。该模块从安卓页面解析器处获得所有页面中的所有控件类型,然后求取所有控件类型的并集,依据所有控件类型的并集中每个控件类型所对应的权限需求,将所有权限需求合并后产生程序所需的权限,最后生成安卓程序权限文件(即Google开源安卓项目中规定的权限文件),并将该安卓程序权限文件传送给安卓项目生成器。
安卓Java代码文件生成器是依据安卓页面解析器的输出信息生成安卓Java代码文件的软件模块。该模块依据解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个Java代码文件,并将所有Java代码文件传送给安卓项目生成器。
安卓布局XML文件生成器是依据安卓页面解析器的输出信息生成安卓布局XML文件的软件模块。该模块依据安卓页面解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个页面布局XML文件,并将所有页面布局XML文件传送给安卓项目生成器。
安卓基类代码文件生成器是依据安卓页面解析器的输出信息生成安卓基类代码文件的软件模块。该模块依据安卓页面解析器的输出信息提供支持各种类型控件的页面基类代码文件(指实现包括各种类型控件的响应函数代码、控件值显示和数据库访问等功能的Java公共父类代码文件),并将页面基类代码文件传送给安卓项目生成器。
安卓项目生成器是负责创建完整安卓项目的软件模块。该模块创建符合安卓项目格式的文件夹,并接收安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器的输出文件,按照安卓项目的编译要求,形成完整的安卓项目,最后将安卓项目送给安卓编译部署器。
安卓程序编译部署器是负责编译安卓项目并将其部署到移动设备的软件模块。该模块通过安卓编译命令(即Google开源安卓项目中提供的apkbuilder命令)将完整的安卓项目编译生成为安卓应用程序apk文件(即Google开源安卓项目中标准的应用程序文件),并通过部署命令(即Google开源安卓项目中提供的adb push命令)将apk文件安装部署到移动设备上。
第二步,安卓程序可视化定制器生成安卓页面信息XML文件。安卓程序可视化定制器从鼠标和键盘接收输入(通过鼠标点击或拖拽增加页面及页面中的控件,通过键盘输入确定页面名称、控件名称、控件取值类型和范围等),或者读取其它操作系统已有程序内容,确定信息页面的数量、页面内控件的类型和数量,页面的名称属性,以及页面内控件的名称、取值范围、列表选项属性,然后依据上述信息为每个页面创建一个安卓页面信息XML文件,并将所有安卓页面信息XML文件送给安卓页面解析器。
第三步,安卓页面解析器解析安卓页面信息XML文件。安卓页面解析器读入来自安卓程序可视化定制器生成的安卓页面信息XML文件,通过XML解析器(如开源组织Apache的Xerces解析器)解析安卓页面信息XML文件,得到页面总数K,以及每个页面Pi(1≤i≤K)中的控件数目Li,然后进一步对页面Pi进行解析,获得获得Pi的权限信息、控件类型及属性信息和布局信息,并将这些信息同时发送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器。
第四步,安卓程序权限文件生成器生成安卓程序权限文件,安卓Java代码文件生成器生成安卓Java代码文件,安卓布局XML文件生成器生成安卓XML布局文件,安卓基类代码文件生成器生成安卓基类代码文件,这4种文件并行生成,并都发送给安卓项目生成器。
4.1安卓程序权限文件生成器生成安卓程序权限文件的方法是:
安卓程序权限文件生成器从安卓页面解析器接收每个页面的权限信息,对每个页面的权限信息取并集后,形成整个安卓程序的权限信息,并按照安卓项目标准的权限文件的格式(Google开源安卓项目约定的)生成安卓程序权限文件,最后发送给安卓项目生成器。
4.2安卓Java代码文件生成器生成安卓Java代码文件的方法是:
安卓Java代码文件生成器从安卓页面解析器接收每个页面的控件信息,采用文本模板代码自动生成技术(如开源Java模板引擎FreeMaker),针对每个页面,依据Java语法,创建一个安卓Activity类,并为每个控件创建一个与其类型匹配的成员变量,生成该变量的初始化代码、事件响应函数、数据缓存函数、数据存储函数代码,最终为每个页面生成一个安卓Java代码文件,将所有安卓Java代码文件发送给安卓项目生成器。
4.3安卓布局XML文件生成器生成安卓XML布局文件的方法是:
安卓布局XML文件生成器从安卓页面解析器接收每个页面的布局信息,采用文本模板技术(如微软的T4文本模板技术),针对每个页面,依据安卓XML布局文件的语法,为每个控件创建一个对应类型的安卓布局资源对象,生成该资源对象的编号、长度、位置属性代码,最终为每个页面生成一个XML布局文件,并将所有XML布局文件发送给安卓项目生成器。
4.4安卓基类代码文件生成器生成安卓基类代码文件的方法是:
安卓基类代码文件生成器从安卓页面解析器接收每个页面的控件信息,首先通过合并同类控件的方式得到所有页面所包含的控件类型的并集,然后采用文本模板技术,依据Java语法,创建一个公共的安卓基类Activity,并生成各个类型控件的初始化函数、事件响应函数、公共基类成员变量的代码,最终形成安卓基类代码文件,并将该安卓基类代码文件发送给安卓项目生成器。
第五步,创建安卓项目。
安卓项目生成器依据安卓项目所需的标准文件夹结构,创建项目根文件夹、src文件夹、res文件夹、gen文件夹,并将从安卓程序权限文件生成器接收的安卓程序权限文件拷贝至根文件夹,将从安卓Java代码文件生成器接收的安卓Java代码文件拷贝至src文件夹,将从安卓布局XML文件生成器接收的安卓XML布局文件拷贝至res文件夹,将从安卓基类代码文件生成器接收的安卓基类代码文件拷贝至src文件夹,形成完整的安卓项目,并将完整的安卓项目发送给安卓程序编译部署器。
第六步,编译部署安卓程序到移动设备。
6.1安卓程序编译部署器从安卓项目生成器接收完整的安卓项目;
6.2使用安卓软件开发包提供的aapt程序生成R.java类文件,使用Java编译器编译所有java文件,使用安卓软件开发包提供的dx.bat命令生成classes.dex文件;
6.3使用aapt程序生成资源包文件及未签名的安卓程序安装文件;
6.4使用Java开发包的jarsigner程序对未签名的安卓程序安装文件进行签名后生成安卓程序;
6.5使用安卓软件开发包提供的apkbuilder和adb push命令命令将安卓程序部署到移动设备。
与现有技术相比,采用本发明可达到以下技术效果:
1)安卓程序可视化定制器因具备所见即所得的特点,使安卓程序的设计者可随时按需定制,并在分钟级完成程序的自动生成,方便设计者不断改进设计,极大优化了程序设计过程,提高了开发效率。
2)本发明的第二至第六步,使得整个程序的开发过程只包含设计者的可视化设计时间,无需额外的程序员的参与,所以整个程序的开发成本降低为一次性购买该安卓程序自动生成工具的成本,而开发测试时间缩短为0,极大提高了程序的开发效率和质量。
3)所生成的安卓程序,因为每个控件的类型和属性定义可有效约束最终使用者录入现场信息的格式、范围,所以在信息采集等类应用中,可有效减少信息采集的出错率,提高信息采集的质量,同时能提供图片、音频、视频、GPS等丰富的信息类型,极大提升了信息的丰富程度和自动化采集程度。
附图说明
图1是本发明面向安卓移动设备的程序自动生成方法的总体流程图;
图2是本发明第一步构建的面向安卓移动设备的程序自动生成工具的结构示意图。
具体实施方案
以下结合附图,具体说明本发明。
本发明公开了一种面向安卓移动设备的程序自动生成方法,图1为其流程图,它包括:
第一步,设计一种面向安卓移动设备的程序自动生成工具,包括:安卓程序可视化定制器、安卓页面解析器、安卓程序权限文件生成器、安卓Java代码文件生成器、安卓项目生成器、安卓程序编译部署器。具体结构如图2所示。
安卓程序可视化定制器是用于定制安卓程序的功能和界面的软件模块,它供用户按照需求,以鼠标拖拽控件和键盘输入的方式,或者通过读取已有程序内容的方式,定制一组页面(一个满屏显示的内容称为一个页面),每个页面包含可输入信息的各类控件:文本控件、数值控件、时间控件、单选控件、多选控件、下拉框控件、拍照控件、录像控件、录音控件、GPS控件等,定制完成后生成一个包含上述一组页面信息的XML文件,并将包含该XML文件传送给安卓页面解析器。
安卓页面解析器是负责解析包含页面信息的XML文件的软件模块。它将解析包含页面信息的XML文件,获得页面数量K、各个页面所包含的控件及其类型、布局位置、各类型控件相关属性,并将解析所得信息传送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器。
安卓程序权限文件生成器是依据安卓页面解析器的输出信息生成安卓程序权限文件的软件模块。该模块从安卓页面解析器处获得所有页面中的所有控件类型,然后求取所有控件类型的并集,依据所有控件类型的并集中每个控件类型所对应的权限需求,将所有权限需求合并后产生程序所需的权限,生成安卓程序权限文件,并将该权限文件传送给安卓项目生成器。
安卓Java代码文件生成器是依据安卓页面解析器的输出信息生成安卓Java代码文件的软件模块。该模块依据解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个Java代码文件,并将所有Java代码文件传送给安卓项目生成器。
安卓布局XML文件生成器是依据安卓页面解析器的输出信息生成安卓布局XML文件的软件模块。该模块依据解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个页面布局XML文件,并将所有页面布局XML文件传送给安卓项目生成器。
安卓基类代码文件生成器是依据安卓页面解析器的输出信息生成安卓基类代码文件的软件模块。该模块依据解析器的输出信息提供支持各种类型控件的页面基类代码文件,包括各种类型控件的响应函数代码、控件值显示和数据库访问代码,并将安卓基类代码文件传送给安卓项目生成器。
安卓项目生成器是负责创建完整安卓项目的软件模块。该模块创建符合安卓项目格式的文件夹,并将接收安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器的输出文件,按照安卓项目的编译要求,形成完整的安卓项目,最后将安卓项目送给安卓编译部署器。
安卓程序编译部署器是负责编译安卓项目并将其部署到移动设备的软件模块。该模块通过安卓编译命令将完整的安卓项目编译生成为安卓应用程序apk文件,并通过部署命令将apk文件安装部署到移动设备上。
第二步,安卓程序可视化定制器生成安卓页面信息XML文件。安卓程序可视化定制器首先接收来自鼠标和键盘的输入,或者读取其它操作系统已有程序内容的方式,确定信息页面的数量、页面内控件的类型和数量,信息页面的名称属性,以及页面内控件的名称、取值范围、列表选项属性,然后依据上述信息为每个页面创建一个安卓页面信息XML文件,并将所有安卓页面信息XML文件送给安卓页面解析器。具体进一步包括以下步骤:
2.1确定页面和控件:
2.1.1由键盘输入获得页面总数K,创建K个空白页面Pi(1≤i≤K),所创建的页面位于安卓程序可视化定制器左侧页面列表区;
2.1.2针对每个页面,通过鼠标从可视化定制器右侧控件列表区中依次选择一种控件,放入可视化定制器中间的页面显示区中,例如可选择文本控件、数值控件、时间控件、单选控件、多选控件、下拉框控件、拍照控件、录像控件、录音控件、GPS控件;
2.1.3对每个控件,通过鼠标双击控件,设置该控件相关的属性,例如对文本控件,可设置控件名称、文本长度范围、文本内容格式等,对下拉框控件,可设置下拉选项列表项目,比如维修类型下拉框,可设置为“大修”、“中修”、“小修”等列表项目。在该设计过程中,还可通过鼠标选择设置要部署的移动设备屏幕大小规格来查看页面实际显示效果,从而获得所见即所得的良好用户体验。
2.2生成安卓页面信息XML文件。将所有页面及其控件的信息,存储到一个页面信息XML文件pages.xml中。pages.xml根元素为Pages,Pages包含多个页面元素Page,Page包含多个控件元素Control,每个Control包含类型相关的属性信息。页面信息XML文件pages.xml示例如下:
页面信息XML文件pages.xml文件中包含两个页面,id分别为1和2。其中id为1的页面包含6个控件,id为2的页面内容类似,在此省略了相关信息。id为1的页面包含6个控件,分别为:控件1为字符串型的文本框,字符长度在1至64之间,内容为“人员”。控件2为数值型文本框,数值范围为18至60之间,内容为“年龄”。控件3为多选一选择框,内容为“性别”,选项只能在“男”“女”之间选择。控件4为检查框,内容为“婚否”,默认值为选中。控件5为拍照控件,内容为“个人照片”,存储格式为该照片存储的路径(字符串),需要获得拍照权限。控件6为音频录制控件,内容为“个人视频”,存储格式为该视频存储的路径(字符串),需要获得音频录制权限。
除示例文件中控件类型外,还可支持时间、GPS数据、视频数据等控件类型。由上述页面和控件信息可看出,通过限定控件输入值的格式和范围,可以有效减少数据输入者出错的概率,提高数据收集的质量。
第三步,安卓页面解析器解析安卓页面信息XML文件。安卓页面解析器读入来自安卓程序可视化定制器生成的一组页面信息XML文件,通过XML解析器(如开源组织Apache的Xerces解析器)解析页面信息XML文,从而获得每个页面的权限信息、控件类型及属性信息和布局信息,并将该信息同时发送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器。
在解析安卓程序可视化定制器生成的页面信息XML文件后,首先获得页面总数K,以及每个页面Pi(1≤i≤K)中的控件数目Li,然后进一步对每个页面Pi可获得以下三个方面的信息:
页面Pi的控件类型及属性信息:首先获取页面Pi的所有控件集合Ci=∪{Cij},1≤j≤Li,Cij为页面Pi的第j个控件。然后获取每个控件Cij的除权限外的所有属性信息。
页面Pi的布局信息:依据控件Cij的id编号先后次序,确定控件在页面的上下位置。
页面Pi的权限信息:在获得页面Pi的每个控件Cij的的权限需求后,对所需权限求并集,即获得页面Pi的权限信息集合:Ai=∪{Aij},1≤i≤K,1≤j≤Li,其中Aij为Cij的权限需求项。当控件本身没有权限需求时,如上述示例XML的控件1-4都没有权限需求,则权限项目都为空,即A11、A12、A13、A14都为空,而A15=“Camera”,A16=“Audio”,可得页面P1的权限集合:A1={“Camera”,“Audio”}。
最后将上述信息同时发送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器。
第四步,安卓程序权限文件生成器生成安卓程序权限文件,安卓Java代码文件生成器生成安卓Java代码文件,安卓布局XML文件生成器生成安卓XML布局文件,安卓基类代码文件生成器生成安卓基类代码文件,这4种文件并行生成,并发送给安卓项目生成器。
4.1安卓程序权限文件生成器生成安卓程序权限文件的方法是:
安卓程序权限文件生成器从安卓页面解析器接收每个页面的权限信息,对每个页面的权限信息取并集后,形成整个安卓程序的权限信息,并按照安卓项目标准的权限文件的格式(Google开源安卓项目约定的)生成安卓程序权限文件,最后发送给安卓项目生成器。
具体步骤如下:
依据每个页面Pi所需的权限信息Ai,对所有页面的权限信息取并集后,形成整个安卓程序的权限信息A=∪{Ai},1≤i≤K,并按照安卓权限文件的格式将权限信息A生成安卓程序权限文件Manifest.xml。同时,确定依据哪个页面为程序启动页面,一般默认为第一个页面P1
所生成的程序权限文件Manifest.xml如下所示:
其中,Android.permission.CAMERA、Android.permission.AUDIO为多个页面的权限Ai取并集之后得到的,第一个页面P1对应的Activity.P1Activity的action属性为Android.intent.action.MAIN,表明P1为起始页面。
4.2安卓Java代码文件生成器生成安卓Java代码文件的方法是:
安卓Java代码文件生成器接收每个页面的控件信息,采用文本模板代码自动生成技术(如开源Java模板引擎FreeMaker),针对每个页面,依据Java语法,创建一个安卓Activity类,并为每个控件创建一个与其类型匹配的成员变量,生成该变量的初始化代码、事件响应函数、数据缓存函数、数据存储函数代码,最终为每个页面生成一个Java文件,将所有Java文件发送给安卓项目生成器。
具体过程是,依据每个页面的控件类型及属性信息,安卓Java代码文件生成器为每个页面Pi生成一个Java文件,命名为PiActivity.java,在PiActivity.java中为每个控件Cij创建一个对应类型的变量Vij,生成该变量的初始化代码、事件响应函数、数据缓存函数、数据存储函数代码。
4.3安卓布局XML文件生成器生成安卓XML布局文件的方法是:
安卓布局XML文件生成器接收每个页面的布局信息,采用文本模板技术,针对每个页面,依据安卓XML布局文件的语法,为每个控件创建一个对应类型的安卓布局资源对象,生成该资源对象的编号、长度、位置属性代码,最终为每个页面生成一个XML布局文件,并将所有文件发送给安卓项目生成器。
依据每个页面的布局信息,为每个页面Pi生成一个XML文件,命名为Pi.xml,在Pi.xml文件中为每个控件创建一组对应类型的布局代码,包含控件的编号、显示长度、位置等属性。如下所示为一个文本框所对应的示例:
该示例中分别定义了控件的名称为“姓名”,id为"+id/p1editText1",宽度为"wrap_content",高度为"wrap_content"。
4.4安卓基类代码文件生成器生成安卓基类代码文件的方法是:
安卓基类代码文件生成器接收每个页面的控件信息,首先通过合并同类控件的方式得到所有页面所包含的控件类型的并集,然后采用文本模板技术,依据Java语法,创建一个公共的安卓基类Activity,并生成各个类型控件的初始化函数、事件响应函数、公共基类成员变量的代码,最终形成安卓基类Activity代码文件,并将该文件发送给安卓项目生成器。
依据所有页面所需的控件类型的并集,生成基类代码文件。首先获取每个页面Pi的每个控件Cij的类型信息TCij,1≤i≤K,1≤j≤Li;然后计算所有控件类型信息的并集TC=∪{TCij};最后生成TC中所有类型控件的各自的初始化函数、事件响应函数、公共基类变量代码,形成TemplateActivity.java文件。
第五步,创建安卓项目。
安卓项目生成器依据安卓项目所需的标准文件夹结构,创建项目根文件夹、src文件夹、res文件夹、gen文件夹,并将接收自第三步的安卓程序权限文件拷贝至根文件夹,安卓Java代码文件拷贝至src文件夹,安卓XML布局文件拷贝至res文件夹,安卓基类代码文件拷贝至src文件夹,形成完整的安卓项目,并将其发送给安卓程序编译部署器。
依据安卓项目所需的文件夹结构、文件内容,生成src文件夹用于存放前述生成的PiActivity.java、TemplateActivity.java,生成res文件夹用于存放前述生成的Pi.xml,生成gen文件夹用于存放自动生成的资源文件,前述生成的权限文件安卓Manifest.xml存放于项目根目录下,用于说明编译选项的.classpath、.project、.settings、proguard.cfg、project.properties等存放于项目根目录下。
第六步,编译部署安卓程序到移动设备。安卓程序编译部署器接收完整的安卓项目,首先使用安卓软件开发包提供的aapt程序生成R.java类文件,使用Java编译器编译所有java文件,使用安卓软件开发包提供的dx.bat命令生成classes.dex文件,然后使用aapt程序生成资源包文件及未签名的安卓程序安装文件,然后使用Java开发包的jarsigner程序对未签名的安卓程序安装文件进行签名后生成安卓程序,最后使用安卓软件开发包提供的apkbuilder和adb push命令部署安卓程序到移动设备。

Claims (9)

1.一种面向安卓移动设备的程序自动生成方法,其特征在于包括以下步骤:
第一步,设计一种面向安卓移动设备的程序自动生成工具,包括:安卓程序可视化定制器、安卓页面解析器、安卓程序权限文件生成器、安卓Java代码文件生成器、安卓项目生成器、安卓程序编译部署器;
安卓程序可视化定制器是用于定制安卓程序的功能和界面的软件模块,它供用户按照需求,以鼠标拖拽控件和键盘输入的方式,或者通过读取已有程序内容的方式,定制一组页面,每个页面包含可输入信息的各类控件,定制完成后生成一个包含一组页面信息的XML文件,并将包含页面信息的该XML文件传送给安卓页面解析器;所述一个页面指一个满屏显示的内容;
安卓页面解析器是负责解析包含页面信息的XML文件的软件模块;它解析包含页面信息的XML文件,获得页面、页面数量K、各个页面所包含的控件及其类型、布局位置、各类型控件相关属性,并将解析所得信息传送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器;
安卓程序权限文件生成器是依据安卓页面解析器的输出信息生成安卓程序权限文件的软件模块;该模块从安卓页面解析器处获得所有页面中的所有控件类型,求取所有控件类型的并集,依据所有控件类型的并集中每个控件类型所对应的权限需求,将所有权限需求合并后产生程序所需的权限,生成安卓程序权限文件,并将该安卓程序权限文件传送给安卓项目生成器;
安卓Java代码文件生成器是依据安卓页面解析器的输出信息生成安卓Java代码文件的软件模块;该模块依据安卓页面解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个Java代码文件,并将所有Java代码文件传送给安卓项目生成器;
安卓布局XML文件生成器是依据安卓页面解析器的输出信息生成安卓布局XML文件的软件模块;该模块依据安卓页面解析器的输出信息中页面及其所包含的控件信息,为每个页面生成一个页面布局XML文件,并将所有页面布局XML文件传送给安卓项目生成器;
安卓基类代码文件生成器是依据安卓页面解析器的输出信息生成安卓基类代码文件的软件模块;该模块依据安卓页面解析器的输出信息提供支持各种类型控件的页面基类代码文件,包括各种类型控件的响应函数代码、控件值显示和数据库访问代码,并将页面基类代码文件传送给安卓项目生成器;
安卓项目生成器是负责创建完整安卓项目的软件模块;该模块创建符合安卓项目格式的文件夹,并接收安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器的输出文件,按照安卓项目的编译要求,形成完整的安卓项目,最后将安卓项目送给安卓编译部署器;
安卓程序编译部署器是负责编译安卓项目并将其部署到移动设备的软件模块;该模块通过安卓编译命令将完整的安卓项目编译生成为安卓应用程序apk文件,并通过部署命令将apk文件安装部署到移动设备上;所述apk文件指Google开源安卓项目中标准的应用程序文件;
第二步,安卓程序可视化定制器生成安卓页面信息XML文件;安卓程序可视化定制器从鼠标和键盘接收输入,或者读取其它操作系统已有程序内容,确定信息页面的数量、页面内控件的类型和数量,页面的名称属性,以及页面内控件的名称、取值范围、列表选项属性,然后依据上述信息为每个页面创建一个安卓页面信息XML文件,并将所有安卓页面信息XML文件送给安卓页面解析器;
第三步,安卓页面解析器解析安卓页面信息XML文件;安卓页面解析器读入来自安卓程序可视化定制器生成的安卓页面信息XML文件,通过XML解析器解析安卓页面信息XML文件,获得页面总数K,以及每个页面Pi中的控件数目Li,1≤i≤K,然后进一步获得Pi的权限信息、控件类型及属性信息和布局信息,并将这些信息同时发送给安卓程序权限文件生成器、安卓Java代码文件生成器、安卓布局XML文件生成器和安卓基类代码文件生成器;
第四步,安卓程序权限文件生成器生成安卓程序权限文件,安卓Java代码文件生成器生成安卓Java代码文件,安卓布局XML文件生成器生成安卓XML布局文件,安卓基类代码文件生成器生成安卓基类代码文件,这4种文件并行生成,并都发送给安卓项目生成器:
4.1安卓程序权限文件生成器生成安卓程序权限文件的方法是:
安卓程序权限文件生成器从安卓页面解析器接收每个页面的权限信息,对每个页面的权限信息取并集后,形成整个安卓程序的权限信息,并按照安卓项目标准的权限文件的格式生成安卓程序权限文件,最后发送给安卓项目生成器;
4.2安卓Java代码文件生成器生成安卓Java代码文件的方法是:
安卓Java代码文件生成器从安卓页面解析器接收每个页面的控件信息,采用文本模板代码自动生成技术,针对每个页面,依据Java语法,创建一个安卓Activity类,并为每个控件创建一个与其类型匹配的成员变量,生成该变量的初始化代码、事件响应函数、数据缓存函数、数据存储函数代码,最终为每个页面生成一个安卓Java代码文件,将所有安卓Java代码文件发送给安卓项目生成器;
4.3安卓布局XML文件生成器生成安卓XML布局文件的方法是:
安卓布局XML文件生成器从安卓页面解析器接收每个页面的布局信息,采用文本模板技术,针对每个页面,依据安卓XML布局文件的语法,为每个控件创建一个对应类型的安卓布局资源对象,生成该资源对象的编号、长度、位置属性代码,最终为每个页面生成一个XML布局文件,并将所有XML布局文件发送给安卓项目生成器;
4.4安卓基类代码文件生成器生成安卓基类代码文件的方法是:
安卓基类代码文件生成器从安卓页面解析器接收每个页面的控件信息,首先通过合并同类控件的方式得到所有页面所包含的控件类型的并集,然后采用文本模板技术,依据Java语法,创建一个公共的安卓基类Activity,并生成各个类型控件的初始化函数、事件响应函数、公共基类成员变量的代码,最终形成安卓基类代码文件,并将该安卓基类代码文件发送给安卓项目生成器;
第五步,创建安卓项目:
安卓项目生成器依据安卓项目所需的标准文件夹结构,创建项目根文件夹、src文件夹、res文件夹、gen文件夹,并将从安卓程序权限文件生成器接收的安卓程序权限文件拷贝至根文件夹,将从安卓Java代码文件生成器接收的安卓Java代码文件拷贝至src文件夹,将从安卓布局XML文件生成器接收的安卓XML布局文件拷贝至res文件夹,将从安卓基类代码文件生成器接收的安卓基类代码文件拷贝至src文件夹,形成完整的安卓项目,并将完整的安卓项目发送给安卓程序编译部署器;
第六步,编译部署安卓程序到移动设备:
6.1安卓程序编译部署器从安卓项目生成器接收完整的安卓项目;
6.2使用安卓软件开发包提供的aapt程序生成R.java类文件,使用Java编译器编译所有java文件,使用安卓软件开发包提供的dx.bat命令生成classes.dex文件;
6.3使用aapt程序生成资源包文件及未签名的安卓程序安装文件;
6.4使用Java开发包的jarsigner程序对未签名的安卓程序安装文件进行签名后生成安卓程序;
6.5使用安卓软件开发包提供的apkbuilder和adb push命令命令将安卓程序部署到移动设备。
2.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于所述每个页面包含的可输入信息的控件指文本控件、数值控件、时间控件、单选控件、多选控件、下拉框控件、拍照控件、录像控件、录音控件、GPS控件。
3.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于所述安卓程序可视化定制器生成安卓页面信息XML文件的具体方法是:
3.1确定页面和控件:
3.1.1由键盘输入获得页面总数K,创建K个空白页面Pi,1≤i≤K,所创建的页面位于可视化定制器左侧页面列表区;
3.1.2针对每个页面,通过鼠标从可视化定制器右侧控件列表区中依次选择一种控件,放入可视化定制器中间的页面显示区中;
3.1.3对每个控件,通过鼠标双击控件,设置该控件相关的属性;
3.2生成安卓页面信息XML文件:将所有页面及其控件的信息,存储到一个页面信息XML文件pages.xml中,pages.xml的根元素为Pages,Pages包含多个页面元素Page,Page包含多个控件元素Control,每个Control包含类型相关的属性信息。
4.如权利要求2所述的面向安卓移动设备的程序自动生成方法,其特征在于所述控件包括文本控件、数值控件、时间控件、单选控件、多选控件、下拉框控件、拍照控件、录像控件、录音控件、GPS控件。
5.如权利要求3所述的面向安卓移动设备的程序自动生成方法,其特征在于所述3.1.3步对每个控件设置该控件相关的属性时,通过鼠标选择设置要部署的移动设备屏幕大小规格。
6.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于第三步中所述页面Pi的控件类型及属性信息的获取方法是:首先获取页面Pi的所有控件集合Ci=∪{Cij},1≤j≤Li,Cij为页面Pi的第j个控件;然后获取每个控件Cij的除权限外的所有属性信息;
所述页面Pi的布局信息的获取方法是:依据控件Cij的id编号先后次序,确定控件在页面的上下位置;
所述页面Pi的权限信息的获取方法是:在获得页面Pi的每个控件Cij的的权限需求后,对所需权限求并集,即获得页面Pi的权限信息集合:Ai=∪{Aij},1≤i≤K,1≤j≤Li,其中Aij为Cij的权限需求项;当控件本身没有权限需求时,则权限项目都为空。
7.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于所述页面基类代码文件指实现包括各种类型控件的响应函数代码、控件值显示和数据库访问等功能的Java公共父类代码文件。
8.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于第二步安卓程序可视化定制器从鼠标和键盘接收的输入包括:通过鼠标点击或拖拽增加页面及页面中的控件,通过键盘输入确定的页面名称、控件名称、控件取值类型和范围。
9.如权利要求1所述的面向安卓移动设备的程序自动生成方法,其特征在于所述安卓程序权限文件指Google开源安卓项目中规定的权限文件,安卓编译命令指Google开源安卓项目中提供的apkbuilder命令,安卓应用程序apk文件指Google开源安卓项目中标准的应用程序文件,部署命令指Google开源安卓项目中提供的adb push命令。
CN201410566367.XA 2014-10-22 2014-10-22 面向安卓移动设备的程序自动生成方法 Pending CN104317587A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410566367.XA CN104317587A (zh) 2014-10-22 2014-10-22 面向安卓移动设备的程序自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410566367.XA CN104317587A (zh) 2014-10-22 2014-10-22 面向安卓移动设备的程序自动生成方法

Publications (1)

Publication Number Publication Date
CN104317587A true CN104317587A (zh) 2015-01-28

Family

ID=52372822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410566367.XA Pending CN104317587A (zh) 2014-10-22 2014-10-22 面向安卓移动设备的程序自动生成方法

Country Status (1)

Country Link
CN (1) CN104317587A (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117238A (zh) * 2015-07-24 2015-12-02 上海海漾软件技术有限公司 一种用于智能设备的系统定制方法以及装置
CN105224334A (zh) * 2015-10-19 2016-01-06 上海斐讯数据通信技术有限公司 快速生成实体类的方法和系统
CN105373381A (zh) * 2015-10-20 2016-03-02 惠州Tcl移动通信有限公司 一种移动终端的桌面启动器的制作方法及制作系统
CN105739976A (zh) * 2016-01-26 2016-07-06 四川神州雅韵科技有限公司 可视化快速生成Windows Phone应用的方法
CN106484370A (zh) * 2015-08-24 2017-03-08 阿里巴巴集团控股有限公司 一种视图体系的生成方法、装置及系统
WO2018035686A1 (zh) * 2016-08-22 2018-03-01 中兴通讯股份有限公司 图形用户界面gui的绘制方法及装置
CN108132783A (zh) * 2016-11-30 2018-06-08 深圳联友科技有限公司 一种Web App的配置方法及装置
CN108491232A (zh) * 2018-03-15 2018-09-04 苏州思必驰信息科技有限公司 在语音对话平台加载控件的方法及系统
CN108647033A (zh) * 2018-04-03 2018-10-12 四川新网银行股份有限公司 一种开放平台的sdk自动打包方法
CN109358860A (zh) * 2018-09-29 2019-02-19 上海中畅信息科技有限公司 一种软件快速打包方法
CN109445890A (zh) * 2018-10-09 2019-03-08 北京达佳互联信息技术有限公司 一种界面展示方法、装置、终端设备及存储介质
CN109634579A (zh) * 2018-10-29 2019-04-16 平安科技(深圳)有限公司 代码生成方法、装置、计算机装置及存储介质
WO2019079998A1 (zh) * 2017-10-25 2019-05-02 福建联迪商用设备有限公司 一种应用程序权限的管控方法、终端及pos终端
CN110333865A (zh) * 2019-06-18 2019-10-15 平安普惠企业管理有限公司 页面文件生成方法及相关装置
CN110704043A (zh) * 2019-09-11 2020-01-17 广州华多网络科技有限公司 特效实现方法、装置、电子设备及存储介质
CN111813377A (zh) * 2020-06-15 2020-10-23 新奥数能科技有限公司 一种自动生成应用程序的方法及装置
CN112035157A (zh) * 2020-08-21 2020-12-04 山东亚华电子股份有限公司 一种安卓与前端页面通信的方法、设备及存储介质
CN113495730A (zh) * 2020-03-20 2021-10-12 北京沃东天骏信息技术有限公司 资源包的生成及解析方法和装置
CN113656196A (zh) * 2021-08-16 2021-11-16 深圳技德智能科技研究院有限公司 一种Linux兼容Android的应用间传送文件方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101276275A (zh) * 2008-04-22 2008-10-01 罗笑南 一种针对机顶盒的软件开发可视化编辑方法
CN102375668A (zh) * 2010-08-25 2012-03-14 中兴通讯股份有限公司 一种移动终端的窗口管理方法和装置
US20120066673A1 (en) * 2010-06-30 2012-03-15 Miller Iii Gordon G Systems and methods for dynamic mobile applications
CN102681841A (zh) * 2012-02-01 2012-09-19 中兴通讯(香港)有限公司 一种手机应用开发方法和系统
CN102866890A (zh) * 2012-09-11 2013-01-09 哈尔滨商业大学 基于对象关联的Android嵌入式界面及程序框架的生成系统及生成方法
CN103838573A (zh) * 2014-01-03 2014-06-04 浙江宇天科技股份有限公司 应用程序生成方法及装置
US20140258973A1 (en) * 2013-03-11 2014-09-11 Chidopi Co., Ltd. Systems And Methods For Automatically Generating Applications

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101276275A (zh) * 2008-04-22 2008-10-01 罗笑南 一种针对机顶盒的软件开发可视化编辑方法
US20120066673A1 (en) * 2010-06-30 2012-03-15 Miller Iii Gordon G Systems and methods for dynamic mobile applications
CN102375668A (zh) * 2010-08-25 2012-03-14 中兴通讯股份有限公司 一种移动终端的窗口管理方法和装置
CN102681841A (zh) * 2012-02-01 2012-09-19 中兴通讯(香港)有限公司 一种手机应用开发方法和系统
CN102866890A (zh) * 2012-09-11 2013-01-09 哈尔滨商业大学 基于对象关联的Android嵌入式界面及程序框架的生成系统及生成方法
US20140258973A1 (en) * 2013-03-11 2014-09-11 Chidopi Co., Ltd. Systems And Methods For Automatically Generating Applications
CN103838573A (zh) * 2014-01-03 2014-06-04 浙江宇天科技股份有限公司 应用程序生成方法及装置

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117238A (zh) * 2015-07-24 2015-12-02 上海海漾软件技术有限公司 一种用于智能设备的系统定制方法以及装置
CN106484370A (zh) * 2015-08-24 2017-03-08 阿里巴巴集团控股有限公司 一种视图体系的生成方法、装置及系统
CN106484370B (zh) * 2015-08-24 2020-01-31 阿里巴巴集团控股有限公司 一种视图体系的生成方法、装置及系统
CN105224334B (zh) * 2015-10-19 2018-06-19 上海斐讯数据通信技术有限公司 快速生成实体类的方法和系统
CN105224334A (zh) * 2015-10-19 2016-01-06 上海斐讯数据通信技术有限公司 快速生成实体类的方法和系统
WO2017067335A1 (zh) * 2015-10-20 2017-04-27 惠州Tcl移动通信有限公司 一种移动终端的桌面启动器的制作方法及制作系统
CN105373381A (zh) * 2015-10-20 2016-03-02 惠州Tcl移动通信有限公司 一种移动终端的桌面启动器的制作方法及制作系统
US10120660B2 (en) 2015-10-20 2018-11-06 Huizhou Tcl Mobile Communication Co., Ltd Systems and methods for producing launchers for a mobile terminal
CN105373381B (zh) * 2015-10-20 2020-08-21 惠州Tcl移动通信有限公司 一种移动终端的桌面启动器的制作方法及制作系统
CN105739976A (zh) * 2016-01-26 2016-07-06 四川神州雅韵科技有限公司 可视化快速生成Windows Phone应用的方法
WO2018035686A1 (zh) * 2016-08-22 2018-03-01 中兴通讯股份有限公司 图形用户界面gui的绘制方法及装置
CN108132783A (zh) * 2016-11-30 2018-06-08 深圳联友科技有限公司 一种Web App的配置方法及装置
WO2019079998A1 (zh) * 2017-10-25 2019-05-02 福建联迪商用设备有限公司 一种应用程序权限的管控方法、终端及pos终端
CN108491232A (zh) * 2018-03-15 2018-09-04 苏州思必驰信息科技有限公司 在语音对话平台加载控件的方法及系统
CN108491232B (zh) * 2018-03-15 2022-04-12 思必驰科技股份有限公司 在语音对话平台加载控件的方法及系统
CN108647033A (zh) * 2018-04-03 2018-10-12 四川新网银行股份有限公司 一种开放平台的sdk自动打包方法
CN109358860A (zh) * 2018-09-29 2019-02-19 上海中畅信息科技有限公司 一种软件快速打包方法
CN109445890A (zh) * 2018-10-09 2019-03-08 北京达佳互联信息技术有限公司 一种界面展示方法、装置、终端设备及存储介质
CN109634579A (zh) * 2018-10-29 2019-04-16 平安科技(深圳)有限公司 代码生成方法、装置、计算机装置及存储介质
CN109634579B (zh) * 2018-10-29 2023-08-22 平安科技(深圳)有限公司 代码生成方法、装置、计算机装置及存储介质
CN110333865A (zh) * 2019-06-18 2019-10-15 平安普惠企业管理有限公司 页面文件生成方法及相关装置
CN110704043A (zh) * 2019-09-11 2020-01-17 广州华多网络科技有限公司 特效实现方法、装置、电子设备及存储介质
CN110704043B (zh) * 2019-09-11 2023-07-28 广州方硅信息技术有限公司 特效实现方法、装置、电子设备及存储介质
CN113495730A (zh) * 2020-03-20 2021-10-12 北京沃东天骏信息技术有限公司 资源包的生成及解析方法和装置
CN111813377A (zh) * 2020-06-15 2020-10-23 新奥数能科技有限公司 一种自动生成应用程序的方法及装置
CN112035157A (zh) * 2020-08-21 2020-12-04 山东亚华电子股份有限公司 一种安卓与前端页面通信的方法、设备及存储介质
CN112035157B (zh) * 2020-08-21 2023-10-20 山东亚华电子股份有限公司 一种安卓与前端页面通信的方法、设备及存储介质
CN113656196A (zh) * 2021-08-16 2021-11-16 深圳技德智能科技研究院有限公司 一种Linux兼容Android的应用间传送文件方法及装置
CN113656196B (zh) * 2021-08-16 2024-02-27 深圳技德应用技术有限公司 一种Linux兼容Android的应用间传送文件方法及装置

Similar Documents

Publication Publication Date Title
CN104317587A (zh) 面向安卓移动设备的程序自动生成方法
CN108491205B (zh) 一种基于组件树的前端网页开发方法及系统
CN114035773B (zh) 一种基于配置的低代码开发表单方法、系统及装置
CN102722372B (zh) 一种通过分类配置自动生成代码的方法及系统
CN102968306B (zh) 一种基于数据模型驱动的代码自动生成方法和系统
CN108762743B (zh) 一种数据表操作代码生成方法及装置
CN101533349B (zh) 一种大粒度构件的平台相关模型的代码自动生成方法
US20130227522A1 (en) Integrated Application Localization
US20160170719A1 (en) Software database system and process of building and operating the same
CN104424265B (zh) 数字资源管理方法及系统
US10318126B2 (en) Data-driven schema for describing and executing management tasks in a graphical user interface
CN104020997A (zh) 可扩展图形化规则应用系统
US20030007014A1 (en) User interface system for composing an image page layout
US8756407B2 (en) Configuration rule prototyping tool
CN102096588A (zh) 一种包含控件的页面的建立方法
CN103810152A (zh) 可视化公式编辑器
CN113448562B (zh) 一种逻辑代码自动生成方法、装置和电子设备
CN101714078A (zh) 代码生成方法及装置
CN111625226A (zh) 一种基于原型的人机交互设计实现方法及系统
US20110023014A1 (en) Method and apparatus for modifying an executable application using in-memory object representation
CN106484488A (zh) 一体化云编译方法和系统
Pichidtienthum et al. Developing Module Generation for Odoo Using Concept of Low-Code Development Platform and Automation Systems
Schuler et al. Rule-based generation of mobile user interfaces
CN116956825A (zh) 表单转换方法及服务器
CN106033338A (zh) 基于fog数据的源代码导入及解析的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150128

WD01 Invention patent application deemed withdrawn after publication