воскресенье, декабря 29, 2013

Delphi XE5 Update 2. S.S.D.D.

Вот, наконец-то, и я добрался (несколько припозднился, но на то были причины) до ощупывания Delphi с поддержкой Android. С самого начала было ясно, что качественной эта поддержка не будет, а потому нет смысла сразу кидаться покупать какое-либо Android-устройство. Но в планах уже значиналось приобретение нового смартфона на замену дышавшей на ладан старенькой Nokia. С моделью я определился через несколько дней после выхода Delphi XE5 (стимул всё-таки), и как выяснилось практически сразу, с выбранной моделью у Delphi проблемы (точнее с графическим процессором используемом в данном аппарате). Но, телефон должен нравится мне, а не Delphi, поэтому выбора своего я решил не менять (хотя посматривал и на Lenovo K-900, но с тем у Delphi вообще фатальная несовместимость) и надеяться на скорый фикс этого бага. В Update 2 баг таки пофиксили. Ура. Тестируем новую обезьяну, ой, простите, теперь это уже FM Platform (не хухры-мухры, но попробуйте кроссплатформенно послать SMS’ку или погудеть виброй, так сразу поймете ценность этого “Platform” :))

Сначала об общих впечатлениях. IDE поломали. Под Android собирает по-адски долго. Примитивные приложения “весят” как приличные 3D-игрушки и запускаются так-же долго. Состояние - бета.

Теперь подробнее. В IDE сломали редактор стилей. Совсем. То есть вообще. И это не студенческая опен-сурсная поделка, а продукт продающийся за нескромные деньги. Но это не всё. Еще сломали - точнее переделали, но так, что всё равно что сломали – IDE Insight. Помните то замечательное оконце открывающееся по нажатию F6? Теперь его нет. Вместо него теперь поисковое поле на тулбаре (а что, все так делают) с выпадающим списком без прокрутки. То есть вот так просто, раз и вырезали удобное оконце в угоду каким-то модным веяниям. Видимо делать больше нечего, открытых багов нет, осталось только улуЧЧЧЧЧЧшать. Ну переделали, ладно, но проверить работу можно было… В чем, собственно, косяк. По умолчанию поисковое поле расположено в правом верхнем углу окна IDE. Теперь простой кейс. Ищите вы какой-нибудь компонент или команду. Часть написали правильно, в списке успели отобразиться результаты поиска, продолжаете писать, но уже то, что IDE найти не может и выпадающий список с последними результатами уезжает за границу экрана. Это только кажется, что налететь на такое очень сложно, меня первое время это добивало. Хорошо, что обходится это легко, достаточно перенести поисковое поле от края экрана :)

Теперь об Android’е. Новый компилятор ну о-о-очень тормозной. Тестировать новые фичи сущий ад. Если каждое маленькое изменение кода проверять на телефоне, можно сдохнуть в ожидании, от нервов или передозировки кофе, кому что ближе. Это еще ладно, если пишется код независимый от системы, такой можно тестировать и на Win32, но если это что-то системно-специфическое то все очень грустно. Не, правда, с этим нужно что-то делать.

Собранные файлы получаются весьма увесистыми, apk что-то в районе 5-6 мегабайт. После установки они занимают значительно больше:

fmx_vs_oxygen

Сравните обезьяньи демки с приложениями Lunar Lander и OpenGL Application, демонстрашками из RemObjects Oxygen. Ну и раз я говорил о сравнимости с 3D-игрушками:

riptide

Riptide GP - красочная, захватывающая, яркая игра – гонки на водных мотоциклах. Уложилась всего в 41 мегабайт, тогда как демка TabletMasterDetailwithSearch из Delphi хочет 30 мегабайт. Борзо, однако :)

