Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Android:为什么要为发布版本创建QtApp-debug.apk?_Android_C++_Qt_Apk - Fatal编程技术网

Qt Android:为什么要为发布版本创建QtApp-debug.apk?

Qt Android:为什么要为发布版本创建QtApp-debug.apk?,android,c++,qt,apk,Android,C++,Qt,Apk,我正在发布版本中构建我的Qt/C++Android应用程序,但是生成了以下APK文件: Release/android-build/bin/QtApp-debug.apk Release/android-build/bin/QtApp-debug-unaligned.apk 我发现这意味着APK文件是在调试模式下构建的,即使是发布版本。这里的答案意味着只有在您拥有证书的情况下,发布版本才有可能 我按照那里的说明进行操作,事实上,在创建证书之后,我得到了以下文件: Release/android

我正在发布版本中构建我的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 Creator不需要有一个证书,要求< >强> >编译优化关闭和调试信息添加的C++代码?

< p>需要一个证书才能发布到谷歌播放。 此证书标识应用程序和作者,因此您可以更新应用程序

重要: 不要丢失用于发布应用程序的密钥,否则您将无法再更新它

您可以在发布和调试模式下对应用程序进行签名,Android SDK允许对其进行调试签名,但您需要自己的密钥才能进行发布签名。发布模式是Google Play的模式

关于Android应用程序的发布过程,有很多很好的文档。 您可以在此处查看更详细的信息: 在这里:


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

这似乎是Qt Creator构建过程中的一个错误。C++文件按照所选的编译配置(具有优化和释放模式下的调试信息)进行编译。因此,无论您的APK名为QtApp-debug.APK,其中的二进制文件都会根据您的选择进行编译

调用
androiddeployqt
时会出现问题。如果您查看,它会在收到
--release
或收到
--sign
时创建发布包。Qt Creator从不传递
--release
,因此它会按其应该的方式编译文件,但是
androiddeployqt
仅在您使用证书时生成发布APK,因为Qt Creator传递
--sign

androiddeployqt创建调试包的区别是什么:

  • 包名
  • 它包括一个
    gdbserver
    二进制文件(arm-v7上大约250 KB)
  • 它用'debug'而不是'release'调用
    ant
    。这就是使用调试密钥对apk进行签名的原因

没有证书并不是关闭优化和添加调试信息,它只是创建一个调试包,带有调试签名,如果您不添加自己的调试包,这是必需的。所以说到底,这可能不是一个bug。

这可能是一个老问题,但我已经在Qt5.12.3中看到了同样的问题,Qt5.12.3是一个
发行版
发行版
目录中生成的调试APK


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

您是否也尝试了第一个建议更改QtCreator的答案?@LaszloPapp是的,那里的解决方案有效,但我现在改变了我的问题,问我为什么需要证书,如果它真的是一个调试版本,除非有证书。我想你需要证书才能在市场上提交它?@LaszloPapp查看我的编辑,还有
QtApp发行版unsigned.apk
,但我不会得到它,除非我使用了证书。谢谢,但我不确定你的答案在哪里涵盖了为什么要创建调试而不是发布版本。为什么没有证书需要编译C++代码,关闭了优化和调试信息?我不理解你的问题,你问为什么它不需要证书来生成调试模式?在Android页面中,您可以使用证书在调试模式下构建,但使用Android SDK生成的证书。