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

发布时间:2024年01月18日

一、前言

??????? 这一篇从实际出发,讲述如何创建、编译和部署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 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

第一步
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权限。

文章来源:https://blog.csdn.net/u014491932/article/details/135664952
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。