Название: [РЕШЕНО] Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 20:41 Похоже на ещё одну дыру набрёл. В Android приложение на
Код: import QtPositioning 5.8 Код: : qrc:/map.qml:4:1: module "QtLocation" is not installed В Linux Kubuntu 18.04 LTS нормально работает, карту показывает. Мой код один и тот же. Может я где-то зевнул что-то для Android специфичное? В Манифесте вроде всё необходимое есть, ++нутые вызовы позиционирования и локации в Android все работают. Глюк только с QML. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 20:47 Цитировать Тут кто-нибудь QML Map в Android получал работающую? Ну так вот. :)http://www.prog.org.ru/index.php?topic=32513.msg240171#msg240171 Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 20:50 Цитировать Тут кто-нибудь QML Map в Android получал работающую? Ну так вот. :)http://www.prog.org.ru/index.php?topic=32513.msg240171#msg240171 Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 20:51 В Linux Kubuntu 18.04 LTS нормально работает, карту показывает. Мой код один и тот же. Может я где-то зевнул что-то для Android специфичное? В Манифесте вроде всё необходимое есть, ++нутые вызовы позиционирования и локации в Android все работают. Глюк только с QML. А в каталоге сборки плагины эти есть?androiddeployqt их туда копирует? Что в логах деплоя? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 20:55 В Linux Kubuntu 18.04 LTS нормально работает, карту показывает. Мой код один и тот же. Может я где-то зевнул что-то для Android специфичное? В Манифесте вроде всё необходимое есть, ++нутые вызовы позиционирования и локации в Android все работают. Глюк только с QML. А в каталоге сборки плагины эти есть?androiddeployqt их туда копирует? Что в логах деплоя? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 20:55 Какая версия Qt? Qt 5.13.1В какой ОС собиралось? ArchLinux.С QML не было вообще проблем? Нет.Можно увидеть шапку QML с import-ами? Код
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 20:57 Наверно нет. Откуда они возьмутся в каталоге сборки? Я считал что их должен Qt5 для Android с собой притащить. Это он их и притянет. Если все нормально.androiddeployqt плагины Qt копирует в директорию сборки для заворачивания их в apk. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:02 Они должны быть в ..........android-build/libs/armeabi-v7a ? И как называться?
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 21:06 Они должны быть в ..........android-build/libs/armeabi-v7a ? И как называться? Да.libplugins_geoservices_libqtgeoservices_esri.so libplugins_geoservices_libqtgeoservices_itemsoverlay.so libplugins_geoservices_libqtgeoservices_mapbox.so libplugins_geoservices_libqtgeoservices_nokia.so libplugins_geoservices_libqtgeoservices_osm.so libplugins_position_libqtposition_android.so libplugins_position_libqtposition_positionpoll.so libqml_QtLocation_libdeclarative_location.so Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:08 Они должны быть в ..........android-build/libs/armeabi-v7a ? И как называться? Да.libplugins_geoservices_libqtgeoservices_esri.so libplugins_geoservices_libqtgeoservices_itemsoverlay.so libplugins_geoservices_libqtgeoservices_mapbox.so libplugins_geoservices_libqtgeoservices_nokia.so libplugins_geoservices_libqtgeoservices_osm.so libplugins_position_libqtposition_android.so libplugins_position_libqtposition_positionpoll.so libqml_QtLocation_libdeclarative_location.so Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 21:11 Все есть, кроме последнего. Вот же блин... Еще этот забыл:libqml_QtPositioning_libdeclarative_positioning.so А в директории где Qt установлена в плагинах они есть? Может не все установлено для андроида? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:15 Все есть, кроме последнего. Вот же блин... Еще этот забыл:libqml_QtPositioning_libdeclarative_positioning.so А в директории где Qt установлена в плагинах они есть? Может не все установлено для андроида? Полез смотреть в каталоги Qt. Но что делать, если их и там нет? Переходить на 5.13.1?... Странно это всё как-то... Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:19 И, кстати, в каком они должны быть каталоге?
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 21:20 Полез смотреть в каталоги Qt. Они должны лежать где-то вlib/qml/QtPositioning/libdeclarative_positioning.so lib/qml/QtLocation/libdeclarative_location.so Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:23 Полез смотреть в каталоги Qt. Они должны лежать где-то вlib/qml/QtPositioning/libdeclarative_positioning.so lib/qml/QtLocation/libdeclarative_location.so Есть такие: /home/gourmand/Qt5/5.12.5/5.12.5/android_armv7/qml/QtLocation/libdeclarative_location.so /home/gourmand/Qt5/5.12.5/5.12.5/android_armv7/qml/QtPositioning/libdeclarative_positioning.so Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 21:26 Код: QT += location Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:28 Код: QT += location В проекте разделямого объектника (в котором карта рисуется) указано QT += widgets multimedia quick quickwidgets qml network location positioning в проекте всего приложения тоже QT += core gui svg quick quickwidgets qml network positioning location sensors Ну собственно без этого оно бы в Linux не заработало. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 21:31 Всё, надо посуду помыть и спать. Завтра буду дальше разбираться...
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 21:35 Вы из QtCreator собираете?
На закладке "Проекты" -> Сборка -> Сборка Android APK (это группа где приложение подписывается) есть checkbox "Расширенный вывод". Включите его, тогда в консоль будет сыпаться подробный лог деплоя и gradle. Посмотрите там, может будут причины, почему они не копируются. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 29, 2019, 22:00 Вы из QtCreator собираете? На закладке "Проекты" -> Сборка -> Сборка Android APK (это группа где приложение подписывается) есть checkbox "Расширенный вывод". Включите его, тогда в консоль будет сыпаться подробный лог деплоя и gradle. Посмотрите там, может будут причины, почему они не копируются. Не удержался. Попробовал. Получил листинг сборки 3796 строк. Но Kate в нём имена ни одной из этих библиотек не находит... Всё, тупик. Ради забавы завтра попробую ручками взять эти библиотеки и перенести в каталог сборки, дать им правильные имена, и попробовать собрать APK. Хотя бы чтобы увидеть карту на своём смартфоне. Но уже есть что дописать в баг-репорт Qt, который я создал. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 29, 2019, 22:41 А такой вопрос, вы руками файлы из директория android не изменяли?
Например, android/res/value/libs.xml? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: kambala от Октябрь 30, 2019, 01:00 Но что делать, если их и там нет? Переходить на 5.13.1?... Странно это всё как-то... что мешает собрать нужную версию самому из исходников?Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 10:16 А такой вопрос, вы руками файлы из директория android не изменяли? Например, android/res/value/libs.xml? Нет, у меня нет дурной привычки лазить грязными руками в конфиги, которые я сам не писал. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 10:17 что мешает собрать нужную версию самому из исходников? Отсутствие гарантии что глюк не пропадёт. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: kambala от Октябрь 30, 2019, 10:43 что мешает собрать нужную версию самому из исходников? Отсутствие гарантии что глюк не пропадёт. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 11:26 что мешает собрать нужную версию самому из исходников? Отсутствие гарантии что глюк не пропадёт. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 11:32 А такой вопрос, вы руками файлы из директория android не изменяли? Например, android/res/value/libs.xml? Этот файл имеет весьма странный вид. Код: <?xml version='1.0' encoding='utf-8'?> Откуда тут взялся qt-5.7, если этот проект никогда с этой версией Qt не собирался? Я его начал делать на 5.9. а 5.7 у меня вообще не был никогда установлен. Что это за бред? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 30, 2019, 11:36 Откуда тут взялся qt-5.7, если этот проект никогда с этой версией Qt не собирался? Я его начал делать на 5.9. а 5.7 у меня вообще не был никогда установлен. Что это за бред? Это шаблонный файл. У меня там тоже 5.7. :)Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 11:51 Не. Увы, копирование с переименованием этих двух файлов не помогло. В APK они не вошли. Их нет в списках. Ну не включать же их в проект явно...
Полное удаление каталога сборки тоже не помогло. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: kambala от Октябрь 30, 2019, 13:39 У меня нет времени на эксперименты без гарантированного результата. время на форум же есть :) тратится 10-15 минут на выяснение нужных флагов для configure и запускается сборка в фоне (за час соберет, наверное).спроси еще на форуме Qt / stackoverflow / открой баг репорт. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 14:07 Спасибо, кэп... баг репорт давно открыт, и спрашиваю везде где только возможно. А собирать Qt нет никакого смысла вообще - библиотеки эти есть, и лежат в нужном месте. Почему-то не работает копирование их при сборке проекта. На примере Map Viewer она работает - библиотеки подшиваются. Что сборка Qt изменит? Ничего.
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 14:48 У меня есть подозрение, что проблема в том, что в одном приложении активно используется позиционирование и локации в С++ коде, и в QML. На С++ у меня всё отлажено и хорошо работает. Гвоздями намертво прибито, там гамбургер такой, что на QML с ума можно будет сойти если его делать. От QML мне нужна только карта. И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки.
Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 30, 2019, 15:15 И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки. Вы в исходники androiddeplotyqt загляните, там будет видно.Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 15:27 И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки. Вы в исходники androiddeplotyqt загляните, там будет видно.Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 16:16 Упс... есть ещё отличие моего проекта и примеров. Фишка в том, что у меня QML Map используется не в головном проекте, а в subproject, который создаёт shared object. Ну так надо. Разумеется в его файле проекта тоже есть
QT += widgets quick quickwidgets qml network location positioning И по идее, библиотеки сабпрожектов должны все собираться в одну кучу в каталоге android-build/libs/armeabi-v7a, также как и собираемые библиотеки сабпрожектов (они там и лежат). Но что-то идёт не так. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 20:18 И хакнуть не получается - вручную подтянуть библиотеки.
В проект добавил Код: isEmpty(ANDROID_TARGET_ARCH) { Код: <item>libqml_QtLocation_libdeclarative_location.so:qml/QtLocation/libdeclarative_location.so</item> Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 30, 2019, 20:28 Я бегло пробежался по androiddeployqt...
Как я понял, qml модули для него отбирает утилитка qmlimportscanner. Попробуйте что она у вас возвращает в основном проекте и в подпроекте с qml. А вот как изменить ee -rootPath из деплоя пока не понятно. Может попробовать в основной проект добавить dummy.qml с нужным импортом? Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 30, 2019, 20:48 Я бегло пробежался по androiddeployqt... Попробую завтра. Сегодня уже устал, с утра весь день с этим воевал...Как я понял, qml модули для него отбирает утилитка qmlimportscanner. Попробуйте что она у вас возвращает в основном проекте и в подпроекте с qml. А вот как изменить ee -rootPath из деплоя пока не понятно. На самом деле интереснее всего понять - какими текстовыми файлами управляются системные библиотеки, и как они подшиваются. Я это пытался разобрать. С моими собственными библиотеками проблем нет, у меня их создаётся и в проект включается десяток. Все они ложатся в ......./android-build/libs/armeabi-v7a и оттуда очевидно попадают в APK. Но почему не подшились две системные - мне не понятно. Может попробовать в основной проект добавить dummy.qml с нужным импортом? Это идея интересная. Это завтра первым делом попробую. Хотя то, что карты используются в сабпрожекте, не должно влиять - у меня в других приложениях были кучи обращений к разным системным библиотекам из сабпрожектов, и всё без проблем работало. Правда... ни разу при этом не использовался QML.Ещё наверно стоит попробовать вручную переименовать эти обе системные, и подшить их как свои, из своих каталогов. Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Old от Октябрь 31, 2019, 16:07 Но почему не подшились две системные - мне не понятно. Скорее всего по тому, что qmlimportscanner просканировал основной проект и не нашел в нем qml с данными зависимостями, а подпроекты не просканировал.Название: Re: Тут кто-нибудь QML Map в Android получал работающую? Отправлено: Гурман от Октябрь 31, 2019, 16:14 Но почему не подшились две системные - мне не понятно. Скорее всего по тому, что qmlimportscanner просканировал основной проект и не нашел в нем qml с данными зависимостями, а подпроекты не просканировал.Da-h! Я заглянул в исходник qmlimportscanner и после этого сразу подшил dummy.qml с пустым Item и импортом двух библиотек. И это сработало! Библиотеки появились в каталоге, подшились, сообщение об их отсутствии при старте исчезло. В приложении появилась надпись Map © WikiMedia Foundation. То есть - проблема решена. Правда карту всё равно не рисует - в консоли сообщение : qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed Ну это уже другой вопрос, буду смотреть примеры. Хотя опять же - про SSL/TLS ничего не говорится в описании использования QML Map. |