当前位置: 首页 > article >正文

ubuntu下QT搭建Android开发环境

一、前言

用QT开发android和直接使用android开发的区别

    使用Qt开发Android应用和直接使用Android开发工具(例如Android Studio)有一些区别,主要体现在开发工具、语言、界面设计和性能等方面:

开发工具:
    Qt Creator vs Android Studio: 使用Qt Creator作为集成开发环境(IDE)可以让你在一个环境中开发多个平台的应用,包括Android。而直接使用Android Studio是Google提供的专门为Android开发设计的IDE。

编程语言:
    Qt使用C++: Qt框架主要使用C++编程语言。如果你已经熟悉C++,使用Qt可能更加直观。
    Android开发使用Java或Kotlin: Android应用通常使用Java或Kotlin编写。在Android Studio中,你会使用这两种语言来编写应用逻辑。

界面设计:
    Qt使用Qt Widgets或Qt Quick: Qt提供了两种主要的界面设计方式,即Qt Widgets和Qt Quick。Qt Widgets是基于传统的窗口和控件的,而Qt Quick使用QML(Qt Meta-Object Language)语言来创建现代化的用户界面。
    Android使用XML布局: 在Android开发中,你通常使用XML文件来定义应用的布局和界面。
性能和原生特性:
    Qt提供跨平台性: Qt的设计目标之一是实现跨平台性,因此你可以在不同的平台上运行相同的代码。这可能导致在一些情况下性能上的一些折衷,因为Qt需要在不同平台上提供一致的体验。
    Android开发可以更加直接使用原生API: 直接使用Android开发工具可以更直接地访问Android的原生API,这可能在某些情况下提供更好的性能和更深层次的集成。

生态系统:
    Qt是一个跨平台框架: Qt可以让你更容易地在不同平台上共享代码,但有时可能需要处理特定平台的差异。
    Android Studio是Android生态系统的一部分: 直接使用Android Studio使你更深度地融入了Android生态系统,可以更轻松地利用Android的特定功能和服务。

二、Ubuntu 下 搭建QT开发Android 环境

2.1 下载

2.1.1 下载QT:

所有QT版本下载的路径:https://download.qt.io/archive/qt/
我下载的是5.12.3版本:https://download.qt.io/archive/qt/5.12/5.12.3/

在这里插入图片描述

2.1.2 JDK、SDK、NDK的下载

Android开发必备的工具链包括:Java JDK 、Android SDK 、Android NDK

1) JDK下载:

https://www.oracle.com/java/technologies/downloads/#java8
在这里插入图片描述

2) SDK下载:

https://www.androiddevtools.cn/

在这里插入图片描述

3) NDK下载:

https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip

2.2 安装

2.2.1 QT安装

执行:./qt-opensource-linux-x64-5.12.3.run
根据提示一步步安装即可。

2.2.2 JDK
  1. 在第一步下载后,在ubuntu终端使用命令解压:tar -xzvf jdk-8u391-linux-x64.tar.gz

  2. 配置环境变量:
    可以配置临时环境变量或者永久环境变量
    临时环境变量配置方法:
    cd ~
    vim ~/.bashrc

添加:
export JAVA_HOME=/home/yibin/Android/jdk1.8.0_391
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH

在这里插入图片描述

永久环境变量配置方法:
在.bashrc文件中配置的环境变量只在当前终端窗口中生效,如果想让其永久保存,需要将其添加到/etc/profile或/etc/environment文件中。

2.2.2 NDK

在第一步下载后,在ubuntu终端使用命令解压:unzip android-ndk-r19c-linux-x86_64.zip

2.2.3 SDK

注意 SDK的安装需要比较大的内存,如果虚拟机ubuntu设置的内存不够大,需要进行扩容,同事使用gparted重新分配内存。

  1. 在第一步下载后,在ubuntu终端使用命令解压:tar -xzvf android-sdk_r24.4.1-linux.tgz

  2. 解压后cd到tools目录,执行./android

在这里插入图片描述

  1. 选择库安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

这里,有个Google USB Driver 不兼容linux,这个USB驱动是用于USB连接安卓真机调试用,可以采用以下方法解决:

解决 Google USB 驱动不兼容 Linux 的问题:
安装 adb 和 fastboot 工具
确保已经安装了 adb 和 fastboot 工具。这些工具允许你与 Android 设备进行通信和调试。
bash
sudo apt-get update
sudo apt-get install adb fastboot

配置 udev 规则
打开终端并输入以下命令来创建一个新的 udev 规则文件。
bash
sudo nano /etc/udev/rules.d/51-android.rules

