Adobe AIR for Android开发记要

Adobe AIR for Android开发记录1. 通过USB直接连接HTC Desire HD调试AIR for Android mobile应用程序1) HT

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

相关参考: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 等。

?