如何将外部文件包含在“apk”中?
示例:
.pro文件存在的主目录中有“123.txt”。我应该添加什么文件将“123.txt”放入apk。
我尝试过部署,部署文件。但它们只适用于Symbian和Windows CE。
答案 0 :(得分:11)
有两种方法可以做到,两者都在Qt 5.1 Documentation For Android.上的“移植现有Qt应用程序”中提到
#2:
构建项目时将创建“assets”目录。我发现最简单的方法是使用“INSTALLS”qmake变量将文件复制到目录中,然后再将其打包到apk中。以下内容来自我制作的项目的qmake文件。请注意,对于INSTALLS,资产的路径读取“/ 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
答案 1 :(得分:7)
您可以使用Qt资源系统。默认情况下,所有Qt应用程序都可以使用“:/”前缀或URL方案前缀“qrc:”来访问qrc文件的内容。
另一种方法是将资源部署到包的资产目录中。如果您想要与Android API实现更好的互操作性,这是最佳选择。您可以使用“assets:”前缀访问目录中的所有资源。与qrc不同,此方法不是跨平台解决方案。
在构建项目时,在Build-Directory/android-build/
中创建了一个名为“assets”的文件夹。在资产目录中复制文件后,您可以将这些文件添加到您的专业人员:
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);
}
答案 2 :(得分:1)
答案 3 :(得分: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,您希望将这些文件复制并更新到目标包中。
答案 4 :(得分:-2)
另一种简单的方法:
ANDROID_PACKAGE_SOURCE_DIR = $$ PWD / android-sources