在打开的文件中添加规则,规则内容类似如下:
SUBSYSTEM==“usb”, ATTR{idVendor}==“YOUR_DEVICE_VENDOR_ID”, MODE=“0666”

在这里,将 YOUR_DEVICE_VENDOR_ID 替换为你 Android 设备的厂商 ID。你可以在设备连接后运行 lsusb 命令来查找此 ID。
保存文件并关闭编辑器。
重新加载 udev 规则。
bash
sudo udevadm control --reload-rules

重新插拔 Android 设备,并尝试使用 adb devices 命令查看是否识别到设备。
使用 adb 进行调试
现在,你应该能够使用 adb 命令在 Linux 上调试 Android 设备了。
bash
adb devices

这将显示已连接的 Android 设备列表。如果你的设备被正确识别并显示在列表中,那么 Google USB 驱动的问题应该已经解决了。

2.2.4 AVD(虚拟设备)的创建

1) 列出当前支持的Android API版本 命令:./android list targets
在这里插入图片描述
2)创建AVD
命令:./android create avd -n myavd -t 1 -b default/arm64-v8a

-n 后是avd的名称
-t 后是选择target ID ,这个target ID就是./android listtargets列出后的ID,选择合适的一个
-b 后是配置具体的ABI

3)查看创建后的结果
在这里插入图片描述

2.3 QT创建项目

2.3.1 启动qtcreator

切换到root用户,用root用户启动qtcreator,这个是为了解决非管理员用户检测不到avd问题

2.3.2 配置QT

在Tools-》Device-》Android 配置JDK、SDK、NDK 的安装路径,AVD Manager中添加AVD,如下图:
在这里插入图片描述
2.3.3 创建QT工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一步步next后创建好工程:
在这里插入图片描述
界面简单写了个“Hello Android”:
在这里插入图片描述
点击Projects-》Build 选择 Android build SDK:
在这里插入图片描述
这里我选择android-24

回到工程,qmake后进行构建工程:

问题1:cannot find -lGL
collect2: error: ld returned 1 exit status

解决办法:
打开命令行终端,切换到超级用户,输入以下命令,安装libgl1软件包:
sudo apt-get install libgl1-mesa-dev

问题2:
一直卡在Downloading https://services.gradle.org/distributions/gradle-4.6-bin.zip

解决办法:
通过浏览器下载后放到/root/.gradle/wrapper/dists/gradle-4.6-bin/4jp4stjndanmxuerzfseyb6wo/gradle-4.6-bin.zip ,如果没有该目录,通过命令手动创建
或者多构建几次也能偶尔能成功

构建成功后,点击执行程序,在弹出框中选择AVD(虚拟设备)后,等待AVD执行过程(等待时间有点长):
在这里插入图片描述
最终执行成功:
在这里插入图片描述
参考:https://download.csdn.net/blog/column/11400392/117256660

另外windows下QT搭建Android环境可以参考以下:
https://zhuanlan.zhihu.com/p/512077909?utm_id=0
https://blog.csdn.net/future_ai/article/details/85616180


http://www.kler.cn/a/160076.html

相关文章:

  • STM32芯片EXIT外部中断的配置与原理
  • 基于GPU器件行为的创新分布式功能安全机制为智能驾驶保驾护航
  • Git回到某个分支的某次提交
  • 基于Java Springboot快递物流管理系统
  • ES6字符串的新增方法
  • 1.两数之和-力扣(LeetCode)
  • Linux C语言 42-进程间通信IPC之网络通信(套接字)
  • 基于springboot+vue篮球联盟管理系统源码
  • 基于Vue.js的厦门旅游电子商务预订系统的设计和实现
  • String转Date,Date转String
  • ElasticSearch之Search settings
  • MongoDB导入导出命令
  • 配置OSS后如何将服务器已有文件上传至OSS,推荐使用ossutil使用
  • C++ 红黑树的封装
  • selinux-policy-default(2:2.20231119-2)软件包内容详细介绍(6)
  • 虚拟化逻辑架构:OVS 交换机与端口管理
  • TCP_报文格式解读
  • unity旋转选中效果
  • 前端入门(四)Ajax、Promise异步、Axios通信、vue-router路由、组件库
  • 软著项目推荐 深度学习图像风格迁移 - opencv python
  • unity | 动画模块之循环滚动选项框
  • pillow opencv matplotlib读写图片有什么区别
  • C语言——计算Fibonacci数列
  • 西工大计算机学院计算机系统基础实验一(函数编写1~10)
  • MyBatis-xml版本
  • java面试题,上楼梯有多少种方式