Qt 5.2将外部文件包含在Android软件包中



如何将外部文件包含到"apk"中?

示例:

在.pro文件所在的主目录中有"123.txt"。我应该在pro文件中添加什么才能将"123.txt"放入apk中。

我试过DEPLOYMENT,DEPLOYMENTFOLDERS。但它们只适用于Symbian和Windows CE。

有两种方法可以做到这一点,都在Qt 5.1 Documentation For Android上的"移植现有Qt应用程序"中提到。

  1. 将它们捆绑到qrc文件中(跨平台工作)
  2. 将它们添加到"assets:"目录(特定于Android)

对于#2:

"assets"目录将在您构建项目时创建。我发现在将文件打包到apk中之前,使用"INSTALLS"qmake变量将文件复制到目录中是最简单的。以下是我制作的一个项目的qmake文件。请注意,对于INSTALLS,资产的路径为"/assets",而不是您所期望的"assets"。(它实际上最终位于Android构建工作区的一个子目录中。)

要从android中的代码访问目录,请使用"assets:"。(在本例中,/assets/Samples==>assets:/Samples。)

# - setup the correct location to install to and load from
android {
    # android platform
    # From: http://community.kde.org/Necessitas/Assets
    SAMPLES_INSTALL_PATH=/assets/Samples
} else {
    # other platforms
    SAMPLES_INSTALL_PATH=$$OUT_PWD/Samples
}
# - setup the 'make install' step
samples.path = $$SAMPLES_INSTALL_PATH
samples.files += $$SAMPLE_FILES
samples.depends += FORCE
INSTALLS += samples

您可以使用Qt资源系统。默认情况下,所有Qt应用程序都可以使用":/"前缀或URL方案前缀;qrc:";。

另一种方法是将资源部署到包的assets目录中。如果你想与安卓API实现更好的互操作性,这是最好的选择。您可以使用";资产:";前缀与qrc不同,这种方法不是一种跨平台的解决方案。

当你构建你的项目时,一个名为";资产";在CCD_ 3中创建。在资产目录中复制您的文件后,您可以将这些文件添加到您的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);
}

特定于用户2400925

在QT 5.1中,如果文件不存在,我曾将数据库从Assets文件夹复制到用户的主文件夹。应用程序可以使用。

您可以通过这个链接

一种更简单的方法:

1) 将此字符串添加到.pro 中

ANDROID_PACKAGE_SOURCE_DIR=$$PWD/安卓源

2) 在proj文件夹中创建android源文件夹。将您需要的任何东西放入android源代码/assets/。您还可以将任何其他文件(如AndroidManifest.xml或androidsources/res/drawable/icon.png)复制并更新到目标捆绑包中。

一种更简单的方法:

  1. 将此字符串添加到你的.pro中

ANDROID_PACKAGE_SOURCE_DIR=$$PWD/安卓源

  1. 在proj文件夹中创建android源文件夹。将您需要的任何东西放入android源代码/assets/。您还可以将任何其他文件(如AndroidManifest.xml或androidsources/res/drawable/icon.png)复制并更新到目标捆绑包中

相关内容

  • 没有找到相关文章

最新更新