14

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

例子:

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

我尝试了部署,部署文件夹。但它们只适用于 Symbian 和 Windows CE。

4

5 回答 5

11

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

  1. 将它们捆绑到一个 qrc 文件中(跨平台工作)
  2. 将它们添加到“资产:”目录(特定于 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
于 2013-12-13T19:28:14.323 回答
8

您可以使用 Qt 资源系统。默认情况下,所有 Qt 应用程序都可以使用“:/”前缀或 URL 方案前缀“qrc:”访问 qrc 文件的内容。

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

构建项目时,会在Build-Directory/android-build/. 在资产目录中复制文件后,您可以将这些添加到您的专业版:

deployment.files += MyFile1
deployment.files += MyFile2
...
deployment.path = /assets
INSTALLS += deployment

assets 中的文件是只读的。因此,如果要更改它们,应首先将其复制到其他位置:

QFile dfile("assets:/MyFile1");
if (dfile.exists())
{
     dfile.copy("./MyFile1");
     QFile::setPermissions("./MyFile1",QFile::WriteOwner | QFile::ReadOwner);
}
于 2014-05-13T07:43:18.260 回答
2

特定于 User2400925

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

你可以通过这个链接

于 2014-01-06T07:15:52.917 回答
1

一种更简单的方法:

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

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources

2)在您的 proj 文件夹中创建 android-sources 文件夹。将你需要的任何东西放入 android-sources/assets/. 您还可以将要复制和更新到目标包中的任何其他文件(例如 AndroidManifest.xml 或 android-sources/res/drawable/icon.png)放在那里。

于 2015-07-16T22:21:48.467 回答
-2

一种更简单的方法:

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

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources

  1. 在您的 proj 文件夹中创建 android-sources 文件夹。将你需要的任何东西放入 android-sources/assets/. 您还可以将要复制和更新到目标包中的任何其他文件(例如 AndroidManifest.xml 或 android-sources/res/drawable/icon.png)放在那里。
于 2016-10-06T12:38:09.997 回答