【问题标题】:Two ane file conflict in one flex mobile application一个 flex 移动应用程序中的两个 ane 文件冲突
【发布时间】:2015-06-09 12:36:30
【问题描述】:

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

现在,我在单个项目中同时导入 Native Extension。并通过以下方式检测ios和android设备:

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

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

并为每个类创建对象。现在,当我运行它时,它会为另一个找不到的类提供错误。

假设我签入 ios 然后为 android ane 文件类给出错误,找不到事件。安卓也一样。

【问题讨论】:

    标签: android ios actionscript-3 apache-flex air-native-extension


    【解决方案1】:

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

    编辑:定义常量。右键单击项目并选择“属性”,在“Actionscript 编译器”中添加您认为合适的配置行,例如:

    -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 并且将为正确的平台编译正确的代码。

    【讨论】:

    • 如何使用 CONFIG 常量?
    • 谢谢。它为此工作得很好+1。但是如果我想多次使用,那么它会变得混乱或很多分离。有没有更好的解决方案?
    • 我不明白。
    • 对于给定的问题没有更好的解决方案。正如我所说,如果那些 ANE 实现了默认(as3 实现),这将不是问题。您可以自己在项目中创建这些默认类并消除对配置常量的需求。您基本上使用完全相同的包路径和类名创建空类,然后创建完全相同的方法并将这些方法留空。如果正确完成,应该为这些 anes 提供默认实现。
    • 在编译器参数中定义多个命名空间和变量时,需要在第一个 define=define+= 进行定义/跨度>
    【解决方案2】:

    Capabilities.version 将告诉您:“指定 Flash Player 或 Adob​​e® AIR® 平台和版本信息。”而不是您正在运行的操作系统版本。

    请看这里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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多