Russian Qt Forum
Ноябрь 22, 2024, 14:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Тут кто-нибудь QML Map в Android получал работающую?  (Прочитано 22659 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #30 : Октябрь 30, 2019, 14:07 »

Спасибо, кэп... баг репорт давно открыт, и спрашиваю везде где только возможно. А собирать Qt нет никакого смысла вообще - библиотеки эти есть, и лежат в нужном месте. Почему-то не работает копирование их при сборке проекта. На примере Map Viewer она работает - библиотеки подшиваются. Что сборка Qt изменит? Ничего.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #31 : Октябрь 30, 2019, 14:48 »

У меня есть подозрение, что проблема в том, что в одном приложении активно используется позиционирование и локации в С++ коде, и в QML. На С++ у меня всё отлажено и хорошо работает. Гвоздями намертво прибито, там гамбургер такой, что на QML с ума можно будет сойти если его делать. От QML мне нужна только карта. И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки.
« Последнее редактирование: Октябрь 30, 2019, 14:59 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #32 : Октябрь 30, 2019, 15:15 »

И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки.
Вы в исходники androiddeplotyqt загляните, там будет видно.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #33 : Октябрь 30, 2019, 15:27 »

И тут похоже Qt колдобится, на QT += location positioning он копирует библиотеки С++, а про QML... забывает. Если C++ обработки нет, как в примерах, то он копирует QML библиотеки.
Вы в исходники androiddeplotyqt загляните, там будет видно.
Ну не сразу... на минуточку 2944 строки. И наверно что это не в самой утилите задаётся, а где-то в конфиге.
« Последнее редактирование: Октябрь 30, 2019, 15:28 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #34 : Октябрь 30, 2019, 16:16 »

Упс... есть ещё отличие моего проекта и примеров. Фишка в том, что у меня QML Map используется не в головном проекте, а в subproject, который создаёт shared object. Ну так надо. Разумеется в его файле проекта тоже есть

QT += widgets quick quickwidgets qml network location positioning

И по идее, библиотеки сабпрожектов должны все собираться в одну кучу в каталоге android-build/libs/armeabi-v7a, также как и собираемые библиотеки сабпрожектов (они там и лежат). Но что-то идёт не так.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #35 : Октябрь 30, 2019, 20:18 »

И хакнуть не получается - вручную подтянуть библиотеки.

В проект добавил
Код:
isEmpty(ANDROID_TARGET_ARCH) {
    message("Hack not needed")
}else{
    POSITIONING_EXTRA_LIBS += $$[QT_INSTALL_QML]/QtLocation/libdeclarative_location.so \
                              $$[QT_INSTALL_QML]/QtPositioning/libdeclarative_positioning.so
    ANDROID_EXTRA_LIBS += $${POSITIONING_EXTRA_LIBS}
    LIBS +=  $${POSITIONING_EXTRA_LIBS}
}
Библиотеки под своими исходными именами приехали в каталог ......./android-build/libs/armeabi-v7a и потом вошли в APK, но не вызываются. При запуске то же сообщение в консоль об отсутствующих плагинах. Тогда добавил строки
Код:
        <item>libqml_QtLocation_libdeclarative_location.so:qml/QtLocation/libdeclarative_location.so</item>
        <item>libqml_QtPositioning_libdeclarative_positioning.so:qml/QtPositioning/libdeclarative_positioning.so</item>
в шаблон android/res/values/libs.xml. Строки скопировал влоб из сборочного файла libs.xml примера Map Viewer, который у меня собирается и работает. Строки эти появились в сборке .....android-build/res/values/libs.xml Но это ни на что не повлияло вообще. Пока идеи, как вручную подшить эти библиотеки, исчерпаны.
 
Записан

2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #36 : Октябрь 30, 2019, 20:28 »

Я бегло пробежался по androiddeployqt...
Как я понял, qml модули для него отбирает утилитка qmlimportscanner.
Попробуйте что она у вас возвращает в основном проекте и в подпроекте с qml.
А вот как изменить ee -rootPath из деплоя пока не понятно.

Может попробовать в основной проект добавить dummy.qml с нужным импортом?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #37 : Октябрь 30, 2019, 20:48 »

Я бегло пробежался по androiddeployqt...
Как я понял, qml модули для него отбирает утилитка qmlimportscanner.
Попробуйте что она у вас возвращает в основном проекте и в подпроекте с qml.
А вот как изменить ee -rootPath из деплоя пока не понятно.
Попробую завтра. Сегодня уже устал, с утра весь день с этим воевал...

На самом деле интереснее всего понять - какими текстовыми файлами управляются системные библиотеки, и как они подшиваются. Я это пытался разобрать. С моими собственными библиотеками проблем нет, у меня их создаётся и в проект включается десяток. Все они ложатся в  ......./android-build/libs/armeabi-v7a и оттуда очевидно попадают в APK. Но почему не подшились две системные - мне не понятно.

Может попробовать в основной проект добавить dummy.qml с нужным импортом?
Это идея интересная. Это завтра первым делом попробую. Хотя то, что карты используются в сабпрожекте, не должно влиять - у меня в других приложениях были кучи обращений к разным системным библиотекам из сабпрожектов, и всё без проблем работало. Правда... ни разу при этом не использовался QML.

Ещё наверно стоит попробовать вручную переименовать эти обе системные, и подшить их как свои, из своих каталогов.
« Последнее редактирование: Октябрь 30, 2019, 20:53 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #38 : Октябрь 31, 2019, 16:07 »

Но почему не подшились две системные - мне не понятно.
Скорее всего по тому, что qmlimportscanner просканировал основной проект и не нашел в нем qml с данными зависимостями, а подпроекты не просканировал.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #39 : Октябрь 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.
« Последнее редактирование: Октябрь 31, 2019, 16:37 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.