Assets (Активы)
В Android имеется ещё один каталог, в котором могут храниться файлы, предназначенные для включения в пакет — assets. Этот каталог находится на том же уровне, что и res. Для файлов, располагающихся в assets, в R.java не генерируются идентификаторы ресурсов. Для их считывания необходимо указать путь к файлу. Путь к файлу является относительным и начинается с /assets. Этот каталог, в отличие от подкаталога res, позволяет задавать произвольную глубину подкаталогов и произвольные имена файлов и подкаталогов.
По умолчанию проект в студии не содержит данную папку. Чтобы её создать, выберите меню File | New | Folder | Assets Folder.
Чтение файлов
Для доступа к файлам используется класс AssetManager. Пример для чтения текстового файла.
Сначала на Kotlin.
button.setOnClickListener < val sampleText: String = applicationContext.assets .open("sample.txt") .bufferedReader().use < it.readText() >println(sampleText) >
String getStringFromAssetFile(Activity activity)
String text = filename; byte[] buffer = null; InputStream is; try < is = getAssets().open(text); int size = is.available(); buffer = new byte[size]; is.read(buffer); is.close(); >catch (IOException e) < e.printStackTrace(); >String str_data = new String(buffer); return str_data;
Для доступа к графическому файлу из актива можно использовать следующий код:
public void loadImageFromAsset() < try < // получаем входной поток InputStream ims = getAssets().open("cat.jpg"); // загружаем как Drawable Drawable d = Drawable.createFromStream(ims, null); // выводим картинку в ImageView mImage.setImageDrawable(d); >catch(IOException ex) < return; >>
Вы также можете загрузить изображение в Bitmap, используя BitmapFactory.decodeStream(), вместо Drawable.
Функция-расширение для Kotlin, которая вернёт Bitmap.
fun Context.assetsBitmap(path: String): Bitmap? < val inputStream: InputStream var bitmap: Bitmap? = null try < inputStream = assets.open(path) bitmap = BitmapFactory.decodeStream(inputStream) >catch (e: IOException) < // Handle exception here >return bitmap >
Используем собственные шрифты
Напишем практический пример создания приложения, в котором будут использоваться собственные шрифты, не входящие в стандартную библиотеку шрифтов Android. Для этого мы упакуем нужные шрифты вместе с приложением. Поместим в каталог assets/fonts файлы шрифтов (можно скачать бесплатные шрифты с сайтов 1001 Free Fonts или Urban Fonts ).
В файл разметки добавим пару текстовых полей с заготовленным текстом для вывода этого текста с нашим шрифтом.
В классе активности загрузим объект EditText из ресурсов, а затем создадим объект Typeface, используя вызов статического метода Typeface.createFromAsset(). Метод createFromAsset() принимает два параметра:
- объект AssetManager, который можно получить вызовом метода getAssets()
- путь к файлу актива.
Например, загрузить шрифт для текстового поля EditText можно следующим способом:
@Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText firstEditText = (EditText)findViewById(R.id.editText1); firstEditText.setTypeface(Typeface.createFromAsset( getAssets(), "fonts/DigitalDream.ttf")); final EditText secondEditText = (TextView)findViewById(R.id.editText2); secondEditText.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Catwalk.ttf")); >
Запустив проект, мы увидим в текстовых полях надписи Happy New Year! и Meow!, выводимые нашими собственными шрифтами.

