Я хочу использовать файл внешних ресурсов Qt в качестве файла расширения для моего приложения для Android. Общий размер ресурса, который должен быть объединен в файле ресурса, составляет более 700 МБ. Я обнаружил, что компилятор ресурсов (rcc) не может обрабатывать более 500 МБ, пока он не завис и не завис на моем компьютере. Я бы очень хотел сделать большой файл, так как это значительно облегчает загрузку файлов расширения для Android.
Я запускаю инструмент rcc из командной строки со следующими аргументами:
rcc -binary -no-compression myQrcFile.qrc -o myOutputFile
Мне не нужно использовать сжатие, чтобы иметь возможность воспроизводить видеофайлы, напрямую связанные с файлом ресурсов, но здесь это не проблема.
У меня два вопроса, но первый является основным:
Для создания данных меньшего ресурса, вы можете попробовать изменить сжатие (s, -компресс)
Для более быстрой загрузки, кажется, есть две возможности для встраивания ресурсов в Qt.
Если вы явно не укажете создание ресурсов-данных как внешней библиотеки, данные ресурсов будут встроены в исполняемый файл и будут загружены при запуске приложения (имеет смысл для значков приложений, шрифтов и т. Д.)
Если вы компилируете данные с опцией -binary
rcc -binary myresource.qrc -o myresource.rcc
вы будете встраивать данные в динамическую библиотеку, которую вы можете загрузить позже, чем запуск приложения с помощью вызова
QResource::registerResource("/path/to/myresource.rcc");
Вот аналогичный вопрос о SO, который, однако, ориентирован на динамическую загрузку ресурсов, а не на размер: Как я могу встроить ресурс Qt в файл .dll?
Эти ссылки должны быть полезны:
Я использовал MinGW, который является 32-битным компилятором. Я перешел на 64-битный компилятор MSVC и смог создавать большие файлы внешних ресурсов.