Добавление дополнительных файлов в приложение 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

Надеюсь, что это указывает вам в правильном направлении.

Другие вопросы по тегам