一、前言

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

二、ADB调试

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

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

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

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

 2.1、ADB安装

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

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

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

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

 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,出现如下则表示调试线连接正常,工况正确。

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

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

卸载apk需要根据包名。

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

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

停止app和启动app

三、创建秘钥文件和证书

        在实际的项目中,我们需要修改包名、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权限。

3.4、设置AndroidManifest默认打开方式

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

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

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: