【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.rhkb.cn/news/171537.html

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

相关文章

Hbase基本使用,读写原理,性能优化学习

文章目录 HBase简介HBase定义HBase数据模型**HBase** **逻辑结构****HBase** **物理存储结构****HBase** **基本架构** HBase 入门**HBase** **安装部署****HBase** 配置文件**HBase** 启动停止**HBase** **访问页面****HBase** **高可用****HBase Shell****HBase API**HBaseCo…

Java关于实例对象调用静态变量和静态方法问题

直接去看原文 原文链接:Java关于实例对象调用静态变量和静态方法问题_java对象可以调用static方法吗_骑个小蜗牛的博客-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 实例…

ES6初步了解迭代器

迭代器是什么&#xff1f; 迭代器(iterator)是一种接口&#xff0c;为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 iterator 接口&#xff0c;就可以完成遍历操作 ES6创造了一种新的遍历方法for…of循环&#xff0c;iterator 接口主要供 for…of 使用 原生中具…

NIO和BIO编程

一、网络通信编程基本常识 1、什么是Socket&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作系统提供。 2、短连接 短连接是指socket建立连接之后传输数据确定接收完后关闭连接 3、长连接 长连接是指建立so…

Go RESTful API 接口开发

文章目录 什么是 RESTful APIGo 流行 Web 框架-GinGo HelloWorldGin 路由和控制器Gin 处理请求参数生成 HTTP 请求响应Gin 的学习内容实战用 Gin 框架开发 RESTful APIOAuth 2.0接口了解用 Go 开发 OAuth2.0 接口示例 编程有一个准则——Don‘t Repeat Yourself&#xff08;不要…

vue源码分析(三)——new Vue 的过程(详解data定义值后如何获取的过程)

文章目录 零、准备工作1.创建vue2项目2.修改main.js 一、import Vue from vue引入的vue是哪里来的&#xff08;看导入node_modules包&#xff09;1&#xff1a; 通过node_modules包的package.json文件2&#xff1a; 通过配置中的main入口文件进入开发环境的源码&#xff08;1&a…

java将list转为逗号隔开字符串,将逗号连接的字符串转成字符数组,​将逗号分隔的字符串转换为List​(Java逗号分隔-字符串与数组相互转换)

一、通过testList.stream().collect(Collectors.joining(",")) &#xff0c;通过流转换&#xff0c;将list转为逗号隔开字符串 List<String> testList new ArrayList<>(); testList.add("test1"); testList.add("test2"); testList…

如何查找特定基因集合免疫基因集 炎症基因集

温故而知新&#xff0c;再次看下Msigdb数据库。它更新了很多内容。给我们提供了一个查询基因集的地方。 关注微信&#xff1a;生信小博士 比如纤维化基因集&#xff1a; 打开网址&#xff1a;https://www.gsea-msigdb.org/gsea/msigdb/index.jsp 2.点击search 3.比如我对纤维…

基于Python Django 的微博舆论、微博情感分析可视化系统(V2.0)

文章目录 1 简介2 意义3 技术栈Django 4 效果图微博首页情感分析关键词分析热门评论舆情预测 5 推荐阅读 1 简介 基于Python的微博舆论分析&#xff0c;微博情感分析可视化系统&#xff0c;项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。 Python基于微博…

如何在Windows和Linux系统上监听文件夹的变动?

文章目录 如何在Windows和Linux系统上监听文件夹的变动&#xff1f;读写文件文件系统的操作缓冲和流文件改变事件 如何在Windows和Linux系统上监听文件夹的变动&#xff1f; libuv库实现了监听整个文件夹的修改。本文详细介绍libuv库文件读写和监听的的实现方法。libuv库开发了…

浏览器事件循环 (event loop)

进程与线程 进程 进程的概念 进程是操作系统中的一个程序或者一个程序的一次执行过程&#xff0c;是一个动态的概念&#xff0c;是程序在执行过程中分配和管理资源的基本单位&#xff0c;是操作系统结构的基础。 简单的来说&#xff0c;就是一个程序运行开辟的一块内存空间&a…

【计算机网络笔记】Cookie技术

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)

第 1 章 Fourier分析的起源 (The Genesis of Fourier Analysis) Regarding the researches of dAlembert and Euler could one not add that if they knew this expansion, they made but a very imperfect use of it. They were both persuaded that an arbitrary and d…

如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码

环境&#xff1a; Win10 专业版 远程解锁 蓝牙解锁小程序 问题描述&#xff1a; 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样&#xff0c;蓝牙接近了电脑&#xff0c;电脑自动解锁无需输入开机密码 手机不需要拿出来&#xff0c;在口袋里就可以自动解锁&#xff…

calcite 校验层总结

1、校验的作用 1&#xff09;完善语义信息 例如在SQL语句中&#xff0c;如果碰到select * 这样的指令&#xff0c;在SQL的语义当中&#xff0c;“*” 指的是取出对应数据源中所有字段的信息&#xff0c;因此就需要根据元数据信息来展开。 2&#xff09;结合元数据信息来纠偏…

Java游戏修炼手册:2023 最新学习线路图

前言 有没有一种令人兴奋的学习方法&#xff1f;当然有&#xff01;绝对有&#xff01;而且我要告诉你&#xff0c;学习的快乐可以媲美游戏的刺激。 小学时代&#xff0c;我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学&#xff0c;我总是迫不及待地打开电脑&a…

JSON(详解)

目录 什么是JSON&#xff1f; 哪里会用到JSON&#xff1f; JSON的特点 JSON的优点 JSON的缺点 JSON和cJSON的关系 什么是JSON&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示…

Kafka - 3.x 图解Broker总体工作流程

文章目录 Zk中存储的kafka的信息Kafka Broker总体工作流程1. broker启动后向zk中注册2. Controller谁先启动注册&#xff0c;谁说了算3. 由选举出来的Controller监听brokers节点的变化4. Controller决定leader选举5. Controller将节点信息上传到Zk中6. 其他Controller从zk中同步…

为什么说大模型微调是每个人都必备的核心技能?

▼最近直播超级多&#xff0c;预约保你有收获 近期直播&#xff1a;《基于开源 LLM 大模型的微调&#xff08;Fine tuning&#xff09;实战》 0 — 为什么要对 LLM 大模型进行微调&#xff08;Fine tuning&#xff09;&#xff1f; LLM 大模型&#xff08;比如&#xff1a;Chat…

安全狗安装

安装waf 关闭apache程序及httpd.exe进程; 运行cmd&#xff0c;cd进入apache/bin文件夹目录&#xff0c; 执行httpd.exe -k install -n apache2.4.39; 启动apache,启动phpstudy 安全狗安装服务名称填写apache2.4.39; 安装安全狗之后就会提示报错 网站防护 可以设备黑白名单 漏…