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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Косяк в автоматической настройке проектов для Qt 5.9.6 и Creator 4.6.2  (Прочитано 2099 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

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


Просмотр профиля
« : Июль 18, 2018, 21:42 »

Перевожу свои приложения для Android на API level 26 (Android 8 Oreo). Раньше всё нормально было с API level 23, но с августа новые на Google Play должны быть собраны для level 26, а мне проще всё перевести сразу и не заморачиваться потом. Установил API и Qt 5.9.6 с QtCreator 4.6.2, так как API 26 теперь не поддерживает сборку с ant, только gradle. Повозился, но всё собрал. Установил на смартфон с Android 7 Nougat (API level 24) - вроде работает. Увы, девайса с Android 8 у меня нет, но для него почти нет изменений. Какие-то мелочи вылезли, но всё поправимо. Установил на планшет с Android 4.1 так как минимальный API у меня настроен для этой версии. При запуске падает с сообщением системы Android. Запускаю с рабочей станции в QtCreator, через USB. Оба-на... падает с сообщением что не найдена одна из моих библиотек. Но я файлы проектов не менял, все библиотеки включены - ведь на 7-ке работает же. Более того - я в этой самой библиотеке, которая не найдена, включал qWarning() чтобы мелкий баг убрать. И оно работало.

Смотрю на файлы проектов - всё вроде на месте, но замечаю что в проект добавлен DISTFILES += с подключением gradle. То есть, при настройке проекта при первой загрузке в Qt 4.6.2 он это автоматически добавил. Пялюсь на проект как баран на новые ворота. Ничего не понимаю... Строки с подключением моих библиотек есть - но ведь не работает же. Библиотеки мои подключаются из своих каталогов, поскольку используются в нескольких головных проектах. Тут они собираются все в переменную ANDROID_EXTRA_LIBS как положено. Добавляю ниже этого message($$ANDROID_EXTRA_LIBS), проверяю - все библиотеки есть. Ничего не понимаю...

И тут замечаю, что я вижу не весь проект - раньше он целиком в экран креатора помещался, голова небольшая, всё остальное в инклюдах .pri, которые не поменялись. Но теперь внизу есть новые строки, которые не поместились в экран. ТВОЮ МАТЬ! Оказывается при настройке проекта креатор добавил в самый конец, и я это не видел:

Код:
contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
    ANDROID_EXTRA_LIBS = \
}

То есть, эта скотина просто затёрла содержимое ANDROID_EXTRA_LIBS присвоением пустоты вместо добавления "+=". Убил бы таких разработчиков! Убрал эту ерунду, собрал проект, установил на Android 4.1 - всё работает.

Но тут возник вопрос - а как же оно на 7-ке то работало?... Полез смотреть, какие оно файлы генерит и где они ложатся. Обнаружил, что кроме файлов библиотек, которые генерятся по моим настройкам, и ложатся туда, где указано у каждого подпроекта в его DESTDIR, теперь ещё создаются одноимённые файлы библиотек в каталоге сборки приложения, в подкаталоге libs. Ничего подобного в предыдущей версии QtCreator 4.0.2 не было, я год назад, когда сборку настраивал всё это тщательно проверял. Что ещё страннее - в каталоге DESTDIR подпроекта и в каталоге libs приложения у одноимённых библиотек... разные размеры. Шокированный И время отличается на пару секунд. Очевидно разработчики Qt и тут напортачили - каким-то образом запускаются две сборки. Причём у меня в проектах нигде нет сборки с записью в каталог libs проекта - это оно уже само как-то их настроило. Уф... Руки бы поотрывать... ГДЕ настроена эта сборка?! И почему размеры разные???!! В каталоге libs проекта файлы меньше, чем в моих DESTDIR. Отладчик тут ни при чём - я собираю только релизы, отладчик повсеместно отключен.
« Последнее редактирование: Июль 18, 2018, 21:45 от Гурман » Записан

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


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