如何解决“加载代码中不允许本机方法”错误

时间:2012-04-21 08:16:44

标签: actionscript-3 air blackberry-playbook playbook

我希望让我的应用程序在待机模式下的剧本中运行声音,我把这句话放在启动时

QNXSystem.system.inactivePowerMode = QNXSystemPowerMode.THROTTLED;

现在,当我在模拟器(而不是桌面调试器)上调试应用程序时,我收到了此错误

VerifyError: Error #1079: Native methods are not allowed in loaded code.

我在使用AlertDialog时也遇到了这个错误。

注意:我正在使用Flash构建器,并且已将qnx SWC放在库路径中。 ....所以解决这些问题?

2 个答案:

答案 0 :(得分:1)

为了允许使用本机扩展编译的代码在模拟器上运行,我们必须将使用本机扩展的代码放在永远不会被执行的方法中(在模拟器上时)。

仅将有问题的代码包装在if / else块中是不够的。 if / else需要调用另一个具有本机版本或模拟器版本代码的方法。

例如:

private function showNativeOrFlexAlert(message:String):void
{
    // we used the Capabilities class to determine this, might be a better way
    if (isMobile)
        showNativeAlert(message);
    else
        showFlexAlert(message);
}

// have to be careful here, this method signature CANNOT include
// any classes from native extension -- no errors on device, but fails on simulator
private function showNativeAlert(message:String):void
{
    // use native API to show alert
}
private function showFlexAlert(message:String):void
{
    // use the Flex Alert class
}

答案 1 :(得分:1)

将qnx-air.swc链接设置为“external”。