在搭建好Qt on Android的开发环境,我们就可以使用Qt开发安卓应用程序了。但是通过USB口连接安卓手机进行真机调试时,我们可能会发现无法使用qDebug函数输出调试信息。这个时候我们可以使用adb输出调试信息。adb在android SDK中,使用前请先安装android SDK并设置相应的环境变量。下面以一个简单的Qt程序为例子讲解adb的使用,该程序的作用是创建一个界面,在界面中有一个按钮,每点一次这个按钮都会输出一次调试信息。
clog.h
#ifndef CLOG_H
#define CLOG_H
#include <android/log.h>
#define LOG_TAG "QtDebug"
//#define LOGW(str) __android_log_write(ANDROID_LOG_WARN,LOG_TAG,str)
#define LOG(...) __android_log_print(ANDROID_LOG_DEBUG ,LOG_TAG, __VA_ARGS__)
#endif // CLOG_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void onBtnClicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "clog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onBtnClicked()));
LOG("hehe");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onBtnClicked()
{
static int count = 0;
LOG("clicked:%d",count++);
}
mainwindow.ui
要想输出调试信息,先在cmd中输入:
adb logcat -c
adb logcat -s QtDebug
然后在QtCreator中点击运行按钮,将程序部署到手机
即可看到命令提示符中输出了相应的调试信息