【QT开发(17)】2023-QT 5.14.2实现Android开发

1、简介

搭建Qt For Android开发环境需要安装的软件有:

JAVA SDK (jdk 有apt install 安装)
Android SDK
Android NDK

QT官网的介绍:
Different Qt versions depend on different NDK versions, as listed below:

Qt versionNDK versionToolchain
Qt 5.14.0 or later Qt 5.13.2 or later Qt 5.12.6 or laterNDK r20b or r21android-clang

1.1 NDK

NDK下载页面
NDK-r21e

1.2 SDK

1、下载SDK tools 24.4.1 带GUI

下载SDK 24.4.1 :https://developer.android.google.cn/ndk/downloads/

因为 Qt5.14.2 配套的是SDK 24.4.1,带GUI的,最新版没有GUI了。

tools/android update sdk 

启动GUI 下载SDK组件
在这里插入图片描述

安卓8.0
在这里插入图片描述
使用 sdkmanager 安装 SDK 工具和平台后,您可能需要接受尚未接受的任何许可。您也可以使用 sdkmanager 完成此操作:

$ sdkmanager --licenses

此命令会扫描所有已安装的 SDK 工具和平台,并显示尚未接受的任何许可。系统会提示您接受每个许可。

QT 5.14.2的会自动处理一些情况

Qt自动下载了build-tools 28.0.3
在这里插入图片描述

1.3 QtCreator配置

完成1.2 之后,
1、配置好:菜单栏----->工具----->选项----->设备,如图:
在这里插入图片描述

2、配置好:菜单栏----->工具----->选项----->Kit

如果你不使用虚拟机,该说明文档到处结束。注意说明的就是两点:

  • NDK版本要正确,21版本
  • SDK tools 使用过时的24.4.1 带GUI的,Qt5.14.2 是适配这个的,然后就是安装工具和镜像

2 虚拟机

如果想使用虚拟机调试

2.1、下载最新版 SDK tools (仅限命令行工具)

SDK 工具版本说明
用 sdk manager 命令行版本(command line) 获取SDK。截至2023年10月,sdk有Ui界面的是过时信息,过时的sdk的虚拟机是32位的,因此无法使用,需要安装最新版本sdk tools。

去android官网下载commandlinetools-linux-10406996_latest.zip

从QT的官方信息来看,用sdk manager安装 SDK

After downloading and unpacking the Commandline SDK Tools, use the sdkmanager command line tool to install the essential packages:
安装:

cd <ANDROID_SDK_ROOT>/tools/bin/
./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "cmdline-tools;latest"
./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "platform-tools" "platforms;android-29" "build-tools;29.0.2" "ndk;21.3.6528147"

Android Studio or the Qt Creator’s SDK Manager UI can also be used to install the essential SDK packages.

To use the Android Emulator, install it by entering:

./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "emulator" "patcher;v4"

To run the Android emulator, the following dependencies are also necessary:

sudo apt-get install libsdl1.2debian:i386

2.2 用 avdmanager (command line) 创建虚拟机

1、下载虚拟机的系统镜像

./cmdline-tools/latest/bin/sdkmanager --listsystem-images;android-27;android-tv;x86                                                  | 9             | Android TV Intel x86 Atom System Image                              system-images;android-27;default;arm64-v8a                                               | 2             | ARM 64 v8a System Image                                             system-images;android-27;default;x86                                                     | 1             | Intel x86 Atom System Image                                         system-images;android-27;default;x86_64                                                  | 1             | Intel x86_64 Atom System Image                                      system-images;android-27;google_apis;arm64-v8a                                           | 3             | Google APIs ARM 64 v8a System Image                                 system-images;android-27;google_apis;x86                                                 | 11            | Google APIs Intel x86 Atom System Image                             system-images;android-27;google_apis_playstore;x86                                       | 3             | Google Play Intel x86 Atom System Image                             

2、avdmanager 是一个命令行工具,可以用于从命令行创建和管理 Android 虚拟设备 (AVD)。 avdmanager 工具包含在 Android SDK 命令行工具软件包中(位于 android_sdk/cmdline-tools/version/bin/avdmanager)。

官方介绍用法

创建新的 AVD。您必须为该 AVD 提供 name,并使用加引号的 sdk_id 指定要用于该 AVD 的 SDK 软件包的 ID。例如,以下命令会使用 x86 系统映像(API 级别 25)创建名为 test 的 AVD:

avdmanager [global options] command [command options]
./cmdline-tools/latest/bin/avdmanager  create avd -n name -k "sdk_id" [-c {path|size}] [-f] [-p path] 	
./cmdline-tools/latest/bin/avdmanager create avd -n test -k "system-images;android-27;google_apis;x86"
./cmdline-tools/latest/bin/avdmanager list avd
Available Android Virtual Devices:Name: testPath: /root/.android/avd/test.avdTarget: Google APIsBased on: Android 8.1 ("Oreo") Tag/ABI: google_apis/x86Sdcard: 512 MB

删除

./cmdline-tools/latest/bin/avdmanager  delete avd -n test 

3、运行
官方说明
使用命令emulator -avd 运行AVD或通过先前启动的GUI。
在这里插入图片描述

您可以使用命令adb install手动安装应用程序。

./emulator/emulator -avd test

现在切换到模拟器,并通过启动器启动您的应用程序,就像在任何正常的设备。

adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld / org.sample.helloworld.HelloWorld。

