2014-04-12 61 views
10

我建立我的發佈版本的Qt/C++的Android應用程序,但下面的APK文件製作:Qt Android:爲什麼爲Release版本創建QtApp-debug.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 

爲什麼我需要一個證書來創建一個發佈APK,如果沒有證書,是發佈版本和調試版本之間有區別,還是它們都包含未優化的代碼?

編輯:在公佈答案的光,我想澄清,我問爲什麼沒有證書必要爲Qt Creator的編譯C++與優化代碼關閉並添加調試信息?

+0

你是否也嘗試了第一個答案,提示QtCreator的改變? – lpapp

+0

@LaszloPapp是的,解決方案在那裏工作,但我現在改變了我的問題,問我爲什麼需要一個證書,以及它是否真的是一個調試版本,除非有證書。 – sashoalm

+0

我以爲你會需要證書再次提交市場? – lpapp

回答

6

這似乎是Qt Creator構建過程中的一個錯誤。根據選定的構建配置(優化和釋放模式上沒有調試信息),C++文件按照它們應該進行編譯。因此,無論您的APK被命名爲QtApp-debug.apk,二進制文件都會根據您的選擇進行編譯。

調用androiddeployqt時出現問題。如果您查看source,它會創建一個發行包,前提是它收到--release或收到--sign。Qt Creator中從未經過--release,所以它編譯的文件,因爲它應該,但如果您使用證書,因爲Qt Creator的傳遞androiddeployqt只生成一個版本APK的--sign

什麼是androiddeployqt創建調試包的區別:

  • 包名稱
  • 它包括一個gdbserver二進制(近似250 KB上臂-V7)
  • 它調用ant與代替 '釋放' '調試'。這是什麼使一個調試密鑰簽名apk文件

沒有一個證書不被關閉的優化和加入調試信息,它只是創建調試封裝,調試簽名,如果你不加這是必要的你自己。畢竟,也許這不是一個錯誤。

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本機代碼,您可以查看編譯版本的大小以獲得更好的圖片。

+0

謝謝,但我不確定你的答案涵蓋了哪些內容**爲什麼它正在創建調試而不是發佈版本。爲什麼沒有證書需要它關閉優化和添加調試信息來編譯C++代碼? – sashoalm

+0

我不明白你的問題,你問爲什麼它不需要生成調試模式的證書? 它在Android頁面中,可以使用證書以調試模式構建,但使用由Android SDK生成的模式。 – danielfranca

相關問題