gpt4 book ai didi

actionscript-3 - Flex 4.6 编译器检查是否为 ios 或 android 编译

转载 作者:行者123 更新时间:2023-12-04 04:26:26 25 4
gpt4 key购买 nike

我正在为 iOS 和 Android 创建一个移动应用程序,使用 flashbuilder 4.6、Flex SDK 4.6。

我正在为 Google Cloud Messaging 使用 ANE,我想在为 iOS 编译时跳过它。 flashbuilder中是否有任何定义来检查它是否为iOS或Android编译,所以我可以跳过GCM导入。我不想在每次编译我的应用程序时更改我的编译器定义。

另一种方法是在编译器参数中使用 IF 语句:

if (compiling for ios)
-define+=CONFIG::IOS,true
else
-define+=CONFIG::IOS,false

是否有可能做这样的事情,或者是否有任何内置的编译器定义我可以在我的代码中使用?

编辑:
包管理器有 3 个类:
  • NotificationManager.as
  • NotificationManagerIOS.as(iOS 单例,使用来自 Air 的 RemoteNotification)
  • NotificationManagerAndroid.as(Android 单例,使用不支持 iOS 的 ANE)

  • 为 android 编译很好,为 iOS 编译会在来自 ANE 的类上产生错误。

    NotificationManager.as:
    package managers {
    public class NotificationManager {
    public static function getInstance():NotificationManager {
    var ios:Boolean = (Capabilities.manufacturer.indexOf("iOS") != -1);
    if (ios) {
    return NotificationManagerIOS.getInstance();
    } else {
    return NotificationManagerAndroid.getInstance();
    }
    }
    }
    }

    最佳答案

    Flash Player AVM2 运行时是一个虚拟机,它使用 JIT编译器所以你想做的事情是不可能的。但是,有两种常见的方法可以解决此问题:

  • 为每个部署目标单独编译,尤其是当嵌入的、特定于操作系统的支持文件很大时。您可以将 IDE 项目设置为包含多个文件夹,以便为每个目标编译只需打开每个文件夹并编译内容。阅读 Christian Cantrell 的 Writing multiscreen AIR apps了解如何为单独的部署目标设置项目。
  • 如果嵌入的、特定于操作系统的支持文件很小,或者如果您只想管理一个项目文件夹,您可以通过使用 flash.system.Capabilities 确定其目标来指示运行时使用适当的文件。 :
    var isIOS:Boolean = (Capabilities.manufacturer.indexOf("iOS") != -1);var isAndroid:Boolean = (Capabilities.manufacturer.indexOf("Android") != -1)
  • 关于actionscript-3 - Flex 4.6 编译器检查是否为 ios 或 android 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422137/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com