Belov.V.

Пользователи
  • Публикаций

    69
  • Зарегистрирован

  • Посещение

  • Победитель дней

    6

Весь контент Belov.V.

  1. Сборка приложений под Linux

    Предлагаю поделиться практикой сборки приложений под Linux, набором ошибок и глюков. Решил сделать пару экспериментов в связке RAD-Linux. 1) Есть рабочий Debian7. На нем не пошел PAServer. Требует glib версии 2.14 или 2.17 (на 7-ке 2.12). Добавил в репозиторий ссылку на пакеты от debian 8. Обновил. PAServer стартует, но тут же валится по ошибке сокета (не записал как звучит). Пока все пакеты подряд. 2) Поднял Debian8. Чистый. PAServer стартует, SDK в RAD студию загружается. При попытке сборки ошибка "[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lgcc_s" При обновлении кеша файлов SDK ругается: Directory does not exist: /usr/include/c++/ Directory does not exist: /usr/include/x86_64-linux-gnu/ (исчезла после gcc-6) Directory does not exist: /usr/include/x86_64-linux-gnu/c++/ Directory does not exist: /usr/include/c++/ Directory does not exist: /usr/lib/gcc/x86_64-redhat-linux/ Directory does not exist: /usr/lib/gcc/x86_64-redhat-linux/ Directory does not exist: /usr/lib64/ Доставил пакеты gcc-6 и linux-compiler-gcc-6-x86, обновил файлы кеша SDK (исчезла вторая строчка в предупреждении при обновлении). Ура! Простейший пример собирается и стартует. Под отладчиком работает. Но остались шесть предупреждений при обновлении linux SDK. Где это может вылезти?
  2. Сборка приложений под Linux

    Еще в документации нашел рекомендацию для возможности использовать System.zLib установить пакет zlib-deve. Для Debian9 это zlib1g-dev. Установил, обновил SDK, количество предупреждений о не найденных путях по прежнему 6
  3. Олег, хорошо бы темы закрывать описанием способа решения вопроса. У Вас второй вопрос подряд и в итоге просто "Спасибо разобрался". Что было, в чем отличие FMX на Win и Андроид, можно просто погадать. Удачи и с уважением!
  4. Rusland, может конечно бредовая версия, т.к. слишком просто :-) где файл БД лежит? есть ли у сервиса доступ к нему?
  5. Вроде в RX есть изменения в этом. В одном проекте с табами положение элементов рассчитывал при создании формы. И при переходе на RX все это "развалилось". Пришлось на скорую руку переделывать. Как раз решил, что для оптимизации алгоритм изменили. Но подробно не разбирался.
  6. После перехода на RX и попытке запуска отладки приложения на девайс с 3.2 при загрузке в устройство выдается вот такая ошибка (в теме). Изменение в настройках Option-SDK (SDK и NDK), как то понижение версии платформы ничего не дает. Play Market тоже отмечает, что приложения собранные на RX имеют Уровень AP 14+ Посмотрел глубже - в файле AndroidManifest.xml упорно прописывается: <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> и не зависит от того что выбираешь в настройках SDK. Где задается minSDKVersion? Или от каких настроек это значение зависит? Можно конечно в автоматически сгенерированном AndroidManifest.template.xml ручками внести изменение: <uses-sdk android:minSdkVersion="%minSdkVersion%" заменить к примеру на minSdkVersion="9" но это как-то кустарно и пока на крайней выход.
  7. Goggle Drive в качестве имени ставит то, что указано в Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment)); Т.е. прописывайте в это поле имя файла без пути, Mail.ru не пробовал.
  8. Переход на RAD 10

    И что изменилось примерно можете сказать, если Вас не затруднит? Если еще интересно - при onResize новые размеры TabItem'а изменялись только у активного в текущий момент. У скрытых размеры не изменяются. В общем то логично для экономии ресурсов сделали. Но вот при переключении на другой TabItem динамически формируемая форма разваливалась, т.к. ее размеры изменялись, но никакое событие не возникал - ни у TabControl, ни у TabItem. Что заметил, у самих TabItem-ов Event onResize вообще никогда не возникает. Как раньше было не помню. .....как-то так вроде.
  9. Переход на RAD 10

    Vitaldj, думаю ни как. Было указано, как пример проведенных изменений. Как и упоминание о файле манифеста на андроиде - вдруг кому поможет.
  10. Переход на RAD 10

    В выходные переводил на RX приложение. Последний сборка была на XE7. С ходу не пошло. По другому стали срабатывать события у объектов. Видно, что перелопатили солидно. К примеру у меня динамически формировалось положение элементов на форме по событию onResize у TabControl. Стало работать по другому. Пришлось переписывать (для всех платформ). А вот со вторым появившемся глюком (на Android) бился долго - при смене ориентации экрана приложение вылетало. Под отладчиком "raised exception class segmentation fault (11)". Глову сломал, Потом догадался сравнить файлы манифеста приложения с вновь созданным под RX. Чтоб короче - результат: убил старый файл. Новый пересоздался. Ошибка исчезла.
  11. Проверьте вот это место в коде: // прикрепляем файл j_file := SharedActivity.getExternalFilesDir(StringToJString(f_name)); Обратите внимание, что там указано имя прикрепляемого файла без пути к нему. По описанию ситуации очень похоже на ошибку в этом месте.
  12. Вот пример. Соорудил, проверил, вроде работает. Размер файла нормальный. Скриншеты на двух почтовых клиентах: Upd: в RX небольшие изменения. См. второй пример. (для первого идут предупреждения, хотя тоже работает) Sample-SendAttach.zip Sample-SendAttach_RX.zip
  13. Спасибо, помогло! по поводу пути, да, лежат именно в Androidapi.IOUtils.getExternalFilesDir. Буду разбираться. Я такой вариант получал, когда j_file не верно записывал. См. выше
  14. Как вариант, почему нет присоединенного файла - проверьте сохранение файла именно по этому пути: f_name := 'sample-temp.txt'; //f_path := TPath.Combine(Androidapi.IOUtils.getExternalFilesDir,f_name); // пусть именно такой // или f_path := TPath.Combine(TPath.GetSharedDocumentsPath, f_name); // или тоже самое: GetPublicPath ...SaveToFile(TPath.Combine(TPath.GetSharedDocumentsPath, f_name)); // прикрепляем файл j_file := SharedActivity.getExternalFilesDir(StringToJString(f_name)); В особенности заполнение j_file проверьте. Тоже самое было, когда пробовал по другим путям файл отправки класть. Имя было, но не отправлялось. Удачи!
  15. Заполнение поля "Кому:" var ... JRecipient: TJavaObjectArray<JString>; ... begin // JRecipient := TJavaObjectArray<JString>.Create(1); JRecipient.Items[0] := StringToJString('test@test.ru'); ... Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, JRecipient); ...
  16. Возможно будет полезно, вот тут немного про ListBox и его особенности (глюки) описывал. Кое что решил: http://fire-monkey.ru/topic/949-posle-aktivatcii-tsearchbox-ne-vozvraschaetsia-indeks-novog/
  17. MainActivity.finish; или SharedActivity.finish; Вот тут обсуждали: http://fire-monkey.ru/topic/1121-problema-pri-vykhode-iz-programmy/?p=5189
  18. Не думаю, что везде - это как-то категорично :-) В одном приложении win32 на XE7 вынужден был отказаться от такого вызова. Это с год назад было, плоховато помню подробности. Так что чтобы не ошибиться не буду подробности описывать. Но какое-то отличие в возврате в отличии от Android получалось. Проще было ветки по платформам разделить и на win использовать ShowModal();
  19. Запуск приложения FMX

    Разрешите по подробней о очищение временных объектов? То что было у меня, это можно характеризовать как частный случай и особенность выбранного алгоритма. Если у Вас подобного нет, то вряд ли это описание поможет. Совет отключать частями дельный. Можно еще ошибки через "....sdk\tools\monitor.bat" посмотреть. Установите фильтр на события своего приложения.
  20. У Вас для модальной формы fmDlg FormStyle=Popup Поменяйте на Normal или StayOnTop
  21. Запуск приложения FMX

    Я однажды при создании и заполнении формы временные объекты очищал через Free. На Win32 все работало. При запуске на Adroid получил тот самый черный экран. Поменял на DisposeOf. Все заработало. Но действительно, вариантов может быть уйма. Таких черных экранов при запуске со временем думаю каждый "наловил" с большой чемоданчик. :-)
  22. haword, могу ошибаться, но вроде такое поведение относится только к Android. На iOS в документации лишь не рекомендуют использовать из-за возможного некорректного возврата результата. Я выше выдержку приводил. Там же: Modal dialog boxes are not supported in Android apps. Instead of calling ShowModal, you should call Show, and have the form return and call your event. ... Возможно я что-то еще упустил. Сам ShowModal по рекомендации не использую.
  23. DisposeOf для уничтожаемой формы вроде должен нормально отрабатывать. Но в FMX не рекомендуют использовать ShowModal для мобильных платформ. Из документации: We recommend that you not use modal dialogs on either of the mobile platforms (iOS and Android) because unexpected behavior can result. Not using modal dialogs eliminates potential problems in debugging and supporting your mobile apps.
  24. Еще под андроид вот это можно использовать: System.SysUtils.SysLocale.DefaultLCID // для Рус=ru_RU