Qt5.2是否将外部文件包含到Android软件包中?
如何将外部文件包含到“apk”中 例如: pro文件所在的主目录中有“123.txt”。我应该向pro文件中添加什么以将“123.txt”放入apkQt5.2是否将外部文件包含到Android软件包中?,qt,apk,qt5,qmake,qt5.1,Qt,Apk,Qt5,Qmake,Qt5.1,如何将外部文件包含到“apk”中 例如: pro文件所在的主目录中有“123.txt”。我应该向pro文件中添加什么以将“123.txt”放入apk 我尝试了部署,部署文件夹。但它们只适用于Symbian和Windows CE。有两种方法可以做到这一点,这两种方法都在上的“移植现有的Qt应用程序”中提到 将它们捆绑到qrc文件中(跨平台工作) 将它们添加到“资产:”目录(特定于Android) 对于#2: “资产”目录将在您构建项目时创建。我发现在将文件打包到apk之前,使用“INSTALLS”
我尝试了部署,部署文件夹。但它们只适用于Symbian和Windows CE。有两种方法可以做到这一点,这两种方法都在上的“移植现有的Qt应用程序”中提到
/assets/Samples
==>资产:/Samples
)
特定于用户2400925 在Qt5.1中,如果文件不存在,我曾经将数据库从Assets文件夹复制到用户的home文件夹。应用程序可以使用它
您可以通过使用Qt资源系统。默认情况下,所有Qt应用程序都可以使用“:/”前缀或URL方案前缀“qrc:”访问qrc文件的内容 另一种方法是将资源部署到包的资产目录中。如果您想与Android API实现更好的互操作性,这是最好的选择。您可以使用“assets:”前缀访问目录中的所有资源。与qrc不同,这种方法不是跨平台解决方案 构建项目时,将在
构建目录/android build/
中创建一个名为“资产”的文件夹。复制资产目录中的文件后,可以将这些文件添加到pro中:
deployment.files += MyFile1
deployment.files += MyFile2
...
deployment.path = /assets
INSTALLS += deployment
资源中的文件是只读的。因此,如果要更改,应首先将其复制到其他位置:
QFile dfile("assets:/MyFile1");
if (dfile.exists())
{
dfile.copy("./MyFile1");
QFile::setPermissions("./MyFile1",QFile::WriteOwner | QFile::ReadOwner);
}
还有一个简单的方法: 1) 将此字符串添加到.pro中 ANDROID\u包\u源\u目录=$$PWD/ANDROID源
2) 在proj文件夹中创建android sources文件夹。将您需要的任何内容放入android sources/assets/。您还可以将任何其他文件(如AndroidManifest.xml或android sources/res/drawable/icon.png)复制并更新到目标捆绑包中。另一种简单方法:
1.我尝试过(没有成功),但后来我了解到,即使在只读模式下,Qt也不允许使用与qrc文件绑定的数据库。Qt 5.2不生成“资产”目录。我应该怎么做?我已经用一个如何使用资产的示例更新了答案:目录。该解决方案在Qt 5.12.0上仍然有效,而之前评论中的解决方案对我不起作用。这只是复制/粘贴了一年多前发布的art926的答案。SQLite数据库文件确实需要复制到文件系统文件夹,即使是只读访问。因为Qt将文件标识符下传给底层SQLite3库(),该库只能处理文件系统路径,而不能处理
assets://
和qrc://
方案。您可以使用“assets:”前缀访问目录中的所有资源是的,有例外。例如,Qt SQLite数据库驱动程序只接受普通文件系统路径。
QFile dfile("assets:/MyFile1");
if (dfile.exists())
{
dfile.copy("./MyFile1");
QFile::setPermissions("./MyFile1",QFile::WriteOwner | QFile::ReadOwner);
}