【问题标题】:FlasCC SWC within Mobile AIR ProjectMobile AIR 项目中的 FlasCC SWC
【发布时间】:2012-11-01 19:35:56
【问题描述】:

我正在使用 Flex Mobile 和 ZXing 为 iOS 和 Android 编写条形码扫描仪。我已经尽我所能优化了 ZXing,但在一些旧设备上用于连续扫描仍然太慢。我使用 FlasCC 将一些繁重的工作提取到 C SWIG 中,并在扫描期间获得了相当不错的加速。但是,在实际设备上进行测试时,启动应用程序时会出错。调试控制台显示“无法初始化互斥锁”并崩溃。删除对我的 SWC 的调用,该应用程序启动得很好。首先,是否可以在移动设备上使用这种类型的 SWC?如果是这样,我做错了什么?此外,生成的库的大小非常大(400KB+)。有没有办法通过排除所有多余的绒毛来减小尺寸?

【问题讨论】:

    标签: air flex4 swc alchemy flascc


    【解决方案1】:

    这是一个老问题,但万一其他人遇到这个问题:

    我遇到了同样的问题,解决方法是使用最新版本的 FlasCC(现在称为 CrossBridge)重新编译我的 FlasCC SWC。

    我使用了 CrossBridge 1.0.1 版,它成功了。

    【讨论】:

      【解决方案2】:

      虽然您可以在移动设备上使用 FlasCC,但我不建议您这样做:您的代码可以以本机速度运行并且您可以访问操作系统 API。你看过Air Native Extensions吗?

      【讨论】:

      • 我需要做什么才能让 FlasCC 在移动设备上工作?你为什么不推荐它?我研究过原生扩展,但 iOS 的 ZXing 库目前只扫描二维码。对于我正在进行的项目,我确实需要能够扫描一维和二维条码。
      • 我没有做任何特别的事情来让 FlasCC 在移动设备上工作。很可能您遇到了其他类型的问题。你能在浏览器中运行你的 SWF 吗?
      • 我只是用 C 语言中的一个方法调用创建了一个库,使用 FlasCC 将其打包成一个 SWC,并将其包含在我的移动项目中。我没有在浏览器中运行 SWF,因为它是一个移动项目,但它在 AIR 移动模拟器中运行良好,该特定方法的速度提高了 5 倍。我想知道它是否与我的打包方式有关,因为错误与预加载器和互斥锁有关。
      • 我认为你应该简化你的问题并做一个 FlasCC 'hello world' 看看是否可行,然后慢慢将它构建到你的完整库中。
      • 我试过了。创建了一个简单地返回一个 AS 字符串“hello world”的 C 方法。在模拟器中运行良好,启动应用程序时在我的 Galaxy S3 上崩溃,出现“无法初始化互斥锁”错误。
      【解决方案3】:

      AIR for mobile 尚不支持 Flash Workers,这是 FlasCC 多线程的基础。你是想在后台线程中运行 ZXing,还是用“-pthread”编译你的 FlasCC SWC?

      [edit] 实际上,我们的 AIR mobile 启动代码中可能存在错误,即使 FlasCC 代码没有线程化...现在测试修复

      【讨论】:

      • 我没有使用工人或任何类型的多线程。就像我上面说的,我创建了一个非常简单的 hello world 项目库并从一个 flex 移动应用程序运行它。感谢您调查此问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多