QT6 android下配置文件打包到APK

news2024/11/14 14:53:19

一.遇到问题

   用QT做android开发,生成的apk文件默认不包含程序配置文件和png文件,导致程序在android上无法读取必要的参数和logo,本文主要解决这个问题,并详细讲述QT android 的apk程序打包流程。

二.APK打包流程

1.如何生成APK

  当我们的工程的构建套件选择Android编译器的时候,编译之后Qt会自动为我们生成APK文件。如果是编译并运行,Qt会要求你选择一个匹配的安卓虚拟设备或者真机设备,

它会自动把编译生成的APK安装到你选择的设备中,然后运行。你也可以通过这个来调试程序。

2.APK的生成路径

  默认生成的apk的路径在build下:

  android-build/build/outputs/apk/debug/

  android-build/build/outputs/apk/release/

3.打包文件

  这是本文的重点,如何将资源文件打包进APK中,以及如何通过代码访问。

(1)打包

     要想把一些文件打包进APK,需要在pro文件里面这样写:

dataFiles.files+=src/readme.txt

dataFiles.files+=src/pic.png

dataFiles.path = /assets/data

INSTALLS += dataFiles

        --dataFiles使我们需要添加的资源文件(可能是一个或多个) 的名字,代表所有我们想打包进APK的文件,它只在pro文件

           中使用,所以可以随意命名,只要前后保持一致即可

        --src是一个和pro文件同级的目录,可以将想要打包进APK的文件都放在这个目录下面

        --dataFiles.files可以将想要打包的资源文件都包含进来

        --dataFiles.path可以指定这些文件打包进APK之后的路径

        --最后添加代码 INSTALLS += dataFiles 即可打包

        --上述的例子中,我将src文件夹下的readme.txt和pic.png两个文件打包到了APK中,放在了assets/data目录下

        --assets是安卓的一个目录,是专门可以用来放APK对应的资源文件的

(2)在代码中访问打包进APK的资源文件

     如果要访问上面添加的两个文件,使用如下的路径即可:

     assets:/data/readme.txt

(3)需要注意:

     在安卓平台下,std和C标准库的文件操作函数似乎不能识别这个路径,所以要使用Qt提供的类,比如

     QImage、QFile、QDir等。(这也是Qt跨平台的便利之处)

(4)ios平台设置(Qt官方文档里面找到的方法)

4.代码实现

    QFile file1("assets:/data/readme1.txt");

    if (file1.open(QIODevice::ReadOnly | QIODevice::Text)) {

        qDebug() << "file open ok" ;

        QTextStream in(&file1);

        QString line;

        while (!in.atEnd()) {

            line = in.readLine();

            qDebug() << "读取文件内容:" << line;

        }

    }

    

注意:

     file1.open(QIODevice::ReadOnly)只能以只读方式打开,如果以读写方式打开是会打开失败的,因为这个android的专用资源文件路径不允许写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1535988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32关于使用定时器触发ADC转换的理解

以STM32 ADC的常规通道为例&#xff08;注入通道类似&#xff09;&#xff1a; 如上图&#xff0c;STM32 ADC的常规通道可以由以上6个信号触发任何一个&#xff0c;我们以使用TIM2_CH2触发ADC1&#xff0c;独立模式&#xff0c;每次仅测一条通道&#xff0c;则ADC的配置如下&am…

2023年最受欢迎的编程语言排行榜 —— Python位居榜首,但对你来说未必是最佳选择

本文的编程语言热度统计数据来自《IEEE Spectrum》&#xff0c;《IEEE Spectrum》杂志是IEEE&#xff08;美国电气电子工程师学会&#xff09;的旗舰出版物&#xff0c;探讨了新技术的发展、应用和影响。它预测工程、科学和技术的趋势&#xff0c;并为理解、讨论和领导这些领域…

扩容分区和文件系统(Linux)

在ECS控制台上扩容云盘容量后&#xff0c;对应分区和文件系统并未扩容&#xff0c;您还需要进入ECS实例内部继续扩容云盘的分区和文件系统&#xff0c;将扩容部分的容量划分至已有分区及文件系统内&#xff0c;使云盘扩容生效。本文为您介绍如何通过两个步骤完成Linux实例云盘的…

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意&#xff1a;必须要新增一个&#xff0c;或者删除一个&#xff0c;或者替换一个&#xff0c;所以不能相等1.如果s和t相等&#xff0c;返回false,如果s和t长度差大于1…

搜维尔科技:利用增强现实改进检验和质量控制流程

直接在工作环境中显示数字指令 DELMIA 质量检查增强体验通过工作环境中的数字指令指导操作员完成检查过程&#xff0c;从而有效地识别、鉴定和报告不合格项。使用增强现实可以显着提高质量控制和检查过程的准确性和速度。由于技术人员可以访问实时信息&#xff0c;因此他们会减…

NX二次开发——获取当前dll的全路径,上一级路径和名称

在nx二次开发中经常会用到dll的全路径&#xff0c;上一级路径和名称&#xff0c;这里我对其进行封装&#xff0c;方便以后调用。 关键代码&#xff1a; //头文件 #include <Windows.h> #include <atlbase.h>//获取当前dll所在的文件夹(mode:0-全路径名&#xff0…

K8s-网络原理-中篇

