Adobe AIR for Android开发记录
1. 通过USB直接连接HTC Desire HD调试AIR for Android mobile应用程序
1) HTC Desire HD 需满足以下几点:
a) Settings→Application→Unknown sources 为选中状态
b) Settings→Application→Development→USB debugging 为选中状态
c) USB连接到PC时选择:Charge only
2) PC 需满足以下几点:
a) 准备安装HTC Desire HD的驱动程序:
USB连接HTC Desire HD到PC后,如果没有出现新硬件向导,则可以打开 设备管理器,可以发现有名为 ADB 的其他设备,查看该设备的属性,记录其硬件id(有用),然后为该设备安装驱动程序,在安装驱动程序前先需要进行下文 b) 中描述的操作。
b) 编辑 %Adobe Flash Builder 4.5 Home%\utilities\drivers\android\android_winusb.inf
在 [Google.NTx86] 或 [Google.NTamd64] 下增加以下3行:
; ;HTC Desire HD %CompositeAdbInterface% = USB_Install, USB\VID_0BB4&PID_0CA2&MI_01
注:USB\ 后的是硬件id,需要根据实际情况进行修改,可以通过 设备管理器->未知设备->ADB的属性得到(上文a))
c) 安装HTC Desire HD的驱动程序:选择浏览驱动程序文件,定位到 %Adobe Flash Builder 4.5 Home%\utilities\drivers\android,忽略警告,确认安装,安装成功后,则可以在 设备管理器 中看到新出现了名为 Android Phone 的设备。
3) Debug 时选择on device -> Debug via USB。
更多关于在手机上调试AIR mobile应用程序,详见:http://help.adobe.com/zh_CN/flex/mobileapps/WSe4e4b720da9dedb5-2d82208b12e46a72ded-8000.html
2. 软键盘出现和消失后的screen布局自动调整
AIR2.6 已支持自动调整,但需要设置以下属性(否则不会自动调整或调整存在问题):
1) Application 属性 resizeForSoftKeyboard=true ;
注:Flex4.5.1+AIR2.7,resizeForSoftKeyboard 默认为true,Flex4.6.0+AIR3.1 resizeForSoftKeyboard 默认为 false,AIR3的Runtime下同为默认false,故保险起见,当需要该属性值为false时,请进行显式设置,以免因不同runtime版本导致自动调整布局失效。
2) 应用的描述文件 app.xml 的 <initialWindow> 节点中需设置:
a) <fullScreen>false</fullScreen> (经调试,该设置为自动调整布局的关键)
b) <renderMode>cpu</renderMode>
c) <softKeyboardBehavior>none</softKeyboardBehavior>
详见Adobe官方文档:在手机应用程序中支持屏幕键盘
3. 在 TextArea 组件中显示 htmlText
Spark 组件 TextArea 已没有 htmlText 属性,而手机应用中也不建议使用 textFlow 属性,正愁怎么实现呢,好在官方文档已给出解决方案,原来很简单。
详见Adobe官方文档:在手机控件中使用 HTML 文本
4. 关于在不同设备上的显示效果
详见:开发AIR mobile应用时多设备上的显示处理
开发过程中遇到的种种:
1. 连接真机调试状态下,应用启动显示 splashScreenImage 图片时,转换屏幕方向,此时会出现如下异常:
TypeError: Error #1009: Cannot access a property or method of a null object reference. at spark.components::Application/softKeyboardDeactivateHandler()[...\frameworks\projects\spark\src\spark\components\Application.as:1631]
查看源码:
// Restore the original values
setActualSize(stage.stageWidth/scaleFactor,stage.stageHeight/scaleFactor);
stage 为 null 引发异常,非调试状态不会出现异常,暂不深究其因。2. AIR 2.6 时,在HTC DesireHD上,默认情况下view的title字体偏小(整个title区域高度较小),当升级到2.7.0.1948后,title区域高度和title字体比较适中。
PS: 印象中AIR2.6时显示该设备是DPI160, 应为 DPI240,AIR2.7显示是DPI240的,这点不是十分确定,记录一下。
3. 目前(2011-7-26)AIR 2.7+FlashBuilder 4.5 (windows平台) 开发 Android 应用的一些局限性:
1) 目前最大的限制:
运行AIR for Android需要:Android2.2+
除以上软环境外,最最影响的其实是那颗CPU:支持flash的CPU至少需要A8架构、ARMV7指令集的CPU。
具体来说,目前已知以下CPU是不支持flash的:高通MSM7227
不支持AIR的具体机型有:HTC G13、MOTO XT531、LG P503、SAMSUNG S5830
AIR Android开发(三) 使用apk-tool整合native程序时的注意事项
[新闻] 乔布斯称 Adobe Flash 是“CPU hog”
2) 暂无法实现的功能:状态栏通知、振动。
注:从 AIR 3.0.0.369 Beta 2 开始已支持 Native Extensions,可实现上述功能。
3) 大部分mx和spark组件是不能使用的,可用的组件中也并非所有属性可用,FlashBuilder 会给出提示说明是否可用。
特别点名极有可能想用却不能用的组件:日期选择组件(DateField)、下拉式组件(DropDownList, ComboBox)。
注:Flex 4.6.0 已增加了若干UI组件,包括 SpinnerList、DateSpinner、ToggleSwitch 等。