Xamarin Android Assets.Open выдает исключение FileNotFound

Кажется, это очень просто, но не знаю, почему я не могу использовать метод Assets.open без исключения FileNotFound.

Я следовал примеру на xamrain.com http://docs.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/

и до сих пор не заставить его работать.

Я добавил txt-файл в папку «Активы». Установите действие «Сборка» на «AndroidAsset». Я попытался также установить COpy для выходного каталога на «Всегда копировать» и «Не копировать».

Независимо от комбинации, я всегда получаю исключение FileNotFound.

Похоже, что многие из коллег-разработчиков также видят проблему, и я не вижу ответа, который я мог бы попробовать. Ценю, если кто-то может пролить свет на этот простой предмет.

заранее спасибо


person biprism    schedule 13.05.2014    source источник


Ответы (4)


Во-первых, не видя вашего кода, невозможно увидеть ошибки, которые вы могли пропустить. Легко пропустить проблему с именем файла или другую проблему, которая может быть не столь очевидной.

Тем не менее, спекулятивно, я попытаюсь дать вам несколько советов.

Параметр «Копировать в выходной каталог» не важен для ресурсов Android. Действие сборки AndroidAsset гарантирует, что файл будет включен в пакет приложения, что позволит вам загрузить его с помощью Assets.Open().

Чтобы убедиться в этом, найдите скомпилированный файл .apk в папке bin/debug или bin/release. Файл .apk — это просто архив, поэтому вы можете открыть его с помощью winrar или 7-zip или переименовать его в .zip, и окна откроют его.

Если файл находится в папке с ресурсами, вероятно, проблема связана с вашим кодом. Вы должны опубликовать это в своем вопросе. Если файла там нет, попробуйте очистить проект или удалить папку bin, чтобы принудительно выполнить новую сборку и повторно упаковать.

person Tom Bowers    schedule 13.05.2014
comment
Спасибо, кажется, у меня получилось. Не знаю, честно говоря, почему это не сработало правильно. Мне пришлось переделать код, и теперь я в порядке. - person biprism; 20.05.2014

Проверьте свойства файла. Мне пришлось установить «Build Action» на AndroidAsset, и после этого он работает нормально.

person iwanlenin    schedule 14.07.2015

У меня была эта проблема раньше, и я, наконец, обнаружил, что файл изображения в моем каталоге assets/ был назван китайскими иероглифами, поэтому изображения в активах загружаются неправильно.

Я думаю, вам следует проверить имена файлов, если они были плохо закодированы.

person 江亦涵    schedule 05.09.2014

Вы должны попробовать имена файлов только в нижнем регистре. Иногда Android конвертирует имена в нижний четный файл, содержащий прописные буквы.

person valentasm    schedule 24.10.2014