Компилированные и не компилированные ресурсы Android
Использование ресурсов поддерживается в Android в основном с помощью двух типов файлов — XML-файлов и низкоуровневых файлов (например, изображения, аудио и видео). Вы видели, что в некоторых случаях ресурсы определяются как значения внутри XML-файлов (строки, к примеру), а иногда целые XML-файлы являются ресурсами (скажем, файл с ресурсом компоновки).
В рамках набора XML-файлов имеется и другой отличительный признак: одни компилируются в двоичный формат, а другие копируются на устройство без изменений. Знакомые вам примеры — XML-файлы строковых ресурсов и XML-файлы с ресурсами компоновок — компилируются в двоичный формат, прежде чем стать частью устанавливаемого пакета. Эти XML-файлы имеют предопределенные форматы, при которых XML-узлы могут транслироваться в идентификаторы.
Но может также существовать набор XML-файлов, которые обладают собственным свободным форматом; они не интерпретируются, но имеют сгенерированные идентификаторы ресурсов (тип ресурса: xml). Однако их тоже хорошо бы компилировать в двоичные форматы и иметь возможность проведения локализации. Для этого такие файлы можно поместить в подкаталог /res/xml/. В этом случае для чтения XML-узлов будут использоваться интерпретаторы XML, поставляемые Android.
Но если поместить любые файлы, в том числе XML-файлы, в каталог /res/raw/, то они не будут компилироваться в двоичный формат. Однако поскольку они являются ресурсами, Android генерирует идентификаторы через R.java. Типом ресурса для низкоуровневых файлов является raw. Таким образом, для доступа к этим файловым сущностям применяется R.raw. имя-файла-без-расширения. Для чтения таких файлов придется использовать явные API-интерфейсы на основе потоков. К этой категории относятся аудио- и видеофайлы.
На заметку! Поскольку каталог raw входит в иерархию /res/ , даже такие обычные аудио- и видеофайлы поддаются локализации и генерации идентификаторов, как и все другие ресурсы.
Как было показано в табл. 2.1 в предыдущей главе, ресурсные файлы хранятся в различных подкаталогах в зависимости от их типа. Вот некоторые важные подкаталоги в папке /res и типы содержащихся в них ресурсов:
• anim — компилированные файлы анимации;
• drawable — растровые изображения;
• layout — определения пользовательского интерфейса и представлений;
• values — массивы, цвета, размерности, строки и стили;
• xml — компилированные произвольные XML-файлы;
• raw — не компилированные низкоуровневые файлы.
Компилятор ресурсов, входящий в состав инструментального средства Android Asset Packaging Tool (AAPT), компилирует все ресурсы, исключая ресурсы raw, и помещает их в финальный файл .apk. Этот файл содержит код и ресурсы Android-приложения и соответствует файлу .jar в Java (apk означает Android package — Android-пакет). Именно файл .apk устанавливается на устройствах.
На заметку! Хотя синтаксический анализатор ресурсов XML позволяет применять имена ресурсов вроде hello-string, они приведут к ошибке на этапе компиляции в R.java. Такое имя ресурса необходимо изменить на hello_string (т.е. заменить дефис подчеркиванием).
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.