воскресенье, 20 апреля 2014 г.

Что нового в Delphi XE6 или некоторые из изменений…

Решил проверить все статьи на совместимость с Delphi XE6, в итоге 5 статей и вот какие изменения (включая баги/ошибки/странное поведение) я заметил. Т.к. статей около 40 штук, то этот пост будет обновляться, по мере продвижения по статьям.

upd (26.04.14). Судя по всему, один из багов не совсем пофиксили...(подробности в конце)
upd (26.04.14). Вышел "Hotfix 1 for RAD Studio, Delphi, C++Builder XE6"


Где посмотреть список всех изменений в XE6: http://docwiki.embarcadero.com/RADStudio/XE6/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE6

Изменения в IDE:
  • При открытии проекта из Delphi XE5 в XE6, сбрасываются некоторые свойства. В частности свойства для работы с текстом. Например: Если у вас на форме есть "Label" со свойством "AutoSize: True", то в XE6 необходимо обновить свойство "TextSettings->Trimming: None", иначе текст в "Label" будет обрезаться и заменяться на троеточие.
  • Для старых проектов (из Delphi XE5), иногда требуется добавить "-cleaninstall" в меню "Run -> Parameters:Parameters".
  • В окне "Project->Options->Version Info(Android)" добавили новый параметр для аппаратного ускорения, подробности описал в заметке Delphi XE5/XE6 - Project->Options->Version Info(Android)
  • По умолчанию на Android подгружается стиль для версии 4.4 (кнопки и т.п. выделяются серым цветом, а не синим как раньше).
  • Mobile Preview – произошли серьёзные изменения. Хотя в справке так и висит старый скриншот. Вот вам сравнение:
Было:


Стало:


В новой справке висит старый скриншот: http://docwiki.embarcadero.com/RADStudio/XE6/en/Mobile_Preview


Изменения в Androidapi.JNI:
  • "JStringToString" - из "Androidapi.JNI.JavaTypes.pas" в "Androidapi.Helpers.pas"
  • "StringToJString" - из "Androidapi.JNI.JavaTypes.pas" в "Androidapi.Helpers.pas"
  • "StrToJURI" - из "FMX.Helpers.Android.pas" в "Androidapi.Helpers.pas

Далее изменились названия некоторых свойств и значений:
Тут обычно Warning’и выскакивают и подсказывают где и что надо заменить, но на всякий случай, некоторые из изменений:
  • "TVKAutoShowMode.vkasAlways" замена на "TVKAutoShowMode.Always"
  • "TAlignLayout.alClient" замена на "TAlignLayout.Client"
  • "TAlignLayout.alHorizontal" замена на "TAlignLayout.Horizontal"
  • "TVirtualKeyBoardState.vksVisible" замена на "TVirtualKeyBoardState.Visible"

Теперь баги/ошибки/странное поведение/странные изменения (сравнение XE6 с XE5):

1) Анимация для смены позиции(Position.X и Position.Y) ListBoxItem больше не работает. В Delphi XE5 Update 2 работала отлично. Оказалось, это не ошибка, ошибка была в XE5, а теперь работает как надо..

2) NEW Проверял приложение из статьи Пишем свой файловый менеджер для Android, #2:
ListBox - дёргается скролл. Скролл не обнуляет свою позицию при удалении и добавлении ListBoxItem. 
Баги со скроллом совсем заметные, от простого прикосновения к ListBox, скролл начинает плющить. Может, забыли протестировать ListBox?

Обе ошибки, легко воспроизводятся на чистых проектах.

Видео, демонстрирующее данные ошибки, на превью не обращайте внимания, это заскоки ютуба:

3) Исправили баг с переносом в TMemo, подробности тут "Баги/фичи в Delphi XE5 на Android #1" (3 пункт) Спасибо!

4) upd (24.04.14).  Сегодня один из читателей блога сообщил, что баг с запуском приложений, использующих SQL (dbExpress), «не совсем пофиксили». Комментарий читателя можно посмотреть тут: http://delphifmandroid.blogspot.com/2014/03/blog-post.html?showComment=1398326820337#c2504821327131583082
Важно заметить, что данный баг проявлялся в Delphi XE5 Update 2, на моём приложении, а также на стандартной демке (SQLite), Android 2.3.3-2.3.6.
К сожалению, у меня пока не будет возможности проверить самому этот баг, поэтому надеюсь на вашу помощь. Необходимо запустить два приложения (стандартную демку SQLite и моё приложение из статьи) на Android 2.3.3-2.3.6. Буду очень благодарен за помощь. О результатах отпишитесь в комменты.




p.s. Если вы считаете пост не несущим ни какого смысла, напишите об этом в комменты.
p.s.2 Есть что добавить? Пишите в комменты.

10 комментариев:

  1. Такие заметки очень полезны, спасибо )
    (а вот капча на комментарии напрягает и отталкивает их оставлять)

    ОтветитьУдалить
    Ответы
    1. Спасибо за отзыв. По поводу капчи, я не знаю, как её отключить, более того, заходя под другими аккаунтами, я не вижу ни какой капчи.

      Удалить
  2. В XE5 не работали потоки (класс TThread). В XE6 работают отлично.

    ОтветитьУдалить
  3. Не кому не показалось что APK созданные в XE6 стали больше и тормознее. Особенно при работе с эффектами и анимацией?

    ОтветитьУдалить
    Ответы
    1. Насчет размера:

      XE5: with Upd2 apk size: 4.94 MB (5,186,751 bytes) classes.dex size:1.28 MB (1,343,644 bytes)

      XE6: 5.49 MB apk size: (5,757,687 bytes) classes.dex size: 1.90 MB (1,999,460 bytes)

      А вот насчет анимации, у меня стало чуть шустрее.. (XE6+Hotfix)

      Удалить
  4. По моему перестал работать aniindicator. Даже наличие его на форме приводит к выбросу

    ОтветитьУдалить
  5. Здравствуйте! Очень хороший толковый блог.
    Не знаю к кому обратиться с проблемой, может поможете?
    Есть программа (сервер) написанная на Delphi XE5 (XE6) под Windows. И кросплатформенная программа (клиент) написанная на XE5. При первом подключение к серверу, клиент получает определённые параметры и запускает на своей стороне сервер, после чего они меняются ролями. Всё реализовано через Indy TCP. Всё прекрасно работало, кроме некоторых моментов (баги с XE5). Обрадовался выходу XE6 и запустил кросплатформенное приложение на нём, всё заработало (на первый взгляд). подключение происходит, телефон связывается с компьютером, получает необходимые данные, на телефоне под Android запускается сервер и как только к нему обращается приложение Windows, происходит зависание и вылетает ошибка "Socket Error #10061. Connection refused", раньше такого не было. Т.к второе приложение кросплатформенное, то если провести аналогичную операцию Windows - Windows, всё нормально работает. Как я понял вся проблема в "Uses permissions", но там стоит разрешение Internet... Может подскажите в каком направлении капать? Заранее спасибо.

    ОтветитьУдалить
  6. Как победить зависание программ на Android в эмуляторе?

    ОтветитьУдалить
    Ответы
    1. Я не использую эмуляторы, только устройство. Эмулятор – тормозная вещь… Попробуйте использовать альтернативные эмуляторы, например BlueStacks (говорят неплохо справляется со своей задачей).

      Удалить