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权限。

相关推荐
编程、小哥哥13 分钟前
python操作mysql
android·python
Couvrir洪荒猛兽40 分钟前
Android实训十 数据存储和访问
android
五味香3 小时前
Java学习,List 元素替换
android·java·开发语言·python·学习·golang·kotlin
十二测试录3 小时前
【自动化测试】—— Appium使用保姆教程
android·经验分享·测试工具·程序人生·adb·appium·自动化
追Star仙4 小时前
基于Qt中的QAxObject实现指定表格合并数据进行word表格的合并
开发语言·笔记·qt·word
Couvrir洪荒猛兽5 小时前
Android实训九 数据存储和访问
android
aloneboyooo5 小时前
Android Studio安装配置
android·ide·android studio
Jacob程序员6 小时前
leaflet绘制室内平面图
android·开发语言·javascript
2401_897907866 小时前
10天学会flutter DAY2 玩转dart 类
android·flutter
m0_748233647 小时前
【PHP】部署和发布PHP网站到IIS服务器
android·服务器·php