我正在构建发布版中的Qt/C++ Android应用程序,但是生成了以下APK文件:
Release/android-build/bin/QtApp-debug.apk
Release/android-build/bin/QtApp-debug-unaligned.apk我发现了这个问题,这意味着APK文件是在调试模式下构建的,甚至对于发布版本也是如此。其中的答案意味着,只有在您有证书的情况下,版本构建才有可能。
我遵循了那里的说明,实际上,在创建了证书之后,我得到了以下文件:
Release/android-build/bin/QtApp-release.apk
Release/android-build/bin/QtApp-release-unsigned.apk为什么我需要一个证书来创建一个发行版APK,如果没有证书,那么版本构建和调试构建之间是否有区别,或者它们都包含未优化的代码?
编辑:根据发布的答案,我想澄清一下,为什么没有证书就需要为Qt编译C++代码,同时关闭优化并添加调试信息?
发布于 2015-02-13 21:27:49
这似乎是构建过程中的一个bug。根据所选的构建配置(通过优化和发布模式没有调试信息)编译C++文件。因此,无论您的APK名为QtApp-调试器APK,都会根据您的选择编译内部的二进制文件。
这个问题出现在调用androiddeployqt时。如果您查看来源,它会在接收到--release或接收到--sign时创建一个发布包。Qt从不传递--release,因此它按其应有的方式编译文件,但是androiddeployqt只在使用证书时生成一个发行版--sign,因为Qt通过了--sign。
are部署of创建调试包有什么不同:
gdbserver二进制文件(aprox 250 KB在arm-v7上)ant。这就是使用调试键签名apk的原因。没有证书并不意味着关闭优化和添加调试信息,它只是创建一个调试包,具有调试签名,如果不添加自己的签名,这是必要的。所以毕竟,也许这不是个窃听器。
发布于 2019-05-07 18:02:55
这可能是一个老问题,但我在QT5.12.3中看到了同样的问题,QT5.12.3是一个Release构建,它在Release目录中生成调试APK。
这是因为在启动QtCreator时,我没有检查“签名”复选框(如果您选中它,您将被要求输入密码)。提供密码后,我得到了通常的android-build-release-signed.apk文件。
发布于 2015-02-13 16:37:25
这个应用程序需要一个证书才能发布到Google。此证书标识应用程序和作者,因此您可以更新应用程序。
重要的是:不要丢失你用来发布应用程序的密钥,否则你就不能再更新了。
您可以为发布模式和调试模式对应用程序进行签名,Android允许对其进行签名以进行调试,但您需要自己的密钥来签署发布。发布模式就是Google Play的版本。
关于Android应用程序的发布过程,有很好的文档。您可以在这里查看更详细的信息:http://developer.android.com/tools/publishing/preparing.html和http://developer.android.com/tools/publishing/app-signing.html
与版本/调试之间的区别有关,我不确定,但我的猜测是,它只与Qt库有关,而不是与在构建过程中生成的Android本机代码相关,因此您可以查看编译版本的大小,以获得更好的效果。
https://stackoverflow.com/questions/23028313
复制相似问题