如果您需要使用提升权限 (root) 来帮助您排查应用问题,您可以使用不包含 Google 应用或服务的 Android 开源项目 (AOSP) 系统映像。然后,您可以使用 adb root 和 adb unroot 命令在普通权限和提升权限之间切换:

  % adb shellemu64a:/ $emu64a:/ $ exit% adb rootrestarting adbd as root% adb shellemu64a:/ #emu64a:/ # exit% adb unrootrestarting adbd as non root% adb shellemu64a:/ $emu64a:/ $ exit%

2.3 即便如此

虚拟机也无法使用Qt编译的aarch的文件,虚拟机是x86的。还是用手机adb调试吧。

参考

https://blog.csdn.net/qq153471503/article/details/128063210
https://blog.csdn.net/wwws1994/article/details/108204186
https://www.eet-china.com/mp/a47680.html
https://developer.android.google.cn/ndk/guides?hl=zh-cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156082.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程助手DevChat:让开发更轻松

#AI编程助手哪家好&#xff1f;DevChat“真”好用 # 目录 前言一、安装Vscode1、下载链接2、安装 二、注册DevChat1、打开注册页2、验证成功完成邮箱绑定3、绑定微信可获得8元 三、安装插件四、配置Access Key1、获取Access Key2、设置Access Key①、点击左下角管理&#xff08…

一种使用wireshark快速分析抓包文件amr音频流的思路方法

解决方案&#xff1a; 1. 使用wireshark过滤amr,并导出原始数据文件&#xff1b; 2.使用ue的二进制编辑模式&#xff0c;编辑该文件&#xff0c;添加amr头&#xff0c;6个字节数据“#!AMR”&#xff0c;字节数据为 23 21 41 4D 52 0A 3.修正格式&#xff1a;通过抓包发现&#…

Linux--jdk,tomca,mysql安装、后端项目搭建

一、JDK和Tomcat的安装 1.JDK安装 直接上传到Linux服务器的&#xff0c;上传jdk、tomcat安装包 解压JDK安装包 //解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 置环境变量(JAVA_HOME和PATH) vim /etc/profile 在文件末尾添加以下内容&#xff1a; //java environment expo…

torch.div()不支持rounding_mode参数

问题怎么定位的呢&#xff0c;把报错信息一股脑甩给chatgpt&#xff0c;问他什么意思&#xff0c;他就反馈说“在标准的Python库中&#xff0c;div() 函数不接受 rounding_mode 参数。”&#xff08;虽然这个问题也不难&#xff0c;但是改偷的懒还是要偷&#xff09; 问题再现…

代码随想录算法训练营第四十天丨 动态规划part03

343. 整数拆分 思路 看到这道题目&#xff0c;都会想拆成两个呢&#xff0c;还是三个呢&#xff0c;还是四个.... 来看一下如何使用动规来解决。 动态规划 动规五部曲&#xff0c;分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]…

杂货铺 | 报错记录(持续更新)

文章目录 ⚠️python SyntaxError: Non-UTF-8 code starting with ‘\xb3‘ in file⚠️partially initialized module ‘‘ has no attribute ‘‘(most likely due to a circular import)⚠️AttributeError: ‘DataFrame‘ object has no attribute ‘append‘ ⚠️python S…

loadsh

官网&#xff08;当前版本4.x&#xff09;Lodash Documentationhttps://lodash.com/docs/4.17.15 简介 Lodash是一个著名的javascript原生库&#xff0c;不需要引入其他第三方依赖。是一个意在提高开发者效率,提高JS原生方法性能的JS库。简单的说就是&#xff0c;很多方法loda…

linux jdk配置

1.下载jdk &#xff0c;以jdk1.8为例子 Java Downloads | Oracle JDK 8 Update Release Notes (oracle.com) 2.配置环境变量 1.编辑命令 vi /etc/profile 2.在最后加入下面配置 export JAVA_HOME/opt/jdk1.8.0_144 export PATH${JAVA_HOME}/bin:$PATH export CLASSPATH.:$…

解决【spring boot】Process finished with exit code 0的问题

文章目录 1. 复现错误2. 分析错误3. 解决问题 1. 复现错误 今天从https://start.spring.io下载配置好的spring boot项目&#xff1a; 启动后却报出如下错误&#xff1a; 即Process finished with exit code 0 2. 分析错误 Process finished with exit code 0翻译成中文进程已完…

气象学基础知识:城市/大气/对流边界层

气象学基础知识&#xff1a;城市/大气/对流边界层 1 城市边界层&#xff08;urban boundary layer, UBL&#xff09;1.1 定义1.2 城市边界层结构的影响因素 2 大气边界层&#xff08;Atmospheric boundary layers, ABL&#xff09;&#xff1a;2.1 定义2.2 大气动力层分层&…

【Mysql】数据库三大范式

数据库三范式 &#xff1a;数据库三范式是指关系型数据库设计中的三种规范化设计原则&#xff0c;旨在减少数据冗余、提高数据一致性和可维护性。 第一范式&#xff1a;规定表中的每一列都应该是不可分割的最小单元。 为什么要这样实现呢&#xff1f; &#xff1a;举个栗子…

[计算机提升] 系统软件:信息类

3.2 信息类&#xff1a;查看相关信息 3.2.1 检查windows版本&#xff1a;winver 用于查看Windows系统版本&#xff1a; 3.2.2 系统信息&#xff1a;msinfo32 用于查看系统相关信息&#xff0c;包括&#xff1a;系统摘要、硬件资源、组件、软件环境。 3.2.3 查看系统信息…