Но размер это не самое печальное, и если бы все остальное работало хорошо это был-бы успех. Но, увы. Самый первый косяк на который я налетел было отсутствие сглаживания у линий (свойство формы Quality выставлено ccHighQuality, но пофигу). Шрифт рисуется сглаженным, а вот линии c лесенками. Допускаю, что это проявляется только на изначально нелюбимых Delphi GPU Vivante. Вот как это выглядит. В дизайнере:

designer

На устройстве:

Screenshot_2013-12-28-13-50-29

Не смотря на хороший PPI лесенки режут глаза.

Вторым косяком было неумение обезьяны реагировать на изменение разрешения экрана. Казалось бы, какие еще изменения на смартфонах и планшетах, ан нет. Посмотрите на навигационную панель на предыдущем скриншоте. Слева видно маленькую стрелочку вниз, она позволяет скрыть панель. Умные китайцы догадались об удобстве этой фичи раньше чем Google, которые собираются или уже добавили эту возможность в новых версиях ОС. Собственно, что происходит после скрытия панели? Приложению выделяются дополнительные несколько десятков пикселей, что для него равносильно изменению разрешения экрана. Так вот на подобные изменения обезьяна реагировать не умеет, более того, они напрочь выносят ей мозг. Итак, скрываем панель:

Screenshot_2013-12-28-13-50-29 Screenshot_2013-12-28-13-50-42

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

Теперь поворачиваем устройство:

Screenshot_2013-12-28-13-50-51

и обратно:

Screenshot_2013-12-28-13-50-58

Снова поворачиваем и восстанавливаем панель:

Screenshot_2013-12-28-13-51-29

поворачиваем с восстановленной панелью:

Screenshot_2013-12-28-13-51-37

В общем, вертел я его и так и сяк, но нормального расположения элементов управления так и не добился. Кстати, Asus уже давно выпускает гибрид смартфона и планшета (в статье описана новая модель, первые устройства появились значительно раньше), где вся начинка сосредоточена в смартфоне, а планшет является своеобразной док-станцией. Так вот там разрешение тоже меняется, и софт адаптируется. А буквально вчера пришла новость о том, что еще и Samsung будет делать свою версию Asus’овского Padfone.

Теперь о впечатлении от тестирования дельфийских демок. Как и ожидалось, интерфейс родным не выглядит (ну да, этим грешит огромное количество Android-софта). На моем устройстве производитель слегка изменил внешний вид некоторых элементов управления, сделав их более легкими по восприятию, а в Delphi имитируется стандартный Holo. Разница видна невооруженным глазом, и это неприятно. Одно дело, когда у приложения полностью собственный стиль (передаем привет загнувшемуся редактору стилей), как например, у новых версий Antutu, и совсем другое, когда вроде бы и цветовая гамма используется системная, а переключатели выглядят по другому. Возможно, эту досадную мелочь можно нивелировать сторонними компонентами, вроде DPFDelphiAndroid, которые используют системные элементы управления, но я пока не пробовал.

Теперь о совсем странных вещах, объяснить которые я не могу и воспроизвести которые удается с большим трудом. Тестируя, а точнее играясь, с демками из Delphi я несколько раз заметил неприятный эффект – фантомные срабатывания сенсора экрана т.е. фантомные жесты и нажатия, когда устройства руками даже не касаешься. Несколько раз это проявлялось непосредственно в самих демках, а несколько раз проявлялось даже в ланчере, когда какая-либо из демок работала в фоне. Но как только фоновая демка закрывалась, так сразу пропадали и фантомные срабатывания сенсора. Нужно заметить, что ни до, ни после запусков демок я таких эффектов не наблюдал ни в одном другом приложении. Вместе с тем, в демках, особенно из сниппетов, где делается переход скроллингом по страницам TabControl, элементы управления вяло отзывались на сенсор. И вот как такое описывать в QC? Надеюсь, это попадется на глаза кому нибудь из команды работающей над обезьяной. А я пока подожду Delphi XE6, 7, 8…

 

Всех с Новым Годом!

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