Flex 4.6 + Air SDK 3.8中始终包含Captive Runtime

时间:2013-09-04 07:39:21

标签: actionscript-3 air apk osx-snow-leopard flex-mobile

Adob​​e最近发布了针对 Air SDK 3.8 的新版本。因此,我们已将此用于移动应用程序,以便能够使用我们创建的库使用的ServerSocket API。导出发布版本后,apk大小变为13.3MB,与3.2MB相比要大得多(使用默认Flex SDK 4.6Air 3.1)。

当我在Flash Builder 4.6上覆盖AIR SDK 3.8时,我会执行以下操作:

  1. 退出 Flash Builder 4.6
  2. http://airdownload.adobe.com/air/mac/download/3.8/AdobeAIRSDK.tbz2
  3. 下载 AIR SDK 3.8
  4. 通过复制整个目录来备份Flash Builder 4.6。
  5. 使用 Unarchiver
  6. 提取AIR SDK
  7. 转到 / Applications / Adob​​e \ Flash \ Builder \ 4.6 / sdks / 并复制4.6.0    然后将文件夹重命名为4.6.0 + 3.8
  8. 运行命令:
    sudo ditto AdobeAirSDK/ /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0\ + \3.8/
  9. 将应用程序描述符更新为:
    <application xmlns="http://ns.adobe.com/air/application/3.8">
  10. 我错误配置了什么吗?恢复为3.1导出3.2MB

    如果我将使用Air SDK 3.1并在运行Air 3.8的Android设备上运行我的应用,那么ServerSocket仍会有效吗?

    当我为iOS导出发布版本时,其ipa大小没有差异。使用3.1时,ipa大小为11.9MB;使用3.8仍会产生11.9MB。那么Android上发布的AIR SDK 3.8会发生什么?

    apk大小大于ipa大小的情况有点儿。导出iOS版本时,8MB - 10MB会添加到应用程序大小,因为导出的应用程序具有捕获运行时( iOS不支持共享AIR Runtime )。那么Android上发布的AIR 3.8会发生什么?


    在导出的发布版本时,无论您在导出选项上选择什么,都会包含强制运行时(导出带有捕获运行时的应用程序或导出使用共享AIR运行时的应用程序)。好吧,强制运行时的好处是你不必要求你的用户安装Adobe Air。

2 个答案:

答案 0 :(得分:3)

Adob​​e在AIR 3.7中更改了Android的包装。 Android软件包现在是标准的captive-runtime,打包器会用这样的东西警告你:

  

注意:AIR SDK不再支持打包Android应用程序以与共享运行时一起使用   该应用程序已与一个捕获的Runtime`

打包在一起

从文档(http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac-4f1413de12cd45ccc23-8000.html):

  

注意:(AIR 3.7及更高版本)默认情况下,ADT会使用您的Android应用程序打包AIR运行时的专属副本。要强制ADT创建使用外部运行时的APK,请将AIR_ANDROID_SHARED_RUNTIME环境变量设置为true。

我没有尝试自己设置该变量,所以我不知道这是否真的能让你正常打包。

答案 1 :(得分:0)

3.1不支持3.3中添加的“Captive Runtime”,我相信。 Captive Runtime允许您在任何Android设备上运行该应用程序,即使它们没有在设备上安装Adobe AIR。这有较大的APK大小的缺点,但这意味着你的应用程序从长远来看更加实用。由于您在应用程序中包含AIR运行时,因此根据AIR版本,它会为APK大小增加8到10MB之间的空白

您可以在Flash Builder中“导出发布版本”或Flash Develop或Flash Pro中的类似内容时打开/关闭Captive Runtime。请参阅以下导出选项: enter image description here

不,你不能在3.8之前的AIR移动中使用任何套接字技术,这最终增加了这种能力。如果使用3.1构建,则任何套接字代码都不起作用。我不确定他们是如何处理不支持的,但如果在项目中包含套接字代码,它甚至可能无法编译(3.8之前的移动项目可能缺少这些类)