Сбой сборки выпуска Air для iPad при загрузке ресурсов

#ios #air #flash-builder

#iOS #air #flash-builder

Вопрос:

Возникли некоторые проблемы с запуском сборки релиза приложения Air IOS для Ipad (на базе starling).

Я выполняю сборку релиза и сохраняю файл ipa на своем диске. Я дважды щелкаю ipa, чтобы загрузить его в iTunes, и оттуда я устанавливаю приложение на iPad.

После установки на ipad приложению не удается загрузить какие-либо внешние файлы. Я запускаю предварительный загрузчик и пытаюсь загрузить ресурсы через Loadermax, однако, похоже, это не удается.

Вот раздел кода, в котором происходит сбой приложения: (ПРИМЕЧАНИЕ: все это работает в режиме отладки, как в Air simulator, так и в режиме отладки на устройстве через usb)

 import com.greensock.events.LoaderEvent;
import com.greensock.loading.ImageLoader;
import flash.filesystem.File;
 ...
 ...
var _imageLoader:ImageLoader;
 ...
 ...
private function loadAssets():void{
  var _appFile:File = File.applicationDirectory;
  _appFile = _appFile.resolvePath("assets/statics/blueImage.png");
  _imageLoader = new ImageLoader(_appFile.nativePath, {onComplete:onImageLoaded, onFail:onImageLoadFail});
}
private function onImageLoaded(e:LoaderEvent):void{
  traceOut("OH MY GOD BATMAN, IT WORKED!!!");   // traceOut is a helper method that prints to a textfield on the display
}
private function onImageLoadFail(e:LoaderEvent):void{
  traceOut("back to the Bat Cave...");
}
...
...
  

В режиме отладки приведенный выше код показывает:

 OH MY GOD BATMAN, IT WORKED!!!
  

В сборке релиза:

 back to the Bat Cave...
  

Кто-нибудь знает, где я схожу с рельсов? Я не использую какие-либо ANE или подобные.
На основе SDK: «http://ns.adobe.com/air/application/14.0«

Комментарии:

1. Вы указываете внешние файлы, которые должны быть включены в экспортированный IPA?

2. Используя flash Builder, я указываю файлы, которые должны быть включены (папки)….

3. Работает ли это при использовании стандартного режима отладки или просто режима быстрой отладки? Я предполагаю, что вы хороши в Fast, который на самом деле является просто приложением Flash, но не подходит в Standard, который представляет собой кросс-скомпилированное приложение Objective-C, которое не запускается во время выполнения Flash. Это объясняет, почему он работает в режиме отладки, а не в выпуске (который близок к стандартной отладке). Обычно я получаю доступ к встроенным файлам, используя [Embed()] синтаксис или, при использовании Flex, Embed() синтаксис.

4. Приложение использует слишком много ресурсов, чтобы я мог встроить их все при компиляции, поэтому я должен выполнить загрузчик. Я выполняю «стандартную» отладку на устройстве.

5. Я еще раз взглянул на параметры упаковки сборки проекта, и я вижу, что все папки «ресурсы» и «конфигурация» и вспомогательные файлы проверены, однако, когда я решаю выполнить сборку релиза, я не вижу эти папки в качестве опций для проверки / снятия флажков —- вы думаете, что это то, где все идет не так? Или я могу предположить, что, поскольку они выбраны с помощью параметров «упаковка сборки проекта», они уже включены?

Ответ №1:

ПК не чувствительны к регистру, но Ios чувствительна. В режиме симулятора или отладки имя файла «myFile» будет работать, даже если это действительно «myfile» (обратите внимание на разницу в шапке), в режиме выпуска произойдет сбой.

Если это не сработает, попробуйте использовать свойство url файла вместо nativePath. Также вы можете легко проверить, существует ли файл перед его загрузкой:

 if(_appFile.exist)
  

Также, когда вы зависите от пользовательских фреймворков, вы заставляете себя зависеть от их недостатков. Используйте классический экземпляр загрузчика, чтобы повторить ту же операцию и посмотреть, удастся ли она. Вы будете удивлены, сколько раз пользовательский фреймворк может давать сбой при выполнении простых операций просто из-за того, как он настроен внутри.

Комментарии:

1. Хммм… Об этом не подумал, собираюсь попробовать и посмотреть, сработает ли это. Скрестив пальцы (сообщу вам в понедельник).

2. Я прокомментировал ядро приложения и довел его до точки, когда все, что оно делает, это запускает starling и загружает в sharedobject (который, похоже, работает, поскольку он достигает обработчика успеха для него), а затем я пытаюсь загрузить в XML-файл через urlloader: var _appFile:File = File.applicationDirectory.resolvePath («configuion/config.xml «); _urlLoader.load(новый запрос URL(_appFile.nativePath)); выдает ошибку ввода-вывода… (путь должен быть неправильным, или файлов там нет)… как я могу проверить, какие файлы были установлены (изучить ipa)??

3. urlloader захочет использовать свойство url файла, а не nativepath. сохраняйте nativepath только для файловых операций.

4. итак, какой там должен быть код? новый запрос URL («configuration/config.xml «)? разве собственный путь не преобразуется просто в строку типа: «varsomestuffGUIDmyAppconfigurationconfig.xml «? разве это не должно сработать? Он вылетает при отладке…

5. nativepath предоставит вам путь, который может прочитать только система, в то время как url предоставит вам URL-адрес (универсальный тип ссылки). URLLoader не может прочитать ссылку nativepath, только пакет файловой системы может. URLLoader может прочитать URL. _appFile.url был бы правильным для URLLoader. Например, на ПК собственный путь будет использовать вместо / для всех ссылок.

Ответ №2:

Во-первых, спасибо людям, которые помогли разобраться в корне этой проблемы и ее решении, особенно BotMaster.

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

После прочтения этого:https://forums.adobe.com/message/5750011

Что я сделал, так это:

  1. нажмите кнопку «Экспортировать сборку выпуска» во Flashbuilder,
  2. ВАЖНО: установите флажок «Сохранить папку bin-release-temp».
  3. Нажмите Далее
  4. Нажмите «Отмена»
  5. С помощью проводника Windows перейдите в папку bin-debug и скопировали папки «ресурсы» и «конфигурация» в папку «bin-debug-temp», созданную flash-builder
  6. Я возвращаюсь к Flash Builder и снова нажимаю на кнопку «Экспортировать сборку выпуска».
  7. Установите флажок «Сохранить папку bin-release-temp».
  8. Нажмите Далее
  9. Установите флажки рядом с «ресурсами» и «конфигурацией», нажмите Готово.

во вновь сгенерированном файле ipa были папки, которые мне требовались.

Еще раз спасибо тем, кто внес свой вклад в устранение этой ошибки.