Компилированные и не компилированные ресурсы Android

Компилированные и не компилированные ресурсы 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 (т.е. заменить дефис подчеркиванием).

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий