您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页基于应用描述的Android代码自动生成

基于应用描述的Android代码自动生成

来源:华佗小知识
第33卷第11期2016年11月

计算机应用与软件

Computer Applications and Software

VoL33 No. 11

Nov. 2016

基于应用描述的Android代码自动生成

江逸舟沈立炜彭鑫赵文耘

(复旦大学软件学院上海2〇12〇3)

(上海市数据科学重点实验室(复旦大学)上海2〇12〇3)

摘要

在移动开发领域,安卓应用的开发吸引着广大移动终端厂商和开发者的加入。目前,开发者大多采用传统的方式,基于

集成开发环境为安卓应用的每一项组成部分进行设置或编码,这些工作可能花费开发者较多的时间。然而,与应用框架相关的部分 代码与配置文件具有类似的模式,通过复用及定制的方式可以有效提高应用的整体开发效率。为了实现这一目标,提出一套借鉴

MDA( Model-Driven Architecture)思想的方法,基于安卓应用的描述来完成安卓代码框架部分的自动生成。该方法包括一种描述安 卓应用基本元素及其关联关系的元模型,以及一套可复用且支持定制的应用代码模版。基于元模型标准的特定安卓应用的描述可 以驱动基于模版的安卓框架代码的自动生成。在该方法基础上,开发Android应用框架自动生成工具,并以一个实例展示了方法与 工具的可用性。

关键词

Android

模型驱动架构代码自动生成元模型

文献标识码 A

D01:10. 3969/j. issn. 1000-386x. 2016. 11.040

中图分类号 TP311.5

ANDROID CODE AUTOMATIC GENERATION BASED ON APPLICATION DESCRIPTION

Jiang Yizhou Shen Liwei Peng Xin Zhao Wenyun

(School of Software Engineering, Fudan University, Shanghai 201203 , China)

(Shanghai Key Laboratory of Data Science, Fudan University, Shanghai 201203 , China)

Abstract

In the field of mobile development, Android application development has attracted many mobile manufacturers and developers.

At present, most of the developers use a traditional way to code and configure for each part of the Android application based on the integrated development environments, which takes much time. However, part of the code and configuration files related to application framework may have a similar pattern, and software reuse and customizing can effectively improve the overall development efficiency of application. In order to achieve this goal,this paper puts forward a collection of method making reference to the thought of MDA ( Model-Driven Architecture). Within this method, automatically generating android code framework is based on the description of the Android application. The method includes a meta-model which describes elements and associated relationships of Android applications as well as a set of reusable and customization supported code template. Based on the standard of the meta-model, description of a specific android application can drive the android framework to generate automatically based on the code template. Based on the method, this paper developed Android code framework automatic generation tool, and an example is carried out to show the availability of the method and tool.

Keywords

Android MDA(Model-Driven Architecture) Automatic code generation Meta-model

时间。然而,与应用框架相关的部分代码与配置文件具有类似

〇引言

当前,智能终端的普及使得移动应用的需求量不断增长。 安卓作为免费、开源的手机平台受到广大开发人员及用户的青 睐。安卓应用开发者大多采用传统的方式(由设计至编码),基

于集成开发环境(例如 Eclipse、Android Studio、Visual Studio 等) 完成应用的开发工作。在这些工具中,开发者需要为安卓应用 的每一项组成部分进行设置或编码,包括应用界面的设计(编 写layout文件,或直接通过可视化开发方式进行设计)、核心配 置文件的定义(填充Androidmanifest. xml文件)、组成应用的构 件的开发(Actmty、SenaCe等代码的编写)、构件间跳转关系的 实现(Intent代码的编写)等。这些工作可能花费开发者较多的

的模式,我们认为这部分的开发工作可以通过复用及定制的方 式从而提高应用的开发效率。

针对以上目标,本文提出一套借鉴MDA思想的方法,基于 安卓应用的描述来完成安卓代码框架部分的自动生成。MDA 指首先建立抽象的、与具体技术无关的模型,随后从抽象模型自 动生成应用程序的过程[1]。遵循该过程,本文首先提出一种描 述安卓应用的元模型,元模型定义了组成安卓应用的各类元素 及其依赖关系。特定安卓应用的模型基于元模型标准,定义了 应用的架构,包括名称、属性以及约束关系等。同时,本文方法

