我在Release版本中构建了我的Qt / C ++ Android应用程序,但是生成了以下APK文件:
Release/android-build/bin/QtApp-debug.apk
Release/android-build/bin/QtApp-debug-unaligned.apk
我发现this question表示即使对于发布版本,APK文件也是以调试模式构建的。这里的答案暗示只有拥有证书才能实现发布版本。
我按照那里的说明操作,确实在创建证书后,我得到了这些文件:
Release/android-build/bin/QtApp-release.apk
Release/android-build/bin/QtApp-release-unsigned.apk
为什么我需要一个证书才能创建一个Release APK,如果没有证书,Release版本和Debug版本之间是否有区别,或者它们都包含未经优化的代码?
修改:根据已发布的答案,我想澄清一下,我问为什么没有证书需要用于Qt创建者编译C ++代码并关闭优化并添加调试信息?
答案 0 :(得分:7)
这似乎是Qt Creator构建过程中的一个错误。根据所选的构建配置(在发布模式下进行优化和调试信息),C ++文件按照应有的顺序进行编译。因此,无论您的APK被命名为QtApp-debug.apk,内部的二进制文件都会根据您的选择进行编译。
调用androiddeployqt
时出现问题。如果您查看source,则会在收到--release
或收到--sign
时创建发布包。 Qt Creator从不传递--release
,因此它会按原样编译文件,但androiddeployqt
只在您使用证书时生成一个版本APK,因为Qt Creator会传递--sign
androiddeployqt创建调试包有什么区别:
gdbserver
二进制文件(arm-v7上的aprox 250 KB)ant
。这是使用调试密钥签名你的apk的原因没有证书不会关闭优化并添加调试信息,它只是创建一个调试包,如果你不添加自己的调试签名是必要的。毕竟,也许这不是一个错误。
答案 1 :(得分:1)
该应用需要一个证书才能发布到Google Play。 此证书标识应用和作者,因此您可以更新应用。
重要的: 不要丢失用于发布应用的密钥,否则您无法再更新它。
您可以为发布和调试模式签署您的应用,Android SDK允许签名进行调试,但您需要自己的密钥才能签署发布。发布模式适用于Google Play。
有关Android应用发布流程的详细文档。 您可以在此处查看更详细的信息:http://developer.android.com/tools/publishing/preparing.html 在这里:http://developer.android.com/tools/publishing/app-signing.html
与发布/调试之间的区别有关,我不确定,但我的猜测是它只与Qt库相关,而不是与构建过程中生成的Android本机代码有关,可以查看已编译版本的大小,以获得更好的图片。
答案 2 :(得分:1)
这可能是一个古老的问题,但我在Release
目录中通过Release
构建生成的调试APK见证了Qt 5.12.3的相同问题。
发生这种情况是因为启动QtCreator时,我没有选中“签名”复选框(如果您选中了它,系统将要求您输入密码)。提供密码后,我得到了通常的android-build-release-signed.apk
文件。