Qt 5.15.1 Android开发环境搭建
<h1 id="qt-android开发一环境搭建">Qt Android开发(一)环境搭建</h1><p>开发环境:</p>
<blockquote>
<p>Qt 版本:Qt 5.15.1</p>
<p>环境:Windows 10</p>
</blockquote>
<p>参考文献:</p>
<blockquote>
<p>Deploying Applications to Android Devices</p>
</blockquote>
<h2 id="1-android-构建工具环境安装">1. Android 构建工具环境安装</h2>
<p><strong>JDK</strong>:首先自行安装jdk1.8并配置<code>JAVA_HOME</code>环境变量</p>
<p><strong>Android SDK</strong>:在 "工具 -> 选项 -> 设备 -> Android" 页面 "SDK Manager"中安装Android SDK</p>
<p><strong>NDK</strong>:同上,安装NDK</p>
<p><strong>注意</strong>:在 5.15.1中默认SDK和NDK版本为</p>
<pre><code class="language-json">{
"common": {
"sdk_tools_url": {
"linux": "https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip",
"linux_sha256": "89f308315e041c93a37a79e0627c47f21d5c5edbe5e80ea8dc0aac8a649e0e92",
"windows": "https://dl.google.com/android/repository/commandlinetools-win-6609375_latest.zip",
"windows_sha256": "40bba20275180194bebf89bb58c74d712bb93cc401f36bd2f8f32383acf9826c",
"mac": "https://dl.google.com/android/repository/commandlinetools-mac-6609375_latest.zip",
"mac_sha256": "2c3822db1c916655223e5ee8ce0fbf6b73d0b99012045c9dc8eaa6a5736c0c55"
},
"sdk_essential_packages": {
"default": ["platform-tools", "platforms;android-30", "cmdline-tools;latest"],
"linux": [],
"mac": [],
"windows": ["extras;google;usb_driver"]
}
},
"specific_qt_versions": [
{
"versions": ["default"],
"sdk_essential_packages": ["build-tools;30.0.2", "ndk;21.3.6528147"],
"ndk_path": "ndk/21.3.6528147"
},
{
"versions": ["5.12.", "5.13."],
"sdk_essential_packages": ["build-tools;28.0.2", "ndk;19.2.5345600"],
"ndk_path": "ndk/19.2.5345600"
}
]
}
</code></pre>
<p>不知道安装那个版本时最好按照这个选择,这个配置文件在 <code>C:\用户\AppData\Roaming\QtProject\qtcreator\android\sdk_definitions.json</code></p>
<p>OpenSSL:Android版的OpenSSL从GitHub上找一个预编译好的即可</p>
<p><strong>虚拟机</strong>:简单点可以直接使用自带虚拟机,创建一个AVD,不知道选哪个就多试几个,看看有什么区别,懒得弄插上USB线,打开USB调试,直接上真机。</p>
<blockquote>
<p><strong>注意</strong>:安装Android SDK时最好选上对应的System Image,创建AVD的时候会用到。</p>
</blockquote>
<h2 id="2-应用程序打包过程">2. 应用程序打包过程</h2>
<p>Qt 5提供了 <code>androiddeployqt</code> 工具用于打包apk,当使用 Qt for Android 工具包部署应用程序时,Qt Creator 使用 androiddeployqt 工具创建<strong>必要的文件</strong>并将它们捆绑到 APK 中:</p>
<ul>
<li>Java 文件,作为应用程序的入口点,自动加载 Qt 并在应用程序中执行本机代码。</li>
<li>AndroidManifest.xml,它提供有关应用程序的元信息。</li>
<li>其他 XML 文件,它们指定应用程序的依赖项。</li>
<li>资源文件。</li>
<li>库和 QML 文件,可以根据您选择的部署方法包含在项目中。</li>
<li>下载和使用 Gradle 所需的 Gradle 包装器。</li>
<li>下载和使用 Gradle 所需的 Gradlewrappers 。</li>
<li>Java IDE 所需的 Gradle 脚本,例如 Android Studio。</li>
</ul>
<p>仅当您使用 Gradle 构建应用程序包时,才会捆绑 Gradlewrappers 和脚本。</p>
<p>要查看 <code>androiddeployqt</code> 工具创建的包,请选中 <code>Open package location after build</code> 复选框(实测并不能打开包所在目录)。</p>
<h2 id="3-打包设置">3. 打包设置</h2>
<h3 id="31-abi版本选择">3.1 ABI版本选择</h3>
<p><img src="https://img2022.cnblogs.com/blog/1604637/202205/1604637-20220525234000480-421283645.png" alt="" loading="lazy"></p>
<p>这里可以选择apk包中包含的API库,默认armeabi-v7a,要支持全平台,可以选择全部打进去,但体积会比较大。</p>
<blockquote>
<p>注意:在上面 <strong>sdk_definitions.json</strong>配置文件中指定的,对于 Qt 5.12.0 - 5.12.5 和 Qt 5.13.0- 5.13.1,应使用 Android SDK 28。对于比 Qt 5.13.1 更新的版本,应使用Android SDK 29 或最新版本。</p>
</blockquote>
<p>参考:</p>
<ul>
<li>Android开发之——包含ABI的APK打包注意事项,</li>
<li>Android ABI与应用打包,</li>
<li>Android apk打包那些事,</li>
<li>Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解</li>
</ul>
<h3 id="32-android-sdk版本">3.2 Android SDK版本</h3>
<p><img src="https://img2022.cnblogs.com/blog/1604637/202205/1604637-20220525234349224-1684914463.png" alt="" loading="lazy"></p>
<p>如图,可以选择生成自己的签名证书,SDK版本。通常应该选择可用的最高 API 级别。</p>
<p><code>androiddeployqt</code> 工具使用配置信息来创建 APK。有关可用选项的更多信息,请参阅 androiddeployqt。</p>
<p>您可以在 "编译输出" 窗格中查看有关 <code>androiddeployqt</code> 工具正在执行的操作的信息。要查看其他信息,请选中 <strong>Verbose output</strong> 复选框。</p>
<p>选择<strong>Add debug server</strong>以将调试服务器二进制文件包含到包中(不可选)。</p>
<p>此字段未指定支持的最低 API 级别或目标 API 级别,您可以在 AndroidManifest 中指定。见Editing Manifest Files 。</p>
<h3 id="33-构建-aab-包">3.3 构建 AAB 包</h3>
<p>本地测试应用,使用APK格式,因为包可以直接上传到设备上运行。要分发到 Google Play 商店,请通过选中 Build Android App Bundle (*.aab) 复选框来创建 AAB。</p>
<p>使用 CMake 构建时,您可以在 CMake 部分的<strong>Initial Configuration</strong>中查看选定的 ABI。您可以将其他 ABI 设置为 <strong>ANDROID_ABI</strong> 键的值:</p>
<p><img src="https://doc.qt.io/qtcreator/images/qtcreator-android-cmake-settings.png" alt="" loading="lazy"></p>
<p>如上图,使用 Qbs 或 qmake 构建时,您可以在 Build Steps 的 ABIs 字段中选择 ABI。</p>
<h3 id="34-包签名密钥">3.4 包签名密钥</h3>
<p><strong>注意:没有密钥签名只能打出debug的包,签名后才能发布release包。</strong>,参考:Qt Android: Why is a QtApp-debug.apk created for a Release build?</p>
<blockquote>
<p>警告:将密钥对保存在安全的地方并备份副本,因为如果丢失密钥对,您将无法更新应用程序。</p>
</blockquote>
<p>创建密钥库和自签名证书:</p>
<p><img src="https://img2022.cnblogs.com/blog/1604637/202205/1604637-20220530223157061-149103698.png" alt="" loading="lazy"></p>
<blockquote>
<p>注意:国家代码是必填的,中国是 <strong>ZH</strong></p>
</blockquote>
<h3 id="35-添加外部库">3.5 添加外部库</h3>
<p>使用C++开发中免不了要用到外部库,例如openssl,ffmpeg,opencv等, 就像 <code>windeployqt</code> ,<code>linuxdeployqt</code>一样,<code>androiddeployqt</code>也不能自动打包外部库,需要手动配置,在 Projects > Build > Build Android APK > Additional Libraries 字段中指定它们。这些库被复制到应用程序的库文件夹中并在启动时加载。</p>
<p><img src="https://img2022.cnblogs.com/blog/1604637/202205/1604637-20220530223720733-1549604993.png" alt="" loading="lazy"></p>
<p>要添加 OpenSSL 库,请在 Additional Libraries 组中选择<strong>Include prebuilt OpenSSL libraries</strong> 。这将添加在 <code>Android OpenSS</code>L 组的设备设置中定义的 OpenSSL 包含项目。这可用于 QMake 和 CMake 项目。</p>
<p>否则,您可以手动将所需 <code>libssl.so</code> 和 <code>libcrypto.so</code> 库的路径添加到 <code>Additional Libraries</code> 字段。</p>
<h2 id="4-编辑清单文件">4. 编辑清单文件</h2><br><br>
来源:https://www.cnblogs.com/jixiaohua/p/16311527.html
頁:
[1]