Добавление дополнительных файлов в приложение Android
Я использую qt 5.2, и я пытался выяснить, как иметь дополнительные файлы вместе с моим приложением при его установке. Я хочу быть в состоянии использовать adb shell
а потом cd
в data/data/org.qtproject.example.myProjectPath/
, Я хотел бы найти этот файл где-нибудь. Я уже отправил вопрос об этом, но не смог найти ответы. Некоторые люди отвечали, и там упоминалось об активах, но qt 5.2 не создает файл ресурсов. Мне также сказали попробовать что-то вроде
deployment.files += program
deployment.path = /assets
INSTALLS += deployment
а также
documentation.path = /usr/local/program/doc
documentation.files = docs/*
INSTALLS += documentation
Ни один из них я не мог получить на работу. Мне также дали эту ссылку, но она не похожа на Android.
3 ответа
Вы можете использовать систему Qt Resource. По умолчанию все приложения Qt могут обращаться к содержимому файла qrc, используя префикс ":/" или префикс схемы URL, "qrc:".
Другой подход заключается в развертывании ресурсов в каталоге ресурсов пакета. Это лучший вариант, если вы хотите добиться лучшей совместимости с API-интерфейсами Android. Вы можете получить доступ ко всем ресурсам в каталоге, используя префикс "assets:". В отличие от qrc, этот подход не является кроссплатформенным решением.
Когда вы создаете свой проект, папка с именем "assets" создается в Build-Directory/android-build/
, После копирования ваших файлов в каталог ресурсов вы можете добавить их в свой про:
deployment.files += MyFile1
deployment.files += MyFile2
...
deployment.path = /assets
INSTALLS += deployment
Решение, которое работает для меня (Qt 5.9.2):
добавьте следующую строку в
.pro
файл, если у вас его еще нет, например, для пользовательского файла манифеста (имя папки не имеет значения дляpkg_src
):ANDROID_PACKAGE_SOURCE_DIR = $$PWD/pkg_src
создать папку "
pkg_src/assets
"относительно файла.proскопируйте нужные файлы в эту папку, вручную или, например, с помощью
QMAKE_POST_LINK
команда, которая копирует файлы туда после сборки приложения.
Это не на 100% идеально, так как QMAKE_POST_LINK
выполняется, только если есть что построить, но, по крайней мере, достаточно для моих нужд.
Я не знаком с qt, но вы добавляете файлы, похожие на музыкальные, художественные или текстовые файлы, которые не являются кодом, в каталог с именем assets на вашем компьютере, где живет ваш код.
Типичная структура каталогов может иметь каталоги для libs, res, src и assets. Процесс, который собирает apk, автоматически подберет эту папку и все файлы в ней и включит ее в apk. Вы не можете использовать оболочку для просмотра этих файлов.
Чтобы получить доступ к этим файлам, вы делаете это в своем классе активности java, вызывая getAssets(). Примером того, как открыть файл из вашего класса активности, может быть...
InputStream is = getAssets().open("yourfile.mp3");
http://developer.android.com/reference/android/content/res/AssetManager.html
Надеюсь, что это указывает вам в правильном направлении.