0

Adobe 最近宣布了Air SDK 3.8的新版本。所以我们将它用于我们的移动应用程序,以便能够使用我们创建的库使用的ServerSocket API 。导出发布版本后,apk大小变得13.3MB3.2MB(使用默认值Flex SDK 4.6)要大得多Air 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下载AIR SDK 3.8
  3. 通过复制整个目录来备份 Flash Builder 4.6。
  4. 使用Unarchiver提取 AIR SDK 。
  5. 转到/Applications/Adobe\ Flash\ Builder\ 4.6/sdks/并复制 4.6.0 文件夹,然后将其重命名为 4.6.0 + 3.8
  6. 运行命令:
    sudo ditto AdobeAirSDK/ /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0\ + \3.8/
  7. 将应用程序描述符更新为:
    <application xmlns="http://ns.adobe.com/air/application/3.8">

我是否配置错误?恢复3.1出口3.2MB

如果我将在具有运行时Air SDK 3.1的 Android 设备上使用并将运行我的应用程序Air 3.8,是否ServerSocket仍然可以工作?

当我为 导出发布版本时,它的大小iOS没有区别。ipa使用时3.1,ipa大小为11.9MB;使用3.8仍然产生11.9MB。那么在Android发布时会发生什么AIR SDK 3.8

apk尺寸大于尺寸有点奇怪ipa。导出iOS发布时,8MB - 10MB添加到应用程序大小,因为导出的应用程序具有强制运行时(iOS 不支持共享 AIR 运行时)。那么在Android发布时会发生什么AIR 3.8


导出发布版本,无论您在导出选项中选择什么(导出应用程序与俘虏运行时或使用共享 AIR 运行时的导出应用程序),始终包含俘虏运行时。好吧,强制运行时的好处是您不必要求用户安装 Adob​​e Air。

4

2 回答 2

3

Adobe 在 AIR 3.7 中更改了 Android 的包装。Android 包现在是标准的俘虏运行时,打包器会警告你这样的事情:

注意:AIR SDK 不再支持打包 android 应用程序以与共享运行时一起使用。
该应用程序已与强制运行时一起打包

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

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

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

于 2013-09-23T09:24:49.663 回答
0

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

您可以在 Flash Builder 中“导出发布版本”时打开/关闭 Captive Runtime,或者在 Flash Develop 或 Flash Pro 中进行类似操作。请参阅下面的导出选项: 在此处输入图像描述

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

于 2013-09-04T16:11:52.333 回答