Qt应用开发(安卓篇)——Hello Qt On Android

一、前言

        这一篇从实际出发,讲述如何创建、编译和部署Qt On Android项目。

二、ADB调试

        ADB的全称为Android Debug Bridge,就是起到调试桥的作用,主要用于连接计算机与Android 设备,以便进行调试和数据传输。ADB 可以实现以下主要用途:

设备管理:允许用户连接和管理多个设备。

应用调试:通过命令行或图形界面与设备进行交互,包括安装、启动和停止应用程序,查看应用程序的日志信息,并进行性能分析。

文件传输:能够将文件从计算机传输到安卓设备,或者将设备上的文件复制到计算机上。

 2.1、ADB安装

        有安装过windows 安卓环境的就不说了,如果没有可以从ADB下载

        下载之后解压到目录下,设置环境变量。

        设置完环境变量,Win+R输入CMD打开windows Dos界面,输入adb,出现如下界面即安装成功。

 2.2、ADB部署和调试

         接上文Qt应用开发(安卓篇)——Linux下Qt15.5.2配置Android-CSDN博客

         创建完项目,得到APK文件,插入USB调试线,充电线就是了。

        这里罗列一些常用的Adb命令,网上有很多,大家随便搜索就有了。

adb devices #查看连接设备adb install test.apk # 安装应用adb uninstall cn.com.test.mobile #卸载应用,需要指定包名adb shell dumpsys window | findstr mCurrentFocus #查看当前运行的包名和activity名adb shell dumpsys activity | find "mResumedActivity"#Android8以上 查看当前运行的包名和activity名adb shell dumpsys activity | find "mFocusedActivity"#Android7以下 查看当前运行的包名和activity名adb shell pm list packages #列出手机装的所有app 的包名adb shell am start -ncn.com.test.mobile/.ui.SplashActivity #启动应用adb shell am force-stop cn.com.test.mobile #强制停止应用adb shell dumpsys package #包信息Package Informationadb shell dumpsys meminfo #内存使用情况Memory Usageadb logcat #查看日志,程序qdebug的内容在这里adb logcat -c #清除log 缓存adb reboot #重启adb get-serialno #获取序列号adb shell getprop ro.build.version.release #查看Android 系统版本adb shell top -s 10 #查看占用内存前10 的appadb push <local> <remote> #从本地复制文件到设备adb pull <remote> <local> #从设备复制文件到本地adb bugreport #查看bug 报告adb help #查看ADB 帮助

 输入adb devices,出现如下则表示调试线连接正常,工况正确。

安装apk,直接输入adb install,然后文件直接从桌面拖进来,出现success即安装成功。

查看包名adb shell pm list packages,Qt默认的包名为org.qtproject.example.项目名称。

卸载apk需要根据包名。

 查看当前运行的包名和activity名称。

adb shell进入后台界面,exit退出shell,这里linux指令都能用,

三、创建秘钥文件和证书

        在实际的项目中,我们需要修改包名、activity名,提升apk的权限便于操作串口等操作,这时候我们就需要创建秘钥和证书。

3.1、创建秘钥

        勾选对包签名的复选框,

 设置秘钥密码和信息。

3.2、创建AndroidManifest

        选择Create Templates创建xml文件。

        这里直接下一步

        AndroidManifest提供可视化和源码两个界面,这里可以选择apk图标,包名,activity名、设置权限等入口。

        安装之后可以看到apk的图标已经变成我们设置的鸡腿。

查看包名,可以发现包名可以改成我们设置的名称。

3.3、提高apk权限为system

        按照之前的操作,可以看到apk的权限是用户权限,如果需要提升为system,需要在xml文件添加android:sharedUserId="android.uid.system"

        添加完之后编译通过,但是安装会失败,异常报错INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

         这是因为使用android:sharedUserId的同时,还需要android系统的key,不同的系统的key都是不一样的,一般只提供给专门的开发人员,即使你能百度到一个,也无法在其他android设备上使用。如果你是想在模拟器或者手机上设置该属性,可以直接放弃。

        这里我们从厂家得到两个文件,platform.x509.pem和platform.pk8,通过openssl对其进行编译。

第一步
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt第二步
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name platform第三步
keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias platform

在项目部署界面导入编译出来的.keystore文件,勾选Sign package,这里要注意,工程项目关闭重新打开之后,这里需要又重新设置,默认不保存,可以通过编译出来的文件在debug还是release文件夹下发现。 

修改build.gradle文件。

再次打包、安装,可以看到apk权限已经从用户变成为system权限。

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

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

相关文章

uniapp组件库SwipeAction 滑动操作 使用方法

目录 #平台差异说明 #基本使用 #修改按钮样式 #点击事件 #API #Props #Event 该组件一般用于左滑唤出操作菜单的场景&#xff0c;用的最多的是左滑删除操作。 注意 如果把该组件通过v-for用于左滑删除的列表&#xff0c;请保证循环的:key是一个唯一值&#xff0c;可以…

HNU-数据挖掘-实验3-图深度学习

数据挖掘课程实验实验3 图深度学习 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验3 图深度学习实验背景实验要求数据集解析实验内容&#xff08;0&#xff09;基础知识&#xff1a;基于图的深度学习方法浅识&#xff1a;图卷积网络 (GCN)浅识&…

【Linux】第三十二站:命名管道

文章目录 一、命名管道介绍二、编码1.mkfifo2.unlink3.一个简单的例子4.修改 一、命名管道介绍 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。 如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作…

14 STM32 - IIC (时序图+软件源码)

