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命令,网上有很多,大家随便搜索就有了。

bash 复制代码
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 Information

adb shell dumpsys meminfo #内存使用情况Memory Usage

adb 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 的app

adb 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

bash 复制代码
第一步
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

然后修改build.gradle文件。

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

相关推荐
锦亦之22332 小时前
QT+OSG+OSG-earth如何在窗口显示一个地球
开发语言·qt
Jouzzy5 小时前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
柳鲲鹏5 小时前
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
开发语言·qt·mysql
三玖诶5 小时前
如何在 Qt 的 QListWidget 中逐行添加和显示数据
开发语言·qt
极客先躯5 小时前
java和kotlin 可以同时运行吗
android·java·开发语言·kotlin·同时运行
Good_tea_h8 小时前
Android中的单例模式
android·单例模式
阳光开朗_大男孩儿11 小时前
DBUS属性原理
linux·服务器·前端·数据库·qt
Alphapeople12 小时前
Qt Modbus
开发语言·qt
竹林海中敲代码12 小时前
Qt Creator 集成开发环境 常见问题
qt·qt工具常见问题
计算机源码社12 小时前
分享一个基于微信小程序的居家养老服务小程序 养老服务预约安卓app uniapp(源码、调试、LW、开题、PPT)
android·微信小程序·uni-app·毕业设计项目·毕业设计源码·计算机课程设计·计算机毕业设计开题