Как решить ошибку "Нативные методы не допускаются в загруженном коде"
Я хочу, чтобы мое приложение воспроизводило звук, пока книга воспроизведения находится в режиме ожидания.
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
}