绕过 Haxe 16MB 嵌入文件大小限制的更好方法?

Better way to bypass Haxe 16MB embedding file size limit?

我刚刚注意到 Haxe (openFL) 在使用 @:file 标签(或 openfl.Assets)时将单个嵌入文件的大小限制为 16MB。 Flash/Flex 可以直接嵌入更大的文件。我解决这个问题的方法是将一个大文件拆分成几个小文件,然后在 运行 次将它们合并。但这有时不太方便。那么在Haxe中有没有更好的方法来绕过这个限制呢?

首先,嵌入这么大的文件通常不是一个好主意:

  • 二进制文件很大
  • 会减慢编译速度(因为每次都需要复制粘贴大量数据
  • 当应用程序处于 运行
  • 时,此数据被强制存储在 RAM/swap 中

但是,说到解决确切的问题...我不确定 swf 是否允许嵌入这么大的数据块(需要查看字节码规范),但无论如何似乎存在限制是因为 ocaml 对字符串大小的内部限制。我相信它可以修复,但是您需要重写 haxe swf 生成器的一部分。

如果你不想修复编译器(如果 swf 不允许嵌入这么大的块,这可能是不可能的),那么你可以只使用一个简单的宏,它会透明地分割你的文件在部分中,在运行时嵌入和重新组装。