C++ android assetmanager читает файлы из внутреннего каталога приложения

Я использую AssetManager в коде C++ для загрузки своих активов. Но если во внутреннем каталоге приложения AssetManager существует файл с таким же именем, сначала проверьте его и загрузите.

Можно ли настроить AssetManager, чтобы избежать файлов во внутренней директории приложения и проверять только файлы ресурсов?

UPD: я был не прав. AssetManager работает нормально.

1 ответ

Такое же поведение для Java и NDK. Оба используют класс AssetManager под капотами. Для более ранних версий AssetManager.cppAssetManager::open() работает так же.

Теоретически, возможно настроить поведение AssetManager (в конце концов, AssetManager.addAssetPaths () является общедоступным и может быть получен с помощью отражения), но нет документированного способа сделать это, что означает, что вы не можете знать, будет ли ваш хак работать над следующей версией Android или над пользовательской версией системы какого-либо поставщика.

Я бы порекомендовал не делать такие трюки. Гораздо безопаснее проверить, существует ли тот же файл во внутренней директории, и удалить или переименовать его, если это необходимо. Но в любом случае менеджер ресурсов обычно не читает из каталога внутренних файлов приложения.

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