Я начал преобразовывать это гибкое приложение для работы на Android, используя новый sdk flex hero. Я уже заменил все несовместимые с мобильными устройствами компоненты, и несколько раз успешно запустил его.
Когда я использую те же библиотеки, в которых запущено исходное веб-приложение, оно работает отлично.
Однако большой проблемой являются эти случайные ошибки Invalid BitMapdata при запуске мобильное приложение. Вот весь вывод.
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/ctor()
at flash.display::BitmapData()
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::applySource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1337]
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::validateSource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1652]
at spark.primitives::BitmapImage/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:902]
at spark.primitives.supportClasses::GraphicElement/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\supportClasses\GraphicElement.as:3487]
at spark.components::Group/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\components\Group.as:931]
at mx.core::UIComponent/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\core\UIComponent.as:8095]
at mx.managers::LayoutManager/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:760]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1157]
Я много раз отлаживал и обнаружил, что когда он достигает этого метода
mx_internal function applySource():void
{
в BitmapImage.as, в этом операторе
if (!bitmapData && tmpSprite)
bitmapData == null. Однако когда я запускаю исходное веб-приложение, bitmapData не имеет значения NULL. Значение bitmapData должно быть определено в этой строке кода
<s:BitmapImage id="smallTriangle" smooth="true" source="@Embed('/com/xploreplus/components/containers/panel/assets/images/smallTriangle.png')" />
. Теперь мне кажется, что при запуске мобильного приложения оно не может найти изображение, как когда я запускаю веб-приложение, используя ту же библиотеку, где указанная выше строка кода, он может найти изображение.
Эта проблема преследует меня уже несколько дней, и я действительно начинаю думать, что это ошибка, особенно потому, что она иногда ДЕЙСТВИТЕЛЬНО запускается. Или мне здесь чего-то не хватает.