收稿日期:2016 -05 -09。国家自然科学基金项目(61402113);国 家高技术研究发展计划项目(2013 AA01A605)。江逸舟,硕士生,主研领

域:软件工程。沈立炜,副教授。彭鑫,教授。赵文耘,教授。

170计算机应用与软件2016 年

还提出了一套应用代码模版,其中内嵌了与特定应用相关的可 变、可定制的代码部分。在描述应用的模型以及代码模板的基 础上本方法涵盖了从元模型所描述元素到代码模版中可变部分 的映射过程,支持通过代码生成器自动生成安卓应用的框架,随 后开发者可将精力投入在应用业务逻辑的代码编写上。基于本 方法,我们实现了安卓应用框架自动生成工具,工具采用 GMF[2]图形框架支持用户以可视化的方式设计应用框架,A-

pache Freemarker[3]代码生成器负责定制模版,生成应用代码

开发几乎是一一对应的。相比而言,本文提出了领域特定的元 模型,并通过描述应用的模型为安卓应用建模,建模过程更加简 单直观。

2描述安卓应用框架的元模型

2.1元模型适用范围

由于安卓四大组件包括 Activity、Service、BroadcastReceiver 和Contentprovider[18],每种组件都具有自己的生命周期,承担不 同的职责。对于多数应用开发层的应用而言,都由以上四大组 框架。

1相关工作

近年来,针对基于M

DA

的代码自动生成技术的研究主要

包括U

ML

模型的代码自动生成、模型驱动的安卓界面(Graph­

ical user interface in Specific Lan-

guage) 自动生成、基于 DSL ( Doma)元模型以及采用BPMN模型的代码自动生成。

