使用 Air 构建 android 应用程序时,可变文件在 Flash Pro 中包含路径

Variable file include path in Flash Pro when build an android app using Air

据我所知,在 Air 包中包含文件夹(在 Flash Pro 中,而不是 Builder)的唯一方法是通过 GUI:

Publish Settings > Player Settings > General Tab > Included Files

...但是,如果您必须发布具有十几个不同版本内容的应用程序,那么一遍又一遍地手动添加和删除文件夹是一件非常麻烦的事情,您知道吗?

有没有办法根据某处的文本有条件地包含文件夹 - 也许是应用程序配置 xml?或者在编译 APK 时会检查的其他内容?这样我就可以只复制并粘贴文件夹名称来切换包含哪个资产文件夹,而不是在闪存 IDE 中完成整个过程?

您可以做几件事,尽管它们本身并不是 100% 的解决方案。

1)使用条件编译:

根据您的 imports/includes 设置方式,您可以将其更改为始终是同一个文件,但根据编译时间常数更改内部的 code/embed。您可以通过转至 File > Publish Paramaters > Flash(选项卡)> Parameters > Configure Constants:

添加编译常量

您的常量将采用 CONFIG::debugFOO::bar 的形式,然后在代码中,您可以像这样包装代码:

CONFIG::debug
{
    // code is only included if CONFIG::debug is true at compile time
}

然后,通过翻转常量,您可以包含或排除代码块。这里有更多细节:http://divillysausages.com/blog/as3_conditional_compilation

注意:在像 FlashDevelop 这样的 IDE 中更容易做到这一点。

2) 使用外部 IDE

以 FlashDevelop 为例,在为移动设备构建时,会创建许多 .bat 个文件。根据设置的环境变量,您可以根据需要 include/exclude 文件夹。我这样做是为了包括不同的资产,具体取决于它是桌面、Android 还是 iOS 构建。

3) 使用 Flex SDK 命令行或 ANT

使用其中任何一个,您都可以为要包含的文件指定一个 config.xml 文件。外部IDEs(如FD)直接使用命令行,所以你几乎可以copy/paste命令。

对于 ANT,这不是我的强项,但您可以在这里找到更多信息:http://charlespatricknewman.com/blog/?p=325

这个想法可能会有一些用处,尽管它可能需要一些管理,因为可能意味着您有重复的资产。

我通常将所有资产存储在 'includes' folder/directory 中,然后将其添加到“设置”>“包含文件”窗格中。

我还有存储目标特定包含的文件夹,例如 'IOS' 和 'ANDROID'(但未添加到“包含文件”窗格)。

发布时,我换出了包含文件夹的内容。因此,如果包含文件夹和 copy/pasting 从相关源文件夹到包含文件夹,则只是删除现有内容的情况。

希望这是有道理的。