Adobe最近发布了针对 Air SDK 3.8 的新版本。因此,我们已将此用于移动应用程序,以便能够使用我们创建的库使用的ServerSocket
API。导出发布版本后,apk
大小变为13.3MB
,与3.2MB
相比要大得多(使用默认Flex SDK 4.6
和Air 3.1
)。
当我在Flash Builder 4.6上覆盖AIR SDK 3.8时,我会执行以下操作:
sudo ditto AdobeAirSDK/ /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0\ + \3.8/
<application xmlns="http://ns.adobe.com/air/application/3.8">
我错误配置了什么吗?恢复为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
会发生什么?
在导出android的发布版本时,无论您在导出选项上选择什么,都会包含强制运行时(导出带有捕获运行时的应用程序或导出使用共享AIR运行时的应用程序)。好吧,强制运行时的好处是你不必要求你的用户安装Adobe Air。
答案 0 :(得分:3)
Adobe在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。请参阅以下导出选项:
不,你不能在3.8之前的AIR移动中使用任何套接字技术,这最终增加了这种能力。如果使用3.1构建,则任何套接字代码都不起作用。我不确定他们是如何处理不支持的,但如果在项目中包含套接字代码,它甚至可能无法编译(3.8之前的移动项目可能缺少这些类)