Как решить ошибку "Нативные методы не допускаются в загруженном коде"

Я хочу, чтобы мое приложение воспроизводило звук, пока книга воспроизведения находится в режиме ожидания.

QNXSystem.system.inactivePowerMode = QNXSystemPowerMode.THROTTLED;

Теперь, когда я отлаживаю приложение на симуляторе (не настольном отладчике), я получаю эту ошибку

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

И эту ошибку я получил также при использовании AlertDialog.

Примечание: я использую Flash Builder, и я поместил qnx SWC в путь к библиотекам..... так решить эти проблемы?

2 ответа

Чтобы позволить скомпилированному коду с собственными расширениями работать на симуляторе, мы должны были поместить код, который использовал собственные расширения, в методы, которые никогда не будут выполняться (когда на симуляторе).

Недостаточно было просто обернуть нарушающий код в блок 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
}

Установите связь qnx-air.swc со значением "external".

Другие вопросы по тегам