Я собираю свое приложение для 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 ++ с отключенной оптимизацией и добавленной отладочной информацией?
Это похоже на ошибку в процессе сборки 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 подписанным с помощью ключа отладки.Отсутствие сертификата не означает отключение оптимизаций и добавление отладочной информации, это просто создание пакета отладки с отладочной подписью, которая необходима, если вы не добавляете свою собственную. В конце концов, может быть, это не ошибка.
Для публикации в 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, сгенерированным в процессе сборки, вы можете посмотреть на размер скомпилированных версий для лучшей картины.