Пример для фрагмента.
@Override public void onAttach(Activity activity) < super.onAttach(activity); // Какой-то шрифт courgette = Typeface.createFromAsset(getActivity().getAssets(), "Courgette-Regular.ttf"); >
Загрузка локальных файлов из активов в WebView
Если нужно загрузить локальные страницы и изображения из активов в WebView, то можно использовать префикс file://android_asset. Подробнее смотрите в статье про WebView.
myBrowser = (WebView)findViewById(R.id.mybrowser); myBrowser.loadUrl("file:///android_asset/mypage.html");
Получаем список файлов в папке assets
Можно получить список файлов, которые находятся в папке assets. Для быстрой проверки кода я вручную скопировал в папку два файла:
AssetManager myAssetManager = getApplicationContext().getAssets(); try < String[] Files = myAssetManager.list(""); // массив имён файлов Toast.makeText(getApplicationContext(), Files[0] + ", " + Files[1], Toast.LENGTH_LONG).show(); >catch (IOException e)
Кроме ваших файлов, также возвращаются странные папки /images, /sounds, /webkit. Учитывайте это в своих проектах. Так как в папке можно создавать собственные подпапки, то можно воспользоваться вспомогательным методом:
void displayFiles(AssetManager mgr, String path) < try < String list[] = mgr.list(path); if (list != null) for (int i = 0; i < list.length; ++i) < Log.v("Assets:", path + "/" + list[i]); displayFiles(mgr, path + "/" + list[i]); >> catch (IOException e) < Log.v("List error:", "can't list" + path); >> // вызываем метод public void onClick(View view) < final AssetManager mgr = getAssets(); displayFiles(mgr, ""); // содержимое папки /assets, включая странные папки displayFiles(mgr, "cats"); // содержимое подпапки /assets/cats >
Ограничение на размер файлов
По сети гуляет информация, что существует ограничение в 1 Мб на размер файлов в папке assets. При превышении размера у вас может появиться ошибка:
Data exceeds UNCOMPRESS_DATA_MAX
Я не сталкивался, поэтому рецепт решения проблемы не предлагаю.
Папка assets что это
Специальные Папки Проекта
В большинстве случаев вы можете называть папки в проекте как угодно. Однако в Unity есть специальные зарезервированные имена папок, содержимое которых Unity обрабатывает особым образом. К примеру чтобы правильно работать, скрипты расширяющие возможности редактора Unity должны быть помещены в папку с названием Editor. Полный список имен специальных папок описан ниже.
Assets
Папка Assets — главная папка в которой содержатся все ассеты, которые могут быть использованы проектом на Unity. Содержимое Project view соответствует содержимому папки Assets. Большинство функций API предполагают что всё содержится в папке Assets и не требуют явного указания расположения. Однако есть некоторые функции которым нужно явно указывать папку Assets (напр. некоторые функции класса AssetDatabase).
Editor
Все скрипты размещённые в папке Editor (или подпапке) будут расцениваться как скрипты редактора Unity нежели как скрипты проекта. Такие скрипты предназначены для расширения функционала редактора Unity и недоступны во время выполнения проекта. В проекте может быть несколько папок Editor, но надо учитывать что размещение конкретной папки Editor влияет на порядок компиляции скриптов относительно других скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
Editor Default Resources
Используя функцию EditorGUIUtility.Load скрипты редактора Unity могут загружать файлы ассетов по мере надобности. Эта функция ищет файлы ассетов в папке Editor Default Resources которая должна быть размещена в корне папки Assets.
Gizmos
“Гизмо” позволяют вам визуализировать детали реализации в окне сцены которые в обычных условиях невидны. Функция Gizmos.DrawIcon рисует в окне сцены иконку-маркер обозначающую какой либо специальный объект или местоположение в пространстве. Изображение для этой иконки-маркера следует разместить в папке Gizmos чтобы функция смогла его найти.
Plugins
Система подключаемых модулей позволяет расширять функционал Unity. Подключаемые модули это нативные DLL как правило реализованные на языке C/C++. Они позволяют получить доступ к сторонним библиотекам (например распознавания речи), системным вызовам и прочему функционалу недоступному Unity в стандартной поставке. Чтобы подключаемый модуль распознался Unity их следует разместить в папке Plugins и как и для папки Editor, это повлияет на порядок компиляции скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
Resources
Как правило создание экземпляров ассетов происходит в окне сцены и потом используется во время игры. Также в Unity есть механизм загрузки ассетов по требованию. Для этого нужно разместить ассеты в папке Resources или её подпапке (в проекте может быть несколько папок Resources и размешать их можно где угодно). Загрузить ассеты можно с помощью функции Resources.Load.
StreamingAssets
Когда вы импортируете какой-либо стандартный пакет с ассетами (menu: Assets > Import Package ) ассеты пакета размещаются в папке Standard Assets или Pro Standard Assets в случае если пакет доступен только для Про лицензии. Помимо того что папки содержат ассеты, они также влияют на порядок компиляции скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
StreamingAssets
Большинство игровых ассетов преобразуются во внутренние форматы Unity и встраиваются в собранный проект, однако есть случаи в которых нужно хранить ассеты в их исходном формате в виде отдельного файла. Например чтобы проиграть видео на платформе iOS нужно читать файл видео напрямую из файловой системы нежели использовать для этого MovieTexture. Если разместить файл в папке StreamingAssets_, при сборке проекта он будет скопирован в исходном виде на целевую платформу где будет доступен из определённой папки. Подробности смотри на странице Потоковая передача Ассетов.
WebPlayerTemplates
Для сборок под web-плеер, вы можете предоставить собственный вариант страницы для размещения web-плеера. Страница оформляется в виде шаблона который включает в себя информацию из проекта, например имя проекта. Чтобы эти шаблоны были доступны в Unity, их следует размещать в папке WebPlayerTemplates. Подробности смотри на странице Использование шаблонов Web Player. Также стоит отметить, что все скрипты, размещенные в папке WebPlayerTemplates, будут игнорироваться компилятором. Это можно использовать как временное место для хранения неготовых скриптов, из-за которых невозможно запустить игру.
Assets
During the import process Unity completely ignores the following files and folders in the Assets folder (or a sub-folder within it):
- Hidden folders.
- Files and folders which start with ‘.’.
- Files and folders which end with ‘~’.
- Files and folders named ‘cvs’.
- Files which have ‘tmp’ extension.
This is used to prevent importing special and temporary files created by operating system or other applications.
Структура проекта

