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

06-01 904阅读

一、前言

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

二、ADB调试

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

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

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

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

 2.1、ADB安装

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

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

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

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

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

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

        Linux下安装Adb就更简单了,直接控制台输入sudo apt-get install adb,即安装完成。

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

 2.2、ADB部署和调试

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

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

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

adb devices #查看连接设备
adb install test.apk # 安装应用
adb uninstall com.tbb.power #卸载应用,需要指定包名
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 com.tbb.power/org.qtproject.qt5.android.bindings.QtActivity #启动应用
adb shell am force-stop com.tbb.power #强制停止应用
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   #从本地复制文件到设备
adb pull   #从设备复制文件到本地
adb bugreport #查看bug 报告
adb help #查看ADB 帮助

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

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

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

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

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

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

卸载apk需要根据包名。

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

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

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

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

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

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

停止app和启动app

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

三、创建秘钥文件和证书

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

3.1、创建秘钥

        勾选对包签名的复选框,

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

 设置秘钥密码和信息。

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

3.2、创建AndroidManifest

        选择Create Templates创建xml文件。

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

        这里直接下一步

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

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

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

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

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

查看包名,可以发现包名可以改成我们设置的名称。 Qt应用开发(安卓篇)——Hello Qt On Android

3.3、提高apk权限为system

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

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

        添加完之后编译通过,但是安装会失败,异常报错INSTALL_FAILED_SHARED_USER_INCOMPATIBLE Qt应用开发(安卓篇)——Hello Qt On Android

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

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

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

第一步
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文件夹下发现。 

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

修改build.gradle文件。

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

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

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

3.4、设置AndroidManifest默认打开方式

        在QtCreator中,双击AndroidManifest.xml会默认有两个界面,一个android manifest editor可视化界面和一个xml的文本界面,在后面我们会直接对xml文件进行文本编辑,修改activity等信息,这时候可视化界面就会有bug,一旦使用了可视化界面,会把xml文件中的activity设置回界面相关的内容,我们自定义后面添加的都会消失不见。

        我们需要在设置把该xml文件默认打开方式由android manifest editor改为文本编辑模式,才不会出现莫名其妙的问题,这点非常重要!!!

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码