Adobe AIR for Android开发记录

小召的阳光地带 2011-06-19

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

相关参考:All supported devices

v880 CPU《高通MSM7227》详细介绍

G13上网页看不视频怎么办啊?

LG P503点评

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 等。

相关推荐