Pull to refresh

Flash-приложение под iPad без проблем с размером экрана и пикселинга

Reading time 4 min
Views 4.1K
Привет!
Прошло не так много времени с тех пор, как Flash стал доступен на яблочных мобильных устройствах. Судя по мануалу из официального пэкэджера от Adobe, сборка Flash-приложения на iPhone — достаточно тривиальная задача.
Однако, дела с iPad обстоят не так, как хотелось бы.

В статье приведен тайный рецепт, как создать Flash-приложение именно под iPad.

Упаковка IPA


Чтобы наше приложение можно было залить через iTunes на девайс или разместить его на AppStore, нам нужно сформировать IPA-файл. Для этого необходимо скачать, указанный официальный пэкэджер, проследовать указанной в нём инструкции, согласно которой нам понадобится обычный скомпиленный SWF нашего приложения, сгенерированный .mobileprovision и .p12 подпись.
Чтобы упаковщику стало ясно, как сделать сборку, создаётся дескриптор приложения application.xml.

Отмечу, что Flex-фреймворк использовать не удастся, пэкэджер упадёт с крешем. Не исключено, что существуют решения, однако мне о них пока неизвестно.

Проблема


А вот она проблема:
image
Дело в том, что приложение, собранное под iPhone, будет занимать на iPad размер экрана iPhone, т.е. совсем не ожидаемые 1024х768, даже если указать явно размер initialWindow в дескрипторе или stage. Если нажать кнопочку (2х), у нас появятся артефакты в виде растянутых пикселей, т.е. разрешение остаётся всё равно iPhone'овским.

Универсальное решение


—… Если развернуть на полную то там заметен растр или нормально отмасштабировалось?
— Заметен.
— *ц какойто хоть к тебе езжай! Ща оденусь — приеду.
— Давай.

В час ночи, я и боевой товарищ kivsiak приступили к решению проблемы путём парного программирования, мозгового штурма, гугла и пива.
Не прошло и четырёх часов, как универсальная панацея была создана. Вся проблема крылась в плохо документированном параметре дескриптора, который называется iPhone. Прописав его таким образом, мы получим долгожданное, полноэкранное приложение под iPad, которое выглядит совсем, как нативное!

Вот тайный рецепт.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <application xmlns="http://ns.adobe.com/air/application/2.0">
  3.   <id>ru.your.application.id</id>
  4.   <filename>yourFileNameForApplication</filename>
  5.   <name>yourApplication</name>
  6.   <version>1.0</version>
  7.   <supportedProfiles>desktop mobileDevice</supportedProfiles>
  8.   <initialWindow>
  9.     <content>release/yourSWFFile.swf</content>
  10.     <transparent>false</transparent>
  11.     <visible>true</visible>
  12.     <fullScreen>true</fullScreen>
  13.     <autoOrients>true</autoOrients>
  14.     <aspectRatio>landscape</aspectRatio>
  15.     <renderMode>cpu</renderMode>
  16.     <width>1024</width>
  17.     <height>768</height>
  18.   </initialWindow>  
  19.   <iPhone>
  20.     <InfoAdditions>
  21.     <![CDATA[
  22.       <key>UIDeviceFamily</key>
  23.       <array>
  24.         <integer>1</integer>
  25.         <integer>2</integer>
  26.       </array>
  27.       ]]>
  28.     </InfoAdditions>
  29. </iPhone>
  30. </application>
* This source code was highlighted with Source Code Highlighter.


И вот она ня-ка…


Исходный код проекта с панацеей, билд-файлом Ant для сборки находится по этой ссылке на депозитах.
Само тестовое приложение было взято из статьи Кристиана Кантрелла, в которой автор хоть и пытался показать как решается эта проблема, но у него не получилось.
Не забываем также, что в libs проекта нужно добавить AIR SDK, иначе код от Кристиана у вас не скомпилируется.
В билд-файле необходимо скорректировать пути, вписать ваш Application ID, прописать store pass от сертификата, а также залить .p12 и .mobileprovision. Цель Ant'а pack-ipa соберёт IPA файл (ad-hoc) для iPad'а, который будет готов для заливки на iPad. Не забудьте сохранить рядом с ним файл .mobileprovision. Для использования в продакшене, необходимо заменить символы ipa-ad-hoc в build.xml на ipa-app-store.

В случае с ipa-ad-hoc формирование пакета IPA займет от 16 до 25(!) минут.

Кстати, IPA это обычный ZIP-архив.

Для скачивания:
Упаковщик SWF в IPA от Adobe.
AIR SDK.

Ссылки по теме:
Делаем iphone приложение на Flash CS5
Writing multiscreen AIR apps
Ветка на форумах Adobe, порожденная kivsiak'ом после выпитого пива и синтезированного рецепта. Рекомендую отписывать в неё вопросы, т.к. это не будет не замечено зарубежным сообществом Adobe, где разработка под iPad идёт уже вовсю.
Running iPhone apps on the iPad (without the Pixeling!) — ужасный неработоспособный хак, который навёл нас на верный путь

На «загладку»: Space On-Air — простенькая игрушка, написанная на Flash под iPhone — потехи ради.
Tags:
Hubs:
+22
Comments 38
Comments Comments 38

Articles