Qt Android: ¿Por qué se crea QtApp-debug.apk para una versión de Release?

Estoy construyendo mi aplicación Android Qt / C ++ en la versión de lanzamiento, sin embargo, los siguientes archivos APK se producen:

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

Encontré esta pregunta que implica que los archivos de APK se construyen en modo de depuración incluso para versiones de versión. Las respuestas allí implican que las compilaciones de lanzamiento son posibles sólo si usted tiene un certificado.

Seguí las instrucciones allí, y de hecho después de crear un Certificado, obtengo estos archivos en su lugar:

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

¿Por qué necesito un certificado para crear un APK de lanzamiento y, si no hay un certificado, hay una diferencia entre la generación de lanzamientos y la compilación de depuración, o ambos contienen código no optimizado?

Edit: A la luz de la respuesta publicada, me gustaría aclarar que estoy preguntando por qué no tener un certificado necesario para Qt Creator para compilar código C + + con las optimizaciones desactivadas y depurar información agregada?

Esto parece ser un error en el proceso de creación de Qt Creator. Los archivos C ++ se compilan como deberían, de acuerdo con la configuración de compilación seleccionada (con optimizaciones y sin información de depuración en el modo de liberación). Así que no importa su APK se llama QtApp-debug.apk, los binarios dentro se compilan como usted elija.

El problema se produce cuando se llama a androiddeployqt . Si miras la fuente , crea un paquete de liberación si recibe --release o también cuando recibe --sign . Qt Creator nunca pasa el --release , por lo que compila los archivos como debería, pero androiddeployqt sólo genera una versión APK cuando se utiliza un certificado, ya que Qt Creator pasa el --sign

¿Cuáles son las diferencias de androiddeployqt creando un paquete de depuración:

  • El nombre del paquete
  • Incluye un binario gdbserver (aprox 250 KB en arm-v7)
  • Se llama ant con 'depuración' en lugar de 'liberación'. Esto es lo que hace que su apk firmado con una clave de depuración

No tener un certificado no está desactivando las optimizaciones y añadiendo información de depuración, sino que sólo está creando un paquete de depuración, con la firma de depuración que es necesaria si no agrega la propia. Así que después de todo, tal vez no es un error.

La aplicación necesita un certificado para publicar en Google Play. Este certificado identifica la aplicación y el autor, por lo que puede actualizar la aplicación.

Importante: no pierda la clave que utilizó para publicar su aplicación, de lo contrario no podrá actualizarla.

Puedes firmar tu aplicación tanto para el modo de liberación como para el modo de depuración, el SDK de Android permite firmarlo para depurar, pero necesitas tu propia clave para firmar para la liberación. El modo de liberación es el que va a Google Play.

Hay buena documentación sobre el proceso de publicación de las aplicaciones de Android. Usted puede echar un vistazo a información más detallada aquí: http://developer.android.com/tools/publishing/preparing.html y aquí: http://developer.android.com/tools/publishing/app-signing.html

Relacionado con la diferencia entre Release / Debug, no estoy seguro, pero supongo que solo estará relacionado con las bibliotecas Qt, no con el código nativo de Android generado en tu proceso de compilación, puedes echar un vistazo al tamaño De las versiones compiladas para una mejor imagen.

  • Portar aplicaciones basadas en Qt en Android
  • Cómo eliminar el rectángulo de fecha seleccionado en QCalendarWidget y pequeños iconos en widgets
  • Bloqueo de orientación de pantalla QML
  • QNetwork error cuando se utiliza Qt lib con la aplicación JNI Android nativa
  • Trabajar alrededor de QString móvil error
  • En Qt / QML, cómo cargar diferentes imágenes para diferentes densidades de dispositivos (Android)
  • Qt / Necessitas - QFileDialog reemplazo / piel?
  • ¿Cuál es mejor android o qt?
  • No se muestra SVG en QML en Android
  • TeamSpeak SDK en Android con Qt
  • Cómo agregar actividad de SDK en Qt para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.