引言 本文是《深入剖析 K8s》的学习笔记&#xff0c;相关图片和案例可从https://github.com/WeiXiao-Hyy/k8s_example中获取&#xff0c;欢迎 ⭐️! 上篇主要介绍了 Flannel 插件为例&#xff0c;讲解了 K8s 里容器网络和 CNI 插件的主要工作原理。还有一种“纯三层”的网络方…

数值分析(三) Lagrange(拉格朗日)插值法及Matlab代码实现

目录 前言一、Lagrange&#xff08;拉格朗日&#xff09;插值1. 线性插值2. 抛物插值3. 拉格朗日插值多项式 二、Lagrange插值算法及matlab代码1. Lagrange 插值算法matlab实现2 实例3. 线性插值示意图代码4. 抛物插值示意图代码 三、总结四、插值法专栏 前言 本篇为插值法专栏…

C语言内存函数之 memcmp函数

memcmp函数的记忆&#xff1a;mem表示内存&#xff0c;单位是字节&#xff0c;表示以单位字节来进行操作&#xff1b;头文件是string.h&#xff0c;cmp是compare的缩写&#xff0c;表示比较。总的意思就是在规定的内存下以字节为单位一个字节一个字节的进行比较。 memcmp函数的…

C语言基础练习——Day15

目录 选择题 编程题 寻找奇数 寻找峰值 选择题 1、有如下代码&#xff0c;则*(p[0]1)所代表的数组元素是 int a[3][2] {1, 2, 3, 4, 5, 6}, *p[3]; p[0] a[1]; A a[0][1]B a[1][0]C a[1][1]D a[1][2] 答案&#xff1a;C &#x1f4a1; 解析&#xff1a; 本题定义了一个3行2列…

怎样在一台电脑安装多个版本的JDK并切换使用?一篇文章教会你所有细节

目录 1. 下载安装JDK版本 2. 配置环境变量 2. 1 配置环境变量的步骤 2.2 需要注意的细节点 2.3 JDK8&#xff0c;11&#xff0c;17版本切换测试 1. 下载安装JDK版本 a. JDK8 下载链接&#xff1a; Java Downloads | Oraclehttps://www.oracle.com/java/technologies/dow…

蓝桥杯刷题(十三)

1.煤球数目 代码 cnt ans 0 start 1 a [] while cnt<100:ansstartstart 1t ansstartcnt1a.append(ans) print(sum(a))2.奖券数目 代码 def f(x)->bool:while x:if x%104:return Falsex//10return True ans 0 for i in range(10000,100000):if f(i):ans1 print(a…

土地利用的时序建模

1、LULC 模型的现状 最近的土地利用和土地覆盖 (LULC) 建模进展来自两种方法。 在一种方法中&#xff0c;现有模型适用于 LULC&#xff0c;而在另一种方法中&#xff0c;模型架构是针对 LULC 明确设计的。 随着大型基础模型的兴起&#xff0c;人工智能和深度学习取得了重大进…

广告增量实时索引构建实践

本期作者 1.前言 在广告检索系统中&#xff0c;增量索引&#xff08;实时索引&#xff09;是一类常见的技术&#xff0c;用于使广告信息的变更及时生效。其中一种主要的思路即由检索系统消费广告更新数据流&#xff0c;实时更新内存索引&#xff0c;对此行业中已有很多优秀方案…

Linux: 线程安全

Linux 线程共享了进程的资源(地址空间, 页表等), 多个线程同时访问同一个资源就可能产生问题:数据竞争 临界资源: 多个线程共享的资源临界区: 访问临界资源的区域互斥: 任何时刻, 只有一个执行流能进入临界区同步: 以一定顺序访问临界资源原子性: 要么完成, 玩么未完成 锁 死…

【Leetcode每日一题】 递归 - Pow(x, n)(难度⭐⭐)(40)

1. 题目解析 题目链接&#xff1a;50. Pow(x, n) 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 在这个算法中&#xff0c;递归函数的任务是求出 x 的 n 次方。那么&#xff0c;这个函数是怎么工作的呢&#xff1f;它…

Linux_开发工具_yum_vim_gcc/g++_gdb_make/makefile_进度条_git_2

文章目录 一、Linux软件包管理器yum1. centos7 中安装软件方式2.安装&#xff0c;卸载&#xff0c;查看3.yum源4.安装lrzsz5.安装扩展源 二、Linux编辑器-vim1.安装vim2.vim的三种模式3.命令模式-文本批量化操作4.vim配置 三、Linux编译器-gcc/g使用1.安装2.gcc如何完成1、 预处…

安全工具介绍 SCNR/Arachni

关于SCNR 原来叫Arachni 是开源的&#xff0c;现在是SCNR&#xff0c;商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了&#xff0c;针对web app 的安全工具&#xff0c;DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…

qt5-入门-标签页部件QTabWidget-1

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 目录 效果实现Qt Designer操作代码addStretch()解释 效果 首页有三个按钮和最近文件列表。 拖动窗口&#xff0c;按钮和文件列表仍然处…

【算法与数据结构】总结

目录 引言 一、线性数据结构 1. 1 数组&#xff08;Array&#xff09; 1.2 链表&#xff08;Linked List&#xff09; 1.3 栈&#xff08;Stack&#xff09; 1.4 队列&#xff08;Queue&#xff09; 二、图形数据结构 2.1 深度优先搜索&#xff08;DFS&#xff09;&…