为了提高⑶I的开发效率,Silva等[4 _ 提出了面向安卓界 面自动生成的模型。他们为安卓应用的控件、窗口、事件 等建立抽象模型,再将模型转换为代码,自动生成安卓应用界面 的代码。本文的研究重点在于创建描述安卓应用的模型,自动 生成应用的代码框架,而界面自动生成并非本文考虑的重点。 本文仅通过配置实现了简单的线性布局。

在基于IML

模型驱动的代码自动生成方面,Pamela等[11]

采用了 U

ML

类图和顺序图为安卓应用建立模型,并建立类图与

顺序图的对应关系,然后结合两者自动生成安卓应用代码框架。 Kmemer#[12’13^

MUML活动图描述安卓应用,将活动图转换

为可执行的状态机,再自动生成安卓应用的代码。由于安卓应 用的领域特征,UML

统一建模语言不能很好地描述安卓应用,

因此本文采用了领域特定的元模型定义组成安卓应用的各类

元素。

DSL

的元模型的模型驱动技术方面,Lachga等[6_1()]借鉴

MDA

思想,提出了 DSL

的建模语言,并开发了安卓界面代码自

动生成工具。Madari等[8]为应用的GUI

和页面跳转做详细设

计,建立了应用整体与不同页面的模型,再将页面之间的跳转通

CR

模型(U

ML

活动图)联系起来。本文的元模型定义了组

成安卓应用的各类兀素,如 Activity、Service、BroadcastReceiver 等,并通过描述应用的模型为安卓应用的框架建模。

其他研究人员采用B

PMN

建模语言为应用建模,例如Solis-

Martinez等采用BPMN

建模语言来描述业务流程,然后生成跨

平台的应用[14’15]。模型通过X亂格式定义流程模型,经过一 定步骤的配置后,实现了与平台无关的应用(AndrokUOS)。但 他们并没有对具体的应用开发做出详细阐述,仅提出了平台无 关的模型。

此外,一些知名公司开发了图形化工具为开发人员带来便 利。例如,谷歌与MIT联合开发的一款安卓快速开发工具APP

lnventar[16],该工具可以使用户通过基于浏览器的工具开发手

机应用。用户可以方便地拖放代码块,通过mushup的方式将它 们放在一起,产生一个应用程序。由于是由特定的模块组成的, 所以具有一定性。IBM公司的Rational Rhapsody[17]提供了 用于安卓代码框架生成的Eclipse插件,该工具采用U

ML

类图、

顺序图为应用建模。但是,该工具的模型配置比较复杂,与代码

件构成,例如业务信息类应用、社交软件、新闻应用等。本文提 出的元模型将安卓组件设计为元模型的元素,可适用于多数安 卓应用开发程序。而本文提出的元模型对于诸如框架开发类应 用(基于安卓操作平台做定制化开发)、底层开发类(驱动开发、 JNI)等尚不适用。具体来说,本文提出的元模型可适用于具有

以下特征的应用:

(1)

安卓应用包含许多Activity。Activity主要用于显亦

面、与用户交互;应用需要实现导航功能,导航指Activity之间的 跳转。

(2)

安卓应用需启动后台服务。Activity是安卓应用的

线程,为了保证用户交互流畅,Service可以用于完成长时间执 行的后台服务,例如下载文件、播放背景音乐等。

(3) 安卓应用需要监听全局广播。例如,应用需要监听

统广播,如检测WiFi、开机启动、sms消息等。(4)

安卓应用需要实现组件间通信,我们可以通过绑定

务、动态广播实现组件间的通信功能。

2.2元模型定义

描述安卓应用的元模型定义了描述安卓应用框架的各个元 素及其依赖关系,如图1所示。

图1描述安卓应用的元模型(类图)

表1给出了具体的元模型的定义,我们将元模型元素按照 类别分为组件类、Widget类、事件类、关联类和权限类。

第11期

江逸舟等:基于应用描述的Android代码自动生成

表1

元模型定义表

定义描述

Component元素代表安卓组件的抽象类型,是Activity、Service、BroadcastReceiver元素的父元素Activity元素提供视图,与用户交互,属性layout代表Activity的布局文件

171

类别元素名称

ComponentActivity

Service在安卓应用中通常用于执行没有界面的后台任务。Service元素具有两种启动模式:StartService和

Service

BindService。StartService 代表启动了 Service,但并不与 Activity 绑定。而 BindService 代表与启动 Service 的 Activity绑定。当Activity退出时,Service也会停止执行。另外,BindService可以将当前Service实例返回给与之

组件类元素

绑定的Activity

BroadcastReceiver是全局广播接收器,可以监听系统的全局广播或开发人员自定义的广播。BroadcastReceiver

BroadcastReceiver

兀素包含了 action属性。BroadcastReceiver可以通过注册不同的action,响应注册了相应action的Intent。

BroadcastReceiver还分为动态、静态两种类型。动态广播在代码中注册,一般用于安卓应用组件之间的通信。

静态广播可以自启动程序,需在安卓应用的配置文件中注册Reviver和action。一般用于接收系统广播

WidgetButtonTimer

Widga类元素

ListMenuTextViewAlertDialogEditTextEventListener

Widget元素是代表Android SDK所提供的一系列控件的抽象类型,是Button、Timer、List、Menu等元素的父元

素。Widget可与特定的EventListener关联,表示触发了该事件按钮是安卓应用最常用的控件之一,可以触发点击、触摸等事件

Timer指表示计时器,常用于累计一定时间之后执行任务List表tk显tk一列内容的列表Menu表示Activity页面上的菜单TextView用于显7K文本信息

AlertDialog表示与用户交互的对话框EditText表示用于编辑文字的文本框

EventListener元素表示捕获与用户交互事件的事件的抽象类型,是OnClick、OnLongClick、OnTouch、On- Dmg等元素的父元素

OnClick事件表示点击某个widget,其中不同的widget所对应的事件不尽相同。例如,Button对

OnClick

应OnClickListener,而List对应OnltemClickListener,以下几种事件均同理

OnLongClick事件表示长时间点击某个widgetOnTouch事件表示触摸某个widgaOnDrag事件表示移动某个widgetOnShmv事件表示显示对话框OnKey事件表示键盘输人

Transition元素描述了从当前元素到下一元素的转移规则。安卓应用组件之间的转移是由事件驱动并由Intent

事件监听 器类元素

OnLongClickOnTouchOnDragOnShowOnKeyTransition

负责传递消息,因此Transition与Intent、EventListener具有关联关系

Intent的中文含义是“意图”,通常用于启动Activity、Service、发送消息给某个BroadcastReceiver等。Intent可以

关联类元素

Intent

通过设置bundle属性在组件之间传递参数。如果需要给某个BroadcastReceiver发送消息,那么应当注册action 属性。Intent元素的type属性可以选择启动一个新组件的方式。本文定义了 StartActivity、StartService、BindSer-

vice、Broadcast四种类型。其中,StartService代表启动Service不绑定,BindService代表启动Serivce并且绑定, StartActivity 代表启动 Activity,Broadcast 代表发送广播

权限类元素

Permission

Permission元素代表安卓应用的权限设置。value属性描述了具体的权限。由于安卓应用的权限非常多,我们

将Permission元素的value属性定义为枚举类型,并且在枚举类型中定义了常用的应用权限

2.3元模型依赖关系定义

元模型的依赖关系主要分为以下五个方面:

(1) Transition 与 EventListener、Intent 依赖关系定义

安卓应用组件之间的转移是由事件驱动并由Intent负责传 递消息,因此Transition与Intent、EventListener具有关联关系。

(2) Component转移依赖关系定义

我们把Component元素之间的依赖关系定义为Transition 元素。Activity元素可以跳转到多个其他的Activity;Activity可 以启动多个Service;Component兀素可以向多个广播发送通知。 Transition必须设置好相应广播的action属性,否则广播将接收

具有一对多的聚合关系。同样,Wklget组件可以触发不同的事 件,因此Widget与EventListenei■也具有一对多聚合关系。

(4) Activity 与 BroadcastReceiver 依赖关系定义

动态广播是安卓应用开发中实现跨进程通信的常用技术。

在 Activity 中可以动态注册 BroadcastReceiver。Activity 元素与 动态的BroadcastReceiver元素具有一对多聚合关系。

(5) Widget与相应的常用事件依赖关系定义 每种安卓控件都具有与常用事件。

3

基于模版的框架代码生成

不到通知。

(3 ) Activity'^Widget'EventListener 依赖关系定义

Activity可以包含多个Widget组件,所以Activity与Widget

3.1 基于Freemarker的代码模板

本文采用Freemarkei■模板引擎自动生成安卓应用的代码模

172

计算机应用与软件

2016 年

板。Freemarker 遵循 MVC ( model view controller )模式,是疆款轻 S级的代码生成引擎。Freemarkei•模板引擎的语法规则类似于

3.2基于描述模型的代码模板定制

在前文所提出的元模型与代码模板的基础上,我们按照以

下转换过程实现框架代码的自动生成,如图4所示。首先,创建 基于元模型标准的描述应用的模型,得到模型的XML描述文 件。基于Freemarker的模板规则定义一组代码模板,包括安卓 应用的源代码、布局、配置文件、子模板等。接着,将XML描述 文件和代码模板作为代码生成器的输人。随后,将描述应用的 模型映射到代码模板的可变部分,最后生成应用的代码框架Q

脚本语言,本身也具有一些编程能力,例如条件判断、循环嵌套、 集合等概念类似于其他编程语言。例如,$丨!指令表示可以替

换为某个变M的值,if/elseif/else表示条件判断,list指令表示循 环遍历对象集合,include指令表示嵌套子模板等^本文按照 Freemarker的语法规则定义了源代码、布局、配置獏板。其中,

源代码模板包含了 Activity 模板、Service 模板、BroadcastReceiver 模板。在这些模板中,还可以设置内嵌子模板,例如控件模板、 Intent模板、bindService模板等。图2展示了上述模板和各个模 板之间的依赖关系s

图2模板类图

本文定义的模板类型非常多,由于篇幅的,我们仅展示

了其中的一个模板。图3展示了 Activity模板,Activity模板主 要用于生成Activity类的代码框架,包括引人包、继承Android, app. Activity类、重写Activity的生命周期方法。同时,在onCre- ate方法中设置该Activity的布局文件、注册动态广播。在onDe- story方法中,释放绑定的Service,并且取消注册动态广播。图

中的高亮区域显示了代码模板的可变部分,Activity模板中可 以包含多个widget、动态广播,还可以绑定多个Serving我们将 这部分可嵌套的模板定义为子模板,实现了模板之间的包含关

系。例如,在 onCreate 方法中调用 < #include ”/Button. ftl’’ > 可 以在Activity模板中嵌套Button模板。此外,在事件中还可以嵌 套Intent模板从而实现Component元素之间的关联关系

import android, import android. app. Activity;

import android.os.Bundle; content.Intent; import android.os.Handler;

import android. content.IntentFilter;

public class ${node.name} extends Activity {@Override

protected void onCreate(Bundle savedlnstanceState) {#set layout

super. onCreate(savedlnstanceState); ^register broadcastReceiver setContentView(R.layout. $ {node.layout});<#if (broadcasrList?size > 0)>IntentFilter filter_$ <#list broadcastList as broadcast

filter_$ {broadcast.name} {broadcast, name} = new IntentFilter(); registerReceiver($ {broadcast.name} .addAction(M? filter_$ {broadcast.name});$ {broadcast, action }jL —©Override

}

.

protected void onDestroy() {

<#if <#list broadcastList as broadcast(broadcastList?size > 0 )>unregisterRecei ver($ {broadcast, n〉ame});

^<#if (bindserviceList?size >0 )><#list bindserviceList as serviceunbindservice(conn_$ —{service.name});〉 super. onDestroyQ;

图3 Activity模板

圈4描述j、V:川的投艰到hV:川代码框架转换圈

其中,应用的源代码是应用程序的主体,根据模型和代码映

射规则生成的源代码包括用户定制的Activity类、Service类、

BroadcastReceiver 类。AndroidManifest. xml 配置文件可以定义用

户所配置的版本,注册 Activity、Service、BroadcastReceiver、Per­

mission 等。 Layout 布局文件是安卓应用程序的界面。我们的工

具会根据模型和属性配置,自动为Activity生成相应的布局文 件。图5展示了一个简单的示例,形象地展示了从特定模型到 模板中可变部分的映射过程a

name=\"testprocess\" version=\"21,f>

_<0〇de xsijt^pe=^mo^ding^n^d V>__I\" I cwidget xsi:type=\"modeling:Button\" name=\"butfon \">

I

! l

action=\"android.intent.action._BROApCASr 7> i

publicdass ${node.name}e)ftends Activity!

.

I <#list bindServicelist as bindService>

i

//bind Service

I {

private ServiceConnection conn = new ServiceConnection()

(©Override

public void onServiceConnected(ComponentName name

7 IBinder service) /

{

System.outpr|ptln(,,--Service Connected-\");

${ bindService }.MyBinder binder = (${ bindService J.MyBinder) service; ${ bindService} bindService = binder.getServiceQ; bindService. My Method();

@Override

public void onServiceDisconnected(ComponentName name)

}

Svstem.outprintln(\"--Service Disconnected--\");

! };

|

@Ovemde

protected void onCreate(Bundle savedlnstanceState) {

super.onCreate(savedlnstanceState);//set layout

setContentView(RJaY〇ut.${ nodelayout f);

图5 Activity绑定Service元税M 4模板映射过程图 由于模型的XML定义文件是XML DOM树形式的,我们引

人了 Dom4j API解析该模型的定义文件,遍历读取该定义文件

第11期

江逸舟等:基于应用描述的Android代码自动生成

173

中的各个节点、属性。同时,为其中的节点建立了 Java模型与 之一一对应。通过遍历该XML文件,可以得到模型所创建的所 有节点。根据Node节点的类型分类,将每个Node节点作 为一个源文件的输出。例如,XML文件中包含BroadcastReceiv- er元素,将它注人BroadcastReceiver对象,然后生成对应的java

Freemarkei•的模板语法规则定义好安卓应用的代码框架、布局、

配置文件。接着,将特定的模型与代码模板的可变部分做映射, 完成模型到代码的转换。工具架构图的最上层是应用层,通过该 工具,可以快速为安卓应用建模。

4.2实验案例

EBook是一个简易的电子书应用,提供书籍列表、下载书

源文件。对于类型是Activity的元素,生成它所包含的组件、事 件、布局文件以及生命周期等。如果元素的类型是Serv­ice,那么根据他的启动类型,判断是否要绑定 Service。 对于 BroadcastReceiver,判断它是否是静态等还是动态的。如果是静

籍、我的书籍、查看书籍内容的功能。EBook的架构包括手机客 户端和服务器端。用户可以在手机客户端下载、翻阅电子书。 服务器端则为客户端提供书籍的下载。

我们将使用Android应用框架自动生成工具生成应用的基 态的广播,那么需生成的BroadcastReceiver文件,并在配置 文件中注册,否则在代码中动态注册。

4

工具实现与实验

基于上述元模型,实现了 Android应用框架自动生成工具。

本节首先介绍了工具的架构设计。接着,我们使用该工具实现

了一个具体的安卓应用“EBook”,并且展示了运行效果。

4.1 Android应用框架自动生成工具

Android应用框架自动生成工具的主要任务是开发一套能为

安卓应用创建描述应用的模型的图形编辑器和自动生成应用代 码框架的功能。工具架构主要分为五层,分别为Eclipse Platform、 Platform Runtime、Tool Framework、工具层和应用层,如图 6 所7K〇

图6 Android应用框架自动生成工具架构图

最底层的Eclipse Platform层代表Eclipse运行时环境。 Eclipse是一个开源的平台,可以使各种功能以插件的形式自由组

装的 IDE,例如 GMF、Dmw2D、AndroidADT 等。Android ADT[19]为 开发安卓项目提供了运行时环境。工具框架层提供了图形工具

框架、Dom4j XML API、Andr〇id SDK所提供的API、代码生成器。 本文采用了 Apache Freemarker代码生成技术定制代码模板,并且 在运行时动态输人数据模型自动生成不同的代码。工具层包括 了图形编辑器,该图形编辑器是在GMF的基础上生成的,可以利 用该编辑器创建描述安卓应用的模型。工具层还包括我们定义 的代码模板、元模型所描述元素到代码模板中可变部分的映射过 程、Android工程。我们首先通过EMF[2°]创建描述应用的EMF 元模型,为了使工具建模更加方便、形象,在元模型的基础上加人 了描述流程的节点如 Process、Node、Start、End、Edge、Permissions 〇 我们会在模型映射到代码模板的定制过程中,从中提取出符合元 模型定义的元素,再将模型转换为最终的代码。然后利用GMF 图形框架自动生成描述安卓应用的编辑器。随后,按照

本框架,再手动编写具体的业务逻辑代码以及服务器代码等。 应用包括三个界面 BookListActivity^ MyBookActivity^ BookConten- t Activity。Booklist Activity页面提供许多未下载的书籍,通过列

表的形式列出,用户可以点击列表中的书进行下载。进人My­BookActivity 可以查看已下载的书籍列表。点击 已下载 的书籍

列表可以查看书籍的内容和信息。

4.3实验

实例应用需将BookListActivity设置为起始界面,在Book- ListActivity 中实现 Button、List、Menu、TextView 以及动态广播。

然后,为Button、List加人点击事件。在点击List时启动 一个后台的DownLoadService来完成下载书籍的工作。下载完 成之后发送Intent到动态广播,告知用户下载已完成。在点击 该 Button 之后跳转到 MyBookActivity 界面。MyBookActivity 包括 一个TextView和一个List。List列出了所有已下载的书籍,点击 List可以进人第三个界面BookContentActivity。此夕卜,我们还为

实例应用添加了安卓应用的常用权限存储卡访问权限、震动权

限、Internet访问权限。存储卡访问权限用于保存、读取已下载 的书籍。Internet访问权限主要用于下载书籍时访问互联网。 震动权限用于发送消息给用户时震动提示用户下载完成。

使用Android应用框架自动生成工具生成实例需要创建一 个新的Android工程,并在工程目录下创建应用的模型文件。 然后拖拽右侧工具栏的模型元素,定义应用的模型节点和关联 关系,例如设置组件之间的跳转,以何种方式启动Service,实现 发送广播等。随后,在属性视图完成每个节点的属性定义。最 后,使用代码自动生成功能将模型转换为代码,从而得到应用的

代码框架,如图7所示。

图7 Android应用框架自动生成工具模型编辑界面

在完成了上述配置后,通过代码自动生成功能可以得到工 具自动生成的应用代码框架。我们在该框架的基础上手动添加

了业务逻辑代码并且美化了界面。图8显示了 EBook的运行效 果,图中展示了应用的界面,包括书籍列表、我的书籍、查看书籍 内容和版本信息界面。查看书籍内容界面则显示了某一本图书 的内容。

174

计算机应用与软件

2016 年

Applications Development [ C ]//Computing System Engineering(SBESC) ,2012:192-197.

[12] Kraemer F A. Engineering Android Applications Based on UML Activi­

ties [M ]. Model Driven Engineering Languages and Systems, 2011 , 6981:183 -197.

[13] Le Goaer 0, Barbier F, Cariou E, et al. Android Executable Modeling :

Beyond Android Programming [ C ]//Future Internet of Things and Cloud (FiCloud) ,2014:411 -414.

[14] Solis-Martinez J, Garcia-Menendez N,Bustelo C P G,et al. BPLOM :

图8示例应用运行图

BPM Level-Oriented Methodology for Incremental Business Process Modeling and Code Generation on Mobile Platforms [ J ]. International

5

结语

Journal of Interactive Multimedia and Artificial Intelligence ,2013,2 本文借鉴MDA思想提出了描述应用的元模型。同时,我们

定义了代码框架模板并且提出了从元模型所描述元素到代码模

板中可变部分的映射方法。基于本文提出的元模型,实现了 An­droid 应用框架 自动生成工具。该工具可以 为安卓应用创建描述

应用的模型,生成应用程序的框架,包括源代码、配置文件、布局 文件。实验部分通过一个实例演示了 Android应用框架自动生成 工具的功能。通过实验,体现了 Android应用框架自动生成工具 可以为开发人员快速构建应用模型,自动生成应用的代码框架。 在此框架的基础上继续开发能够有效提高应用开发效率。

在未来的工作中准备为元模型加入ContentPiwidei•元素, 使元模型更加完善。其次,本文将Widget与EventListenei•定义 为抽象类型以便后续扩展。因此,可以为Android应用框架自 动生成工具添加更多的控件使工具提供更强大的功能。

参考文献

[1 ] KleppeA,WarmerJ,BaStW.解析 MDA[M].人民邮电出版社,2004.[2 ] The Eclipse Foundation. Graphical Modeling Project (GMP) [EB/OL].

http ://www. eclipse, org/modeling/gmp/.

[3 ] The Apache Software Foundation. Apache Freemarker[EB/OL]. http://

fre - emarker. incubator, apache, org/.

[4 ] Silva L P D,Fernando B E A. Model-Driven GUI Generation and Navi­

gation for Android BIS Apps [ C ] //Model-Driven Engineering and Soft­ware Development (MODELSWARD) ,2014 :400-407.

[5 ] Sabraoui A, Koutbi M E, Khriss I. GUI code generation for Android ap­

plications using a MDA approach [ C ]//Morocco Complex Systems (ICCS) ,2012:1 -6.

[6 ] Lachgar M, Abdali A. Generating Android graphical user interfaces u­

sing an MDA approach [ C ]//Information Science and Technology(CIST) ,2014:80 -85.

[7 ] Sabraoui A, Koutbi M E, Khriss I. A MDA-Based Model-Driven Ap­

proach to Generate GUI for Mobile Applications [ J ]. International Re­view on Computers &

Software ,2013 ,8 (3 ) :844-852.

[8 ] Mannadiar R,Vangheluwe H. Modular Synthesis of Mobile Device Ap­

plications from Domain-Specific Models [ C ] //Automated Software En­gineering ( ASE) ,2010 :21 -28.

[9 ] Madari I, Lengyel L, Levendovszky T. Modeling the User Interface of

Mobile Devices with DSLs[C]//8th International Symposium of Hun­garian Researchers on Computational Intelligence and Informatics,2007:583 -5.

[10] Lachgar M, Abdali A. Modeling and Generating the User Interface of

Mobile Devices and Web Development with DSL[ J]. Journal of Theo­retical and Applied Information Technology ,2015 ,72 (1) :124 - 132.

[11] Parada A G,Brisolara L B D. A Model Driven Approach for Android

(2) :13-27.

[15] SolisMartinez J,Espada J P, GarciaMenendez N,et al. VGPM: Using

Business Process Modeling for Videogame Modeling and Code Genera­tion in Multiple Platforms [J]. Computer Standards &

Interfaces ,2015 , 42:42-52.

[16 ] AppInventor[ EB/OL]. http://code, google, com/p/app - invento r -

releases/.

[17 ] RationalRhapsody [ EB/OL ]. http ://www. ibm. com/ developerworks/

cn/ra - tional/model - driven - development - speed - delivery/index. html.

[18 ] Application Fundamentals Quickview[ EB/OL]. http ://developer, an­

droid. com.

[19] Android Development Tools (ADT) Plugin [EB/OL]. http ://web.

mit.edu/hychenj/MacData/afs/sipb/project/android/docs/tools/sdk/ eclipse - adt. html.

[20] Eclipse Modeling Framework( EMF) [ EB/OL]. http://www. eclipse,

rg/mo - deling/emf/o.

(上接第163页)

[3 ]王永忠,梁彦,潘泉,等.基于自适应混合高斯模型的时空背景建模

[J].自动化学报,2009,35(4) :371 -378.

[4 ] Zhao Z,Bouwmans T,Zhang X,et al. A fuzzy background modeling ap­

proach for motion detection in dynamic backgrounds [ C ] //Proceedings of the Second Conference on Multimedia and Signal Processing. Spring­er ,2012 : 177 - 185.

[5 ]於正强,潘赞,宦若虹.一种结合帧差法和混合高斯的运动检测方

法[J].计算机应用与软件,2015,32(4) :129_ 132,270.

[6 ]连晓峰,张锼,刘载文,等.一种改进的运动人体目标检测方法研究

[J].计算机仿真,2011,28(2) :308 -311.

[7 ] Fradi H,Dugelay J L. Robust Foreground Segmentation Using improved

Gaussion Mixture Model and Optical Flow [ C ]//2012 International Conference on Informatics, Electronics &

Vision (ICIEV) ,2012: 248 — 253.

[8 ]范文超,李晓宇,魏凯,等.基于改进的高斯混合模型的运动目标检

测[J].计算机科学,2015,42(5) :286 -288,319.

[9 ] Zhang R,Gong W,Grzeda V,et al. An adaptive learning rate method

for improving adaptability of background models [ J ]. IEEE Signal Pro­cessing Letters,2013 ,20(12) :1266-1269.

[1 〇 ]刘万军,李琳.基于熵理论改进混合高斯模型的运动目标检测算法

[J].计算机应用研究,2015,32(7) :2226-2229,2233.

[11] Tanaka T,Shimada A,Arita D,et al. Non-parametric background and

shadow modeling for object detection [ C ]//Proceedings of the 8th Asi­an Conference on Computer Vision,Tokyo,2007 :159 - 168.

[12] 李百惠,杨庚.混合高斯模型的自适应前景提取[J].中国图象图

形学报,2013,18(12) :1620_ 1627.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务