一个 flex 移动应用程序中的两个文件冲突

Two ane file conflict in one flex mobile application

我有两个录像机文件。一个用于 android,另一个用于 ios 设备。两者都有不同的包名和方法。

现在,我在单个项目中导入了两个 Native Extension。并按照以下方式检测 ios 和 android 设备:

if(Capabilities.version.indexOf('IOS') > -1) //for ios device

if(Capabilities.version.indexOf('AND') > -1) //for android device

并为每个 class 创建对象。现在,当我 运行 它给出了另一个错误 class not found.

就像假设我签入 ios 然后给出 android 文件 class 的错误,找不到事件。 android.

相同

如果您的 ANE 仅支持 Android,则在 Ios 中 运行 时根本不可用(Ios 也是如此)。如果它有默认实现,它的 类 将可用,但如果没有,那么它的 类 将不存在于该范围内,如果您尝试引用它们,则会抛出错误。当使用仅提供一种平台实现的 ANE 时,这些 ANE 必须仅在针对该平台进行编译时使用。您可以轻松地在 ANE 之间切换的方法是使用 CONFIG 常量。

编辑:定义常量。右键单击项目并选择 "properties",在 "Actionscript compiler" 中添加您认为合适的配置行,例如:

-define=CONFIG::ANDROID,false
-define=CONFIG::IOS,false

现在将引用 Android ANE 和 IOS ANE 的所有代码(包括导入语句)包装为:

CONFIG::ANDROID
{
    //android code here
}
CONFIG::IOS
{
    //ios code here
}

现在您的 2 个配置变量设置为 false,因此 "CONFIG::ANDROID" 或 "CONFIG::IOS" 之间的代码将不会与您的应用一起编译。现在,如果在 "actionscript compiler" 中,您更改:

-define=CONFIG::ANDROID,true

所有介于 "CONFIG::ANDROID" 之间的代码都将被编译(您可以在代码中的任何位置使用 "CONFIG::ANDROID" 任意多次)。

因此在编译之前将一个配置设置为 true,并确保将另一个配置设置为 false,然后将编译适用于正确平台的正确代码。

Capabilities.version 会告诉您:"Specifies the Flash Player or Adobe® AIR® platform and version information." 而不是您 运行 使用的 OS 版本。

看这里http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Capabilities.html#version

您需要改用Capabilities.os http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Capabilities.html#os