该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-13
最后修改:2009-06-18
William Hua原创,地址:http://www.williamhua.com/2009/06/13/try-out-android-scripting-environment
在Android社群里,这几天讨论得最火热的主题不外乎是iPhone 3GS、Palm Pre和Magic、Dream的对比,美版Magic到底何时发布以及刚刚和大家见面的Android Scripting Environment了。 William手上没有iPhone 3GS和Palm Pre,美版的Magic虽然看起来不错(比较可靠的消息是他会有5百万像素摄像头,内存288MB,CPU是更省电、视频录制更强大的 MSM7200A,似乎比欧洲已经开卖的Vodafone定制版Magic好出不少),不过手机硬件本身已经超出我的研究范围了,还是花点时间来看看动手 玩一玩Android Scripting Environment吧。 ASE为Android系统带来了脚本语言的支持,通过它我们可以编辑和执行脚本,甚至和脚本解释器做出交互。脚本可以访问多数的Android API,有了这个大大简化了的接口,我们可以很方便的实现以下功能:
脚本可以在终端中来交互地执行,或者作为后台Service启动,也可以通过Locale来 启动。当前支持的脚本语言包括Python、Lua和BeanShell,Ruby和JavaScript的支持已经在计划之中。你可能会问,为什么使用 脚本而不是开发真正的Android应用呢?诚然,Android的开发环境非常易于使用,但是你必须在电脑前完成所有工作。而ASE则使您在任何您需要 的情况下,快速的在设备上使用高级脚本语言尝试您的想法。 下面我们就在模拟器中动手玩一玩ASE吧1、因为ASE目前还没有被上传到Market,所以首先我们到Google Code上下载它的安装包。 2、在命令行执行adb install ~/download/AndroidScriptingEnvironment-0.7-alpha.apk (假设下载来的ASE安装文件放在~/download目录)命令安装ASE。 3、点击图标启动它,第一次启动的时候需要安装脚本解释器,大家会看到“Installing Python”, “Installing Lua”等提示,初始化完成以后,运行界面如下图所示: 4、按照Google介绍的ASE用法,这时我们可以单击脚本文件来执行它,或者长按列表中的脚本文件对它进行修改、删除、添加到桌面快捷方式等操作或者作为后台服务启动;另外也可以通过“Menu”菜单来新建脚本或者打开终端。 出现问题在我尝试的过程中却发现单击列表中的脚本文件无法正常执行,一直显示黑屏。 于是我打开通过adb shell打开一个终端,并用logcat来观察ASE执行时的系统log,发现ASE启动时有报如下的错误: 提示读取res/raw/bsh.zip文件失败,我看了apk包的res/raw目录,还真没有bsh.zip文件(后来就觉得这不是根本的问题) 接下来,当我尝试单击saytime.py运行它的时候,系统大约有1分钟左右没有任何反应,当我尝试Back键等操作的时候,就会出
现”Sorry! Activity ASE(in applicaton ASE) is not
responding”的错误,同时从logcat中可以看到ANR(application not
responding)的记录被写入了/data/anr/traces.txt。 Force close以后,ASE被重新加载。 寻求解决办法刚遇到这个问题的时候,我还是真有点怀疑是Google没有好好的测试ASE,漏掉了bsh.zip文件,但是想想ASE现在已经是0.7Alpha,Google Code上都已经有了3个版本的下载,这样的问题没有理由存在,于是我开始在ASE项目的Issues里面来寻求解决办法。 所以问题是看起来就是ASE中使用了会导致模拟器挂起的Sensor API,那么我们只要在ASE中禁用掉它理论上就可以使ASE能够在模拟器上正常运行,当然和Sensor相关的重力感应、加速感应和罗盘功能肯定是不能 工作的了(除了Ctrl+F12可以模拟重力感应相关的屏幕翻转,加速感应和罗盘还真是很难在emulator中来模拟)。 动手解决这里,请确保正确安装和配置Android 1.5 SDK和ADT了,并且在PC上安装有Python的解释器(Windows或者Linux平台均可)。 从SVN checkout最新的ASE代码,导入到Eclipse中,随后把lib目录下的TTS库加入项目的build path,会发现有android.os.Exec相关的几个类无法找到,这时ASE Wiki的CompilingASE中提到的fix_android_sdk.py脚本就派上用场了。该脚本可以帮助我们从Android源代码中编译出android.os.Exec的class文件,并添加到SDK的jar文件中,以解决ASE的编译问题。 这里需要注意的是,Wiki中提到需Android的源代码,事实上我们只需要有其中的frameworks/base就可以了,如果手上没有完整的代码的话,从Android Git版本库中下载一个frameworks/base最新的snapshot就行,大约35MB左右。下载完了以后把解出来的整个base目录放在android_source/frameworks/目录,然后根据wiki中的方法执行fix_android_sdk.py脚本成功以后,ASE项目的编译就OK了。 最后,注释掉AndroidFacade.java中和getSystemService(Context.SENSOR_SERVICE)、mSensorManager相关的代码,编译完成以后ASE就可以在模拟器中正常运行了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-18
能跑Lua,太好了!
我最喜欢的脚本语言就是Lua了! |
|
返回顶楼 | |
浏览 8291 次