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