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

news2024/11/15 20:07:35

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 --list

  system-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: test
    Path: /root/.android/avd/test.avd
  Target: Google APIs
          Based on: Android 8.1 ("Oreo") Tag/ABI: google_apis/x86
  Sdcard: 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 shell
  emu64a:/ $
  emu64a:/ $ exit
  % adb root
  restarting adbd as root
  % adb shell
  emu64a:/ #
  emu64a:/ # exit
  % adb unroot
  restarting adbd as non root
  % adb shell
  emu64a:/ $
  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.coloradmin.cn/o/1143500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 算法高级篇:桶排序与基数排序

Python 算法高级篇&#xff1a;桶排序与基数排序 引言什么是桶排序&#xff1f;桶排序的基本步骤桶排序的示例 什么是基数排序&#xff1f;基数排序的基本步骤基数排序的示例 桶排序与基数排序的应用桶排序的应用基数排序的应用 Python 示例代码总结 引言 在算法高级篇的课程中…

css列表样式

html文件如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> <link href"css/style.css" rel"stylesheet" type"text/css">&…

(c语言进阶)字符串函数、字符分类函数和字符转换函数

一.求字符串长度 1.strlen() (1)基本概念 头文件&#xff1a;<string.h> (2)易错点&#xff1a;strlen()的返回值为无符号整形 #include<stdio.h> #include<string.h> int main() {const char* str1 "abcdef";const char* str2 "bbb&q…

如何公网远程访问OpenWRT软路由web界面

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面&#xff0c;使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1.openWRT安装cpola…

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法

linux上java -jar方式运行项目及输出文件nohup.out的清理&#xff0c; linux上定时器的用法 linux上java -jar方式运行定期自动清理nohup.out文件的内容**验证**定时器crontab使用时注意事项 linux上java -jar方式运行 参考&#xff1a;https://blog.csdn.net/qq_42169450/arti…

聚焦AIGC落地,八仙过海,谁更神通?

【科技明说 &#xff5c; 重磅专题开篇】 从AI高谈阔论的概念&#xff0c; 到AI真金白银的投资&#xff0c;再到AI因ChatGPT大模型的升温&#xff0c;每一次技术带动产业的革新&#xff0c;都离不开不了两样东西的驱动。一是此起彼伏的技术迭代&#xff0c;二是不计后果的资本…

前端重新部署如何通知用户更新

标题解决方案 常用的webSocket解决方案 webSocket; 大致逻辑思考应该是前端在部署好后向服务器发送一个状态变更通知&#xff1b;服务器接收后主动向前端push&#xff1b;前端通过心跳检测&#xff0c;接收到相关更新时弹出提示&#xff0c;让用户确认更新&#xff1b; 缺点&a…

IT新人如何在职场弯道超车?强推荐考取当下最有价值的云计算认证证书!

疯狂的裁员&#xff01;股价降低&#xff01;在美国&#xff0c;一股寒冷的创业寒流正在席卷而来。不只是硅谷进入了冬天&#xff0c;国内的传统互联网寒潮也凛冽地来了。在传统 IT体系结构逐渐式微、产业规模不断缩小的情况下&#xff0c;许多 IT工程师都面临着下岗、跳槽等问…

UVa524 Prime Ring Problem(素数环)

1、题目 2、题意 输入正整数 n n n&#xff0c;把整数1,2,3&#xff0c;…&#xff0c;n 组成一个环&#xff0c;使得相邻两个整数之和均为素数。输出时从整数 1开始逆时针排列。同一个环应恰好输出一次。 n ≤ 16 n \le 16 n≤16。 3、分析 由模型不难得到&#xff1a;每个…

Python异步编程小解一

Python异步编程 什么是异步&#xff0c;为什么是异步&#xff1f; 异步&#xff0c;意指你不用等到某个条件达成再去做某事&#xff0c;比如&#xff1a;你不用等到一切都准备好了才开始跳槽&#x1f415;.那么在 多线程 存在的情况下&#xff0c;我们为什么还要把目光投向 异…

Kafka - 3.x 文件存储不完全指北

文章目录 Topic数据的存储机制演示基本信息使用kafka-run-class.sh查看index内容使用kafka-run-class.sh查看log内容 index文件和log文件详解日志存储参数配置文件清理策略综述清理策略1&#xff09;delete策略2&#xff09;compact日志策略 高效读写的原因 Topic数据的存储机制…

Glide原理

本文基于Carson整理 1.简介 相比其他几种图片加载框架&#xff0c;Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载&#xff1a;如GIF、Video&#xff0c;对于商城首页需展示丰富样式、信息的页面需求来说&#xff0c;也是必不可少的。 2.加载原理…

【数智化人物展】洞隐科技联合创始人兼CEO董志刚:数智化转型的核心是应用新技术打造新型的文化、组织和商业模式...

董志刚 本文由洞隐科技联合创始人兼CEO董志刚投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 数据智能产业创新服务媒体 ——聚焦数智 改变商业 在数字化日益渗透的今天&#xff0c;“释放数字价值&#xff0c;驱动智能转型”已逐渐成为企业转型与创新的关…

Vue插件的使用

一、插件的定义 &#xff08;一&#xff09;创建plugin.js文件 文件名可以自定义&#xff0c;但是行业内默认使用plugin作为文件名&#xff0c;该文件和main.js是平级的。 &#xff08;二&#xff09;编写对象中的install方法 install方法能够接收一个参数&#xff0c;就是…

【go】两数求和

文章目录 题目代码解法2 代码仓库 题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案…

5款在线JavaScript加密混淆工具

5款常用、好用的在线JavaScript加密混淆工具&#xff0c;网址请从截图中查看。 1、jscrambler 2、JShaman 3、javascriptobfuscator 4、freejsobfuscator 5、jjencode

【PyQt】调整子控件的层级以调整绘制的先后顺序

简述 qt中貌似没有直接设置z序的函数&#xff0c;但对应的有其他调整z序的方法&#xff1a; QWidget.raise_()&#xff1a;置顶 QWidget.lower()&#xff1a;置底 QWidget.stackUnder(wid)&#xff1a;置于指定控件之下 其中关键函数是QWidget.stackUnder(wid)&#xff0c;利…

phpstorm2022.3.3和xdebug 3 调试代码记录

有鉴于之前使用log日志调试代码&#xff0c;或者var_dump()调试代码太慢了&#xff0c;系统出了问题排查效率低下。最终决定使用xdebug工具提高效率。总结如下&#xff1a; 1. xdebug版本要和phpstorm兼容&#xff0c; 这里使用xdeubug 3.1.6&#xff0c;phpstorm 2022.3.3 (破…

nvm的安装和使用

nvm用途 nvm是用来管理node版本的,安装成功之后可以去切换自己的node版本,就不需要通过安装卸载不同版本的node包 下载与安装 下载地址是https://github.com/coreybutler/nvm-windows/releases 下载nvm-setup.zip,然后安装就可以了 默认路径是C:\Users\wangjingtao\AppData\…

实现成绩发布的高效与便捷

老师们想不想告别繁琐的手动操作&#xff0c;简单省心的发布和查询考试成绩&#xff1f;今天分享的这个方法&#xff0c;可以让学生和家长自主查询成绩&#xff0c;是不是感觉超级方便呢&#xff1f;我来给各位老师讲解一下什么是成绩查询系统吧&#xff01; 成绩查询系统 成绩…