关于Google App Inventor,不再赘述,仅讨论我个人的使用体验。
App Inventor的架构:
App Inventor主要由两部分组成:Designer 和 Block Editor 。Designer是一个基于Web的界面设计工具,开发者可以在Designer中设计应用程序的UI。如下图所示,Designer的左侧为各种界面控件,中间为设计区域,右侧为控件的属性区域。开发者可以将控件拖拽到中间的涉及区域,然后在右侧设置控件的各种属性。

Block Editor是基于JNLP的客户端程序,主要用来完成程序逻辑的设计。之所以采用基于JNLP的客户端技术,主要是因为要将App Inventor中的设计完成的软件包传输到手机中。Block Editor是App Inventor的亮点所在,这种基于Open Blocks Java Library完成的可视话的块编程技术,降低了应用开发的门槛,让普通用户可以使用类似于拼图的方式完成逻辑的设计和程序的开发。之前在Lab View为LEGO开发的系统中以及见识过类似的Visual Blocks编程技术,小学生都可以通过拖拽Blocks并设定属性来完成对于LEGO机器人的控制。下图即为Block Editor的编辑界面,在该图的左侧就是我们之前在Designer中添加的各种界面控件,点击相应的界面控件,则显示该控件所对应的方法。将需要响应的方法(事件)拖拽到设计区域,则可以对该方法进行设置,进而完成程序逻辑的设定。在整个程序逻辑设定结束后,点击工具栏上的”Connect to Phone” 按钮,则可以将设计好的代码上传到手机上,并直接运行。

由于App Inventor尚处于开发阶段,目前仅是挑选一些人进行试用,难免存在各种各样的问题,根据我近两天的使用,总结如下:
- 设备支持问题:如果想顺利使用App Inventor,需要在PC端安装App Inventor Extra Software。目前该软件对于一些机型支持的不是很好,需要手动安装驱动。(在这里暗爽一下,当初选择Nexus One是无比的正确呀 )
- 无法生成源代码:使用App Inventor设计的程序,无法获取程序的源代码。Android UI设计工具一直为开发人员所诟病,界面几乎都要手写XML完成,直接影响开发效率。App Inventor的Designer本来可以成为一个很好的补充,但是由于无法下载源码,无法从源码级别上对于设计的应用做进一步的修正。对于很多开发者来讲,只能将App Inventor做为一个原型设计或者概念验证的工具。对于普通用户来讲,也只能做一些Toy级别的小应用玩玩。
- App Inventor开发的应用无法提交到Android Market:目前来讲,这倒不能算是一个坏消息。因为App Inventor发布之后,很多人都开始担心一旦App Inventor开发的应用可以提交到Market将导致应用程序质量的下降,目前的限制倒是可以让大家对此放心。
- 不支持多人协作开发:App Inventor目前仅支持个人独立开发,尚不支持多人协同的开发。鉴于Designer是Web应用,那么对于基于Web的协同开发应该是很自然的期待。如果App Inventor不想仅仅做为一个Toy Language,那么对于协同开发的支持是必然要完成的。
- 不支持安装扩展组件:App Inventor所支持的全部功能仅限于Designer中列出的组件。虽然能够完成大多数的普通功能,但是对于高级功能和用户自定义功能的支持还远远不够。这就导致目前无法使用App Inventor开发出更复杂、丰富的应用。但是值得庆幸的是,目前App Inventor的开发团队正在考虑开发一套sdk,让开发人员可以将自己开发的组件集成到App Inventor中。一旦支持了第三方的扩展,并有第三方开发人员提供扩展,我想App Inventor将会焕然一新。
虽然App Inventor目前还有种种的问题,无论其未来的成败,从中还是让我们看到了很多有趣的东西。最起码从该项目派生一套基于Web的UI设计套件,对于广大的开发人员总是一个福音吧 :)
Tags: Android, 技术评论 // Add Comment »