14.1 IIC简介 IIC&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;中文集成电路总线&#xff0c;是一种串行通信总线&#xff0c;使用多主从架构。I2C串行总线一般有两根信号线&#xff0c;一根是双向的数据线SDA&#xff0c;另一根是时钟线SCL。所有接到I2C总线…

【蓝桥杯备赛Java组】语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;蓝桥杯&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建 1.2 Java方法 1.3 输入输出 1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转…

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…

【WSL】[出现错误 2147944320 (0x80070780) (启动“ubuntu.exe”时)]

问题描述 在尝试启动 Windows Subsystem for Linux (WSL) 的 “ubuntu.exe” 时&#xff0c;可能会遇到以下错误&#xff1a; [出现错误 2147944320 (0x80070780) (启动“ubuntu.exe”时)]错误的截图如下&#xff1a; 原因分析 系统找不到指定的文件。在这种情况下&#xff…

Git提交 ssh: connect to host github.com port 22: Connection timed out解决方案

你们好&#xff0c;我是金金金。 场景 之前都是好好的&#xff0c;不知道今天为什么提交代码就这样了 排查 根据英文可以看出&#xff0c;ssh端口号被拒绝了&#xff0c;22号端口不行&#xff0c;那就换一个端口 造成error的原因 ssh端口被拒绝 解决 找到.ssh文件&#xff…

CLion调试Nodejs源码

【环境】 macOS node-v20.11.0源码 CLion 2023.3.2 【1】下载源码 https://nodejs.org/en/download/ 【2】编译源码 解压后的目录如下 进入解压后的目录进行编译 ./configure --debug make -C out BUILDTYPEDebug -j 4需要好久… 编译成功之后在node-v20.11.0目录下会有一个…

【Web实操11】定位实操_照片墙(无序摆放)

设置一个板块&#xff0c;将照片随意无序摆放在墙上&#xff0c;从而形成照片墙。本来效果应该是很唯美好看的&#xff0c;就像这种&#xff0c;但是奈何本人手太笨&#xff0c;只好设置能达到照片墙的效果就可。 代码如下&#xff1a; <!DOCTYPE html> <html lang&…

JavaEE的MVC(Model-View-Controller)设计模式

JavaEE的MVC&#xff08;Model-View-Controller&#xff09;设计模式是一种用于组织和管理Web应用程序的架构模式。MVC模式将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#x…

binary_search_tree的介绍与实现(二叉搜索树精美图示详解哦)

二叉搜搜索树 引言二叉搜索树的介绍二叉搜索树的实现框架默认成员函数构造析构赋值重载 InsertR&#xff08;插入&#xff09;EraseR&#xff08;删除&#xff09;SearchR&#xff08;查找&#xff09; 源码概览总结 引言 在C语言部分&#xff0c;我们已经认识了树与二叉树的结…

python使用分治算法找出出现次数最多的数字

对于给定的一个长度为n的数组nums&#xff0c;需要找出起重工出现次数大于n/2向下取整的元素&#xff0c;假设给定的数组中一定存在符合给定要求的数&#xff0c;例如给定如下的例子&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注…

docker使用http_proxy配置代理

钢铁知识库&#xff0c;一个学习python爬虫、数据分析的知识库。人生苦短&#xff0c;快用python。 在内网服务器中&#xff0c;docker经常需要下载拉取镜像&#xff0c;但由于没有网络要么只能手动导入镜像包&#xff0c;又或者通过http_proxy代理到其它服务器下载。 解决方法…

看书标记【R语言数据分析项目精解:理论、方法、实战 9】

看书标记——R语言 Chapter 9 文本挖掘——点评数据展示策略9.1项目背景、目标和方案9.1.1项目背景9.1.2项目目标9.1.3项目方案1.建立评论文本质量量化指标2.建立用户相似度模型3.对用户评论进行情感性分析 9.2项目技术理论简介9.2.1评论文本质量量化指标模型1.主题覆盖量2.评论…

FA-分配行重分配报错【APP-OFA-48313】

FA-重分配行报错 已存在行只能分多次转移调整 Ref1&#xff1a; APP-OFA-48313 You Cannot Create Identical Distribution Lines with Transfer (Doc ID 336894.1) APPLIES TO: Oracle Assets - Version 11.5.10.0 and later Information in this document applies to any…

Ubuntu20 服务器版磁盘扩容

Ubuntu20 服务器版磁盘扩容 Ubuntu20 服务器版磁盘不够用进可以使用fdisk命令对磁盘进行扩容 本案例中是基于vmware虚拟化环境下&#xff0c;ubuntu服务器按默认磁盘大小16G进行安装后&#xff0c;运行一段时间后发面/分区磁盘空间全部用完&#xff0c;导致服务无法正常运行。基…

计算机网络自顶向下Wireshark labs1-Intro

Wireshark labs1 实验文档&#xff1a;http://www-net.cs.umass.edu/wireshark-labs/Wireshark_Intro_v8.0.pdf 介绍 加深对网络协议的理解通常可以通过观察协议的运行和不断调试协议来大大加深&#xff0c;具体而言&#xff0c;就是观察两个协议实体之间交换的报文序列&…

React三大属性

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 知…

只会 Python 不行,不会 Python 万万不行 。。。

当下的环境大家有目共睹&#xff0c;未来一段时间情况如何&#xff0c;想必不少人心里也清楚&#xff0c;技术人走到中年&#xff0c;难免会焦虑&#xff0c;职场上干得不爽&#xff0c;但是跳槽也不容易&#xff0c;加上不少企业裁员&#xff0c;换个满意的工作更是难上加难。…