Qt Android: почему QtApp-debug.apk создан для сборки выпуска?

Я собираю свое приложение для Android на Qt / C ++ в Release build, однако создаются следующие файлы APK:

Release/android-build/bin/QtApp-debug.apk
Release/android-build/bin/QtApp-debug-unaligned.apk

я нашел этот вопрос Это означает, что файлы APK создаются в режиме отладки даже для сборок Release. Ответы там подразумевают, что сборки Release возможны, только если у вас есть Сертификат.

Я следовал инструкциям там, и действительно после создания сертификата я получаю эти файлы:

Release/android-build/bin/QtApp-release.apk
Release/android-build/bin/QtApp-release-unsigned.apk

Зачем мне нужен сертификат для создания Release APK, и если нет сертификата, есть ли разница между сборкой Release и сборкой Debug, или они оба содержат неоптимизированный код?

Редактировать: В свете опубликованного ответа я хотел бы уточнить, почему я спрашиваю, почему не имея сертификата, необходимо Qt Creator для компиляции кода C ++ с отключенной оптимизацией и добавленной отладочной информацией?

10

Решение

Это похоже на ошибку в процессе сборки Qt Creator. Файлы C ++ компилируются так, как они должны, в соответствии с выбранной конфигурацией сборки (с оптимизацией и без отладочной информации в режиме выпуска). Поэтому, независимо от того, какой ваш APK называется QtApp-debug.apk, двоичные файлы внутри него компилируются по вашему выбору.

Проблема приходит при звонке androiddeployqt, Если вы посмотрите на источник, создает пакет выпуска, если получает --release или также когда он получает --sign, Qt Creator никогда не проходит --release, поэтому он компилирует файлы, как и должно, но androiddeployqt только генерирует APK релиза, когда вы используете сертификат, потому что Qt Creator передает --sign

В чем отличия androiddeployqt при создании отладочного пакета:

  • Название пакета
  • Включает в себя gdbserver бинарный (приблизительно 250 кбайт на arm-v7)
  • Это вызов ant с «отладкой» вместо «выпуска». Это то, что делает ваш apk подписанным с помощью ключа отладки.

Отсутствие сертификата не означает отключение оптимизаций и добавление отладочной информации, это просто создание пакета отладки с отладочной подписью, которая необходима, если вы не добавляете свою собственную. В конце концов, может быть, это не ошибка.

7

Другие решения

Для публикации в Google Play приложению необходим сертификат.
Этот сертификат определяет приложение и автора, чтобы вы могли обновить приложение.

Важный:
Не теряйте ключ, который вы использовали для публикации своего приложения, иначе вы не сможете его обновить.

Вы можете подписать свое приложение как для выпуска, так и для режима отладки, Android SDK позволяет подписать его для отладки, но вам нужен собственный ключ для подписи для выпуска. Режим релиза — тот, который идет в Google Play.

Есть хорошая документация о процессе публикации приложений для Android.
Вы можете посмотреть более подробную информацию здесь: http://developer.android.com/tools/publishing/preparing.html
и здесь: http://developer.android.com/tools/publishing/app-signing.html

Относительно разницы между Release / Debug я не уверен, но я предполагаю, что это будет связано только с библиотеками Qt, а не с собственным кодом Android, сгенерированным в процессе сборки, вы можете посмотреть на размер скомпилированных версий для лучшей картины.

1

По вопросам рекламы [email protected]