首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtApp:为什么QtApp-调试器是为发布版本创建的?

QtApp:为什么QtApp-调试器是为发布版本创建的?
EN

Stack Overflow用户
提问于 2014-04-12 08:57:56
回答 3查看 5.3K关注 0票数 12

我正在构建发布版中的Qt/C++ Android应用程序,但是生成了以下APK文件:

代码语言:javascript
复制
Release/android-build/bin/QtApp-debug.apk
Release/android-build/bin/QtApp-debug-unaligned.apk

我发现了这个问题,这意味着APK文件是在调试模式下构建的,甚至对于发布版本也是如此。其中的答案意味着,只有在您有证书的情况下,版本构建才有可能。

我遵循了那里的说明,实际上,在创建了证书之后,我得到了以下文件:

代码语言:javascript
复制
Release/android-build/bin/QtApp-release.apk
Release/android-build/bin/QtApp-release-unsigned.apk

为什么我需要一个证书来创建一个发行版APK,如果没有证书,那么版本构建和调试构建之间是否有区别,或者它们都包含未优化的代码?

编辑:根据发布的答案,我想澄清一下,为什么没有证书就需要为Qt编译C++代码,同时关闭优化并添加调试信息?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的原因。

没有证书并不意味着关闭优化和添加调试信息,它只是创建一个调试包,具有调试签名,如果不添加自己的签名,这是必要的。所以毕竟,也许这不是个窃听器。

票数 10
EN

Stack Overflow用户

发布于 2019-05-07 18:02:55

这可能是一个老问题,但我在QT5.12.3中看到了同样的问题,QT5.12.3是一个Release构建,它在Release目录中生成调试APK。

这是因为在启动QtCreator时,我没有检查“签名”复选框(如果您选中它,您将被要求输入密码)。提供密码后,我得到了通常的android-build-release-signed.apk文件。

票数 2
EN

Stack Overflow用户

发布于 2015-02-13 16:37:25

这个应用程序需要一个证书才能发布到Google。此证书标识应用程序和作者,因此您可以更新应用程序。

重要的是:不要丢失你用来发布应用程序的密钥,否则你就不能再更新了。

您可以为发布模式和调试模式对应用程序进行签名,Android允许对其进行签名以进行调试,但您需要自己的密钥来签署发布。发布模式就是Google Play的版本。

关于Android应用程序的发布过程,有很好的文档。您可以在这里查看更详细的信息:http://developer.android.com/tools/publishing/preparing.htmlhttp://developer.android.com/tools/publishing/app-signing.html

与版本/调试之间的区别有关,我不确定,但我的猜测是,它只与Qt库有关,而不是与在构建过程中生成的Android本机代码相关,因此您可以查看编译版本的大小,以获得更好的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23028313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档