Qt 5.2 включая внешний файл в пакет Android?
Как включить внешний файл в "apk"?
пример:
есть "123.txt " в главном каталоге где .pro файл существует. Что добавить в файл pro, чтобы поставить " 123.txt " в apk.
Я попробовал развертывание, DEPLOYMENTFOLDERS. Но они работают только с Symbian и Windows CE.
5 ответов
есть два способа сделать это, оба упомянуты в разделе "перенос существующего приложения Qt" на Qt 5.1 Документация Для Android.
- Bundle их в файл qrc (работает кросс-платформенный)
- добавьте их в каталог" assets: "(Android specific)
для #2:
каталог "активы" будет создан при построении проекта. Я нашел, что проще всего использовать переменную "INSTALLS" qmake чтобы скопировать файлы в каталог, прежде чем он будет упакован в apk. Ниже приведен файл qmake для проекта, который я сделал. Обратите внимание, что для установок путь к активам читает "/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 могут получить доступ к содержимому файла qrc с помощью префикса": / "или префикса схемы URL"qrc:".
другой подход заключается в развертывании ресурсов в каталоге assets пакета. Это лучший вариант, если вы хотите добиться лучшей совместимости с API Android. Вы можете получить доступ ко всем ресурсам в каталоге, используя "активы:" префикс. В отличие от qrc, этот подход не является кросс-платформенным решением.
когда вы создаете свой проект, папка с именем "assets" создается в Build-Directory/android-build/
. После копирования файлов в каталог assets вы можете добавить их в свой pro:
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);
}
специфический к User2400925
в QT 5.1 я использовал для копирования базы данных из папки Assets в домашнюю папку пользователя, если файл не существует. Который может быть использован приложением.
вы можете пройти этой ссылке
еще один простой способ сделать это:
1) Добавьте эту строку в свою .про
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
2) создайте папку android-sources в папке proj. Поместите все, что вам нужно в android-источники / активы/. Вы также можете поместить туда любые другие файлы, такие как AndroidManifest.xml или android-источники / res/drawable / значок.png, который вы хотите скопировать и обновить в целевой пакет.
еще один простой способ сделать это:
- добавьте эту строку в свой .про
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
- создайте папку android-sources в папке proj. Поместите все, что вам нужно в android-источники / активы/. Вы также можете поместить туда любые другие файлы, такие как AndroidManifest.xml или android-источники / res/drawable / значок.png, который вы хотите скопировать и обновить в целевой пакет.