Qt Create 4.6.2無法自動生成Android Kit


開發環境:

  • OSMicrosoft Windows [Version 10.0.17134.523]
  • Qt,5.11.1
  • Qt Creator,4.6.2
  • JDK,1.8.0_181
  • Android SDK,26.1.1
  • NDK,18.1

   

起因

心血來潮,突然想產生用Qt編寫Android程序,根據網上的教程,在Tools-Options-Devices-Android配置好JDK、Android SDK、NDK后:

   

均提示配置成功,但無法像教程一樣,自動生成Android Kit,新建工程時,無法選擇Android:

   

網上查找到的教程都是使用Qt Creator 3作為例子,於是猜測是Qt Creator版本的問題。

之后Google上找到一篇文章,有人在Qt Creator 4.6.2上安裝成功了:

https://developernote.com/2018/05/setting-up-qt-creator-4-6-1-for-android-development-on-windows-10/

   

於是下載Qt Creator 4.6.2源碼,分析下原因。

   

分析

初步分析后,定位到在保存設置的時候,會自動創建Android Kit:

   

進入AndroidConfigurations::updateAutomaticKitList()查看,找到關鍵代碼:

自動生成的Android Kit使用的是自動檢測的編譯工具鏈,如果自動檢測的編譯工具鏈中找不到API匹配的編譯工具鏈,則不會創建對應ABI的Android Kit。

那么可推測,成功的人應該能在NDK中自動檢測到編譯工具鏈,那么為什么我這里檢測不到?回到剛剛保存配置的函數,發現有注冊新編譯工具鏈的函數,猜測該函數用於自動檢測NDK中的編譯工具鏈:

進入AndroidConfigurations::registerNewToolChains()查看,發現的是這樣:

繼續分析AndroidToolChainFactory::autodetectToolChainsForNdk(),發現只會捕獲GCC編譯器。

   

查看NDK的更新公告

https://developer.android.google.cn/ndk/downloads/revision_history

發現在r18b版本后,移除了GCC編譯器,使用Clang編譯器代替:

   

查看自己的NDK版本,為18.1,那么應該是這個問題了。並且網上的教程都是在2018年前發布的,版本低於r18,所有能夠配置成功。不知道新版本的Qt Creator是否修復了這個bug。

   

總結

在NDK版本高於r18b時,移除了GCC編譯器工具,使用了Clang編譯器代替。Qt Creator 4.6.2版本只會檢測GCC編譯器,當找不到編譯器后 ,Android Kit就不會自動創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM