Qt android 开发环境搭建


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家: Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

最近在做Qt 安卓相关的应用,记录一下搭建安卓开发环境
本章节主要实现Qt 安卓开发环境

开发环境搭建

安卓开发环境搭建,目前在windows和linux环境下进行搭建。下面分别介绍两个环境下搭建。我使用的Qt版本是Qt5.15.2,这个需要联网下载。
下载地址 https://download.qt.io/official_releases/online_installers/
Qt在线安装包
这里,我下载了qt-unified-windows-x86-online.exe和qt-unified-linux-x64-online.run

windows 开发环境搭建

windows下安装搭建android开发环境

Qt在线安装

首先需要下载在线安装工具,上面下载的qt-unified-windows-x86-online.exe,双击打开软件
Qt在线安装
这里需要在Qt官网上注册一个账号。登陆账号
下面步骤按默认来,直到出现下面界面,一定要选中android
Qt选取版本
然后下一步直到安装完成。

Qt 安卓开发环境搭建

待上面安卓完成后,打开Qt开发环境,通过工具->选项->设备->android。如下图

需要安装jdk,这里面我已经安装好了,这里面不做过多介绍,可以自行网上百度,jdk配置。
接下来安装安卓SDK和NDK
SDK安装,需要先点击浏览按钮,选择你要将你的SDK安装在哪,然后点击Set Up SDK,按照默认的来就可以了。
android_openssl,这个选中安装文件夹,点击Download OpenSSL按钮,即可下载,有可能因为网络原因无法下载,可以在下面的百度网盘地址下载。
SDK安装> 下面中
在这里插入图片描述
下面是安装配置完成后的界面
Qt安卓开发环境设置
开发环境百度云下载:
链接: https://pan.baidu.com/s/1l2Z7IZOOxJ44ekv2jw_LyQ
提取码: rf2s
上面可以直接下载下来,解压,进行设置相关目录就可以了。

linux 开发环境搭建

inux开发环境,这里面我选择centos7.6 版本,这里方便做linux相关项目的移植。
首先,将下载好的qt-unified-linux-x64-online.run,双击打开。
在这里插入图片描述
这里面前面和安装一样
这里面,安装完成后发现无法打开Qt Creater,发现是环境有问题,这里面解决方案是,安装另一个QtCreater。经过多次测试,发现qt-creator-opensource-linux-x86_64-4.13.3.run这个版本的QtCreater是OK的,因为需要下载Android开发环境,别的版本可能会下载不下来。
下载地址:https://download.qt.io/archive/qtcreator/4.13/4.13.3/qt-creator-opensource-linux-x86_64-4.13.3.run
这里面,安装配置和windows一致
在这里插入图片描述

开发测试

开发环境,选择Android Qt 5.15.2 Clang Multi-Abi。

在这里插入图片描述
在这里插入图片描述
简单的测试
在这里插入图片描述

开发引入第三方库

这里,使用vlc开发环境
先下载vlc安卓开发库:https://mirrors.aliyun.com/videolan/vlc-android/3.4.3/
在这里插入图片描述
将下载下来的apk改成zip,解压,
在这里插入图片描述
获取libvlc.so文件,就能正常的使用vlc了。

测试vlc部分代码

#include "widget.h"

#include <QApplication>
#include <vlc/vlc.h>
#include <QDebug>
#include <QMutex>
#include "main.h"

struct Context {
    QMutex mutex;
    uchar *pixels;
};


CIns* CIns::m_ins = nullptr;

static void *lock(void *opaque, void **planes)
{
    struct Context *ctx = (struct Context *)opaque;
    ctx->mutex.lock();

    // 告诉 VLC 将解码的数据放到缓冲区中
    *planes = ctx->pixels;

    return nullptr;
}

// 获取 argb 图片并保存到文件中
static void unlock(void *opaque, void *picture, void *const *planes)
{
    Q_UNUSED(picture);

    struct Context *ctx = (struct Context *)opaque;
    unsigned char *data = static_cast<unsigned char *>(*planes);
    static int frameCount = 1;

    QImage image(data, 512, 288, QImage::Format_ARGB32);
//    image.save(QString("frame_%1.png").arg(frameCount++));
    emit CIns::Ins()->SigImage(image);

    ctx->mutex.unlock();
}

static void display(void *opaque, void *picture)
{
    Q_UNUSED(picture);

    (void)opaque;
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    QObject::connect(CIns::Ins(), &CIns::SigImage, &w, &Widget::SlotImage);
    const char* const vlc_args[] = {
            "--demux=h264",
            "--ipv4",
            "--no-prefer-system-codecs",
            "--rtsp-caching=300",
            "--network-caching=500",	//网络额外缓存值 (ms)
            "--rtsp-frame-buffer-size=10000000",
            "--rtsp-tcp",				//RTSP采用TCP传输方式
    };

    libvlc_instance_t * inst;
    libvlc_media_player_t *mp;
    libvlc_media_t *m;
    struct Context ctx;
    ctx.pixels = new uchar[512 * 288 * 4];
    memset(ctx.pixels, 0, 512 * 288 * 4);

    //libvlc_time_t length;

    /* Load the VLC engine */
    inst = libvlc_new (sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
    QString strUrl = "rtsp://wowzaec2demo.streamlock.net/vod/mp4";
    m = libvlc_media_new_location (inst, strUrl.toStdString().c_str());
    mp = libvlc_media_player_new_from_media (m);
//    libvlc_media_player_set_hwnd(mp, (void *)wgt.winId());

    // 设置回调,用于提取帧或者在界面上显示。
    libvlc_video_set_callbacks(mp, lock, unlock, display, &ctx);
    libvlc_video_set_format(mp, "RGBA", 512, 288, 512 * 4);

    libvlc_media_release (m);
    libvlc_media_player_play (mp);

    int ret = a.exec();

    libvlc_media_player_stop (mp);

    // Free the media_player
    libvlc_media_player_release (mp);

    libvlc_release (inst);

    return ret;


测试vlc播放
在这里插入图片描述
完整代码地址:
链接:https://pan.baidu.com/s/1m9X3zvPqNEaTPlGhnWR1VQ
提取码:gok4

参考文档

配置Qt5.12.3的安卓开发环境
Qt5.14.2在Android项目中添加第三方库(.a,.so)
android开发cmake编译引入第三方库的常用写法

猜你喜欢

转载自blog.csdn.net/qq_18286031/article/details/122881355