Ниже расположено описание только нужных для работы файлов и папок. Более подробное описание можно получить в официальной документации.
src — исходный код самого сайта. Содержит тему для Bootstrap и шаблоны Handlebars.
dist (изначально ее нет) — полностью готовая сборка сайта.
.eslintrc.json — настройки линтера JavaScript. О том, как настроить линтер, можно прочитать в официальной документации EsLint.
.stylelintrc.json — настройки линтера стилей. Настройка StyleLint
package.json — информация о нашем проекте. Официальная документация
.editorconfig — настройка тестового редактора или среды разработки. Подробнее про .editorconfig
README.md — ReadMe-файл для Гитхаба. Поддерживает Markdown.
Структура исходного кода
Процесс работы Baumeister можно представить как преобразование содержимого папки src в содержимое папки dist.
Стили проверяются линтером, собираются и преобразовываются из SCSS в CSS по правилам, установленным Bootstrap, после чего дополняются вендорными префиксами и минифицируются. Шаблоны Handlebars превращаются в готовые HTML-файлы. Изображения оптимизируются, их размер значительно уменьшается. JavaScript-код проверяется линтером, оптимизируется, минифицируется, собирается в один файл.
Готовый сайт, находящийся в папке dist, радикально отличается от его исходных текстов. Его редактирование нецелесообразно: крайне сложно и бесполезно редактировать минифицированные скрипты и стили. Все изменения следует вносить только в файлы, расположенные в папке src.

app — JavaScript-код.
assets — картинки, шрифты и тема для Bootstrap. Все медиа-файлы (например, видео) следует помещать сюда.
handlebars — шаблоны Handlebars.
Остальные файлы с расширением .hbs превратятся в одноименные страницы в корне сайта. Например, index.hbs превратится в index.html.
Папка app (JavaScript-код)

tests — модульные тесты для JavaScript-кода.
.eslintrc.json — локальные настройки EsLint.
base.js — часть Bootstrap. Лучше не удалять.
index.js — главный файл. Дополнительный код следует писать именно тут.
polyfills.js — ES6-полифиллы, которые могут вам потребоваться.
Папка assets (медиа-файлы)

fonts — файлы шрифтов.
img — картинки.
scss — тема для Bootstrap. Именно с ней мы будем работать наибольшее количество времени.
Папка assets/scss (тема для Bootstrap)

Моя тема называется my-awesome-theme. У вас название будет отличаться.
(название темы) — папка со стилями всех компонентов. При создании нового компонента файл с его стилями нужно создавать именно тут. Более подробно этот процесс описан в разделе «Рабочий процесс». По умолчанию содержит набор файлов, служащих примерами использования различных приемов работы с компонентами.
_(название темы).scss — корневой файл темы. При создании файла со стилями нового компонента, файл с его стилями нужно вызывать из корневого файла.
_print.scss — стили, применяемые при печати страницы. Не будут включены, пока вы не включите их в файле index.scss.
_variables.scss — переменные Bootstrap. Если вы хотите как-то изменить стандартные настройки Bootstrap, лучший способ сделать это — изменить этот файл.
index.scss — корневой файл всего проекта. Из него можно вызывать другие файлы, отличные от файлов темы, например, файлы сторонних плагинов. Корневой файл темы добавляется именно сюда.
Папка handlebars (шаблоны Handlebars)

helpers — хэлперы Handlebars. Представляют из себя короткие скрипты, вызываемые напрямую из шаблонизатора.
layouts — глобальные файлы шаблонов. Мы будем работать только с одним шаблоном: default.hbs, он содержится в папке по умолчанию и представляет из себя готовую HTML-страницу с доктайпом, грамотно заполненным тегом head , подключенными стилями и скриптами. Изменяется лишь содержимое тега body : при шаблонизации в него подставляется содержимое .hbs-файлов, находящихся в папке src, при этом каждый файл превращается в отдельную HTML-страницу. Тег head этих страниц, как и ожидается, полностью идентичен, отличается лишь title и содержимое тега body .
partials — файлы разметки переиспользуемых компонентов. При создании компонентов, разметка компонента создается именно в этой папке, в соответствующем файле Handlebars, наряду с соответствующим файлом стилей, создаваемым в папке assets/scss/(название темы).
results matching » «
No results matching » «
Папка assets что это
Специальные Папки Проекта
You can usually choose any name you like for the folders you create to organise your Unity project. However, there are a number of folder names that Unity interprets as an instruction that the folder’s contents should be treated in a special way. For example, you must place Editor scripts in a folder called Editor for them to work correctly.
This page contains the full list of special folder names used by Unity.
Assets
Папка Assets — главная папка в которой содержатся все ассеты, которые могут быть использованы проектом на Unity. Содержимое Project view соответствует содержимому папки Assets. Большинство функций API предполагают что всё содержится в папке Assets и не требуют явного указания расположения. Однако есть некоторые функции которым нужно явно указывать папку Assets (напр. некоторые функции класса AssetDatabase).
Editor
Scripts placed in a folder called Editor are treated as Editor scripts rather than runtime scripts. These scripts add functionality to the Editor during development, and are not available in builds at runtime.
You can have multiple Editor folders placed anywhere inside the Assets folder. Place your Editor scripts inside an Editor folder or a subfolder within it.
The exact location of an Editor folder affects the time at which its scripts will be compiled relative to other scripts (see documentation on Special Folders and Script Compilation Order for a full description of this). Use the EditorGUIUtility.Load function in Editor scripts to load Assets from a Resources folder within an Editor folder. These Assets can only be loaded via Editor scripts, and are stripped from builds.
Note: Unity does not allow components derived from MonoBehaviour to be assigned to GameObjects if the scripts are in the Editor folder.
Editor Default Resources
Editor scripts can make use of Asset files loaded on-demand using the EditorGUIUtility.Load function. This function looks for the Asset files in a folder called Editor Default Resources.
You can only have one Editor Default Resources folder and it must be placed in the root of the Project; directly within the Assets folder. Place the needed Asset files in this Editor Default Resources folder or a subfolder within it. Always include the subfolder path in the path passed to the EditorGUIUtility.Load function if your Asset files are in subfolders.
Gizmos
Gizmos allow you to add graphics to the Scene View to help visualise design details that are otherwise invisible. The Gizmos.DrawIcon function places an icon in the Scene to act as a marker for a special object or position. You must place the image file used to draw this icon in a folder called Gizmos in order for it to be located by the DrawIcon function.
You can only have one Gizmos folder and it must be placed in the root of the Project; directly within the Assets folder. Place the needed Asset files in this Gizmos folder or a subfolder within it. Always include the subfolder path in the path passed to the Gizmos.DrawIcon function if your Asset files are in subfolders.
Resources
You can load Assets on-demand from a script instead of creating instances of Assets in a Scene for use in gameplay. You do this by placing the Assets in a folder called Resources. Load these Assets by using the Resources.Load function.
You can have multiple Resources folders placed anywhere inside the Assets folder. Place the needed Asset files in a Resources folder or a subfolder within it. Always include the subfolder path in the path passed to the Resources.Load function if your Asset files are in subfolders.
Note that if the Resources folder is an Editor subfolder, the Assets in it are loadable from Editor scripts but are stripped from builds.
StreamingAssets
Когда вы импортируете какой-либо стандартный пакет с ассетами (menu: Assets > Import Package) ассеты пакета размещаются в папке Standard Assets или Pro Standard Assets в случае если пакет доступен только для Про лицензии. Помимо того что папки содержат ассеты, они также влияют на порядок компиляции скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
You can only have one Standard Assets folder and it must be placed in the root of the Project; directly within the Assets folder. Place the needed Assets files in this Standard Assets folder or a subfolder within it.
StreamingAssets
You may want the Asset to be available as a separate file in its original format although it is more common to directly incorporate Assets into a build. For example, you need to access a video file from the filesystem rather than use it as a MovieTexture to play that video on iOS. Place a file in a folder called StreamingAssets, so it is copied unchanged to the target machine, where it is then available from a specific folder. See the page about Streaming Assets for further details.
You can only have one StreamingAssets folder and it must be placed in the root of the Project; directly within the Assets folder. Place the needed Assets files in this StreamingAssets folder or a subfolder within it. Always include the subfolder path in the path used to reference the streaming asset if your Asset files are in subfolders.
Assets
During the import process, Unity completely ignores the following files and folders in the Assets folder (or a sub-folder within it):
- Hidden folders.
- Files and folders which start with ‘.’.
- Files and folders which end with ‘~’.
- Files and folders named cvs.
- Files with the extension .tmp.
This is used to prevent importing special and temporary files created by the operating system or other applications.