Appcompat что это за папка
На данный момент в Android Studio создаются проекты на основе библиотеки AppCompat. Если у вас есть старые проекты, то следует мигрировать на новую библиотеку, чтобы использовать новые возможности, такие как ActionBar, материальный дизайн, Toolbar и т.д. для старых устройств.
Прежде всего добавьте зависимость в модуле проекта в файле build.gradle:
Библиотека уже содержит в себе зависимость от библиотеки support-v4, поэтому её прописывать не надо.
Используйте последнюю версию SDK:
В старых проектах вам нужно найти устаревшие или конкурирующие классы и темы, заменив их на нужные значения. В частности, класс Activity нужно заменить на AppCompatActivity:
В старых версиях студии использовались устаревшие шаблоны с использованием фрагментов. Например, использовался класс FragmentActivity. Находим и заменяем.
Компонент ActionBar также существует в двух вариантах. Находим и меням при необходимости.
Диалоговые окна AlertDialog могут поддерживать материальный дизайн. Нужно только выбрать правильный вариант.
В линейке Android 4.x использовалась тема Holo. Для перехода на материальный дизайн, замените android:Theme.Holo.Light на Theme.AppCompat:
В меню также произошли небольшие изменения. Вместо пространства имён android для некоторых свойств используется app:
Если в меню используется SearchView, то проследите за правильным импортом android.support.v7.widget.SearchView вместо android.widget.SearchView.
В коде используется MenuItemCompat:
Что нового
- Поддержка векторных изображений и векторной анимации в Android ниже 5.0
- Новый компонент материального дизайна Bottom Sheets
- Новая тема DayNight с возможностью переключения в дневной и ночной режим
- Support v4: MediaBrowserServiceCompat
- Новый метод автоматического измерения, позволяющий RecyclerView менять размер в зависимости от размера его содержимого
- Новые методы для пользовательских вкладок (Custom Tabs)
Что и зачем такое appcompat_v7 — как убрать ?
День добрый!
При создании проекта в Eclipse: Android Application Project создается еще один appcompat_v7 — раньше такова не было, и из-за него сам по себе проект не собирается.
Приключилась сия беда после обновлений SDK и модуля Eclipse.
А так-же при создании проекта, к MainActivity добавляется еще и Фрагмент — который мне нафиг не нужен.
Что такое Rest и зачем нужен
Ребят, объясните что такое rest и для чего нужно писать rest api. К примеру у меня есть приложение.
Тип void как возвращаемое значение функции: что он такое, зачем он нужен, где, когда и как его использовать?
Объясните пожалуйста про Void для оооочень далекого человека. Читаю книгу Шилдта, в принципе всё.
Что такое Imunify360, и как его убрать?
На сайте появилась постоянная капча и стали блокироваться некотрые IP. это не плагин и специально.
Вирус fon Что такое? Как убрать?
У меня ни с того, ни с чего в браузере стал постоянно открываться сайт fon.com, где мне предлагают.
Blank activity.
Так как Минимальный SDK стоит от API 8 , Master. попросту не дает создавать.
В принципе не важно как, но эта бяка появляется именно при создании Активити( даже если проект изначально без нее создать, то патом при создании — появляется)
в общем столкнулся с подобной ситуацией, пару дней назад перестали создаваться активности, обновился, началась подобная ерунда с двум layer и куча лишнего в MainActivity, лечение немного радикальное, но мне помогло:
1-й вариант:
1. переставляешь android-sdk, обновляешь (только не обновляй android support libraries)
2. запускаешь эклипс, создаешь проект, если все правильно, он создаст обычный проект, НО, он может создать при этом пакет appcompat_v7, это как я понял, какая-то вспомогательная библиотека
3. лезешь в настройки проекта а там: android->убираешь библиотеку appcompat
4. собираешь проект, все работает
если не работает
2-й вариант:
1.переставляешь android-sdk
2. мой sdk был какой-то глючный и не желал обновляться через менеджер, я вручную заменял в нем файлы из архива adt-bundle-windows-x86-20131030 (выкачивал в Интернете, а затем копировал все в папку с sdk)
3. осторожно обновляемся, но не все сразу, а то опять поймаешь это обновление (грешу на support libraries)
4. все должно работает
Добавлено через 23 минуты
упс, ответил немного не по той теме, это поможет тем, у кого с недавнего времени при создании проекта начинается ерунда: создается дополнительный файл в папке layers, и винегрет в Активности
appcompat_v7 функция папки
Я создаю Android приложение с Eclipse, и Android SDK Tools версии 22.6.2.
Я не понимаю, как работать с фрагментами. Я извлекал макеты фрагментов по умолчанию, и теперь я создаю приложение с обычными файлами макет. В Eclipse, есть также папка по умолчанию называется appcompat_v7, который является новым для меня.
MainActivity теперь по умолчанию от типа ActionBarActivity:
Я изменил его типа активность после включения линии:
А потом я изменил тип на:
До сих пор все работает отлично.
Теперь, я не знаю, в чем причина, чтобы сохранить appcompat_v7 папки. Если удалить или переименовать его, много ошибок появляются на моем приложении.
Просим Вас сообщить мне о функции этой папке.
appcompat_v7 используется для поддержки ActionBarActivity и другие функции ActionBar.
В последние инструменты обновления SDK, при создании нового проекта по умолчанию appcompat_v7 добавляется в качестве ссылки в вашем проекте.
Если вы удалите этот проект библиотеки из затмения, то, конечно, он будет показывать ошибку в приложении, как его ссылки на приложения.
Для того, чтобы удалить сообщение об ошибке вы должны следовать ниже приведенным шагам ..
Щелкните правой кнопкой мыши на вашем проекте >> свойства >> Android (список в левой панели) >> (см панель библиотек в правой нижней части окна. Вы увидите appcompat_v7 в списке есть) выбрать, что из списка >> нажмите на кнопку Удалить на право >> Применить >> OK
Это удалит appcompat_v7 из ссылочных библиотек вашего приложения и устранение ошибок тоже.
Выполните следующие действия, это работает для меня ..
Щелкните правой кнопкой мыши на вашем проекте -> Свойства -> Android -> В библиотеке панели, удалить appcompat_v7 библиотеку, Применить и ОК
В Project GOTO Рез -> значения -> style.xml
В линии изменения родительского значения от Theme.AppCompat.Light до android:Theme.Light
В Project GOTO Рез -> значения-v11 -> style.xml
В линии изменения родительского значения от Theme.AppCompat.Light до android:Theme.Holo.Light
В Project GOTO Рез -> значения-V14 -> style.xml
В линии изменения родительского значения от Theme.AppCompat.Light.DarkActionBar до android:Theme.Holo.Light.DarkActionBar
В меню Гота Project -> main.xml удалить эти строки в меню тега:
и в пункте теге изменить эту линию от app_showAsAction=»never» до android_showAsAction=»never»
Функция папки appcompat_v7
Я создаю приложение для Android с Eclipse и Android SDK 22.6.2.
Я не понимаю, как работать с фрагментами. Я удалил макеты фрагментов по умолчанию, и теперь я создаю приложение с обычными файлами макета. На Eclipse есть также папка по умолчанию, называемая appcompat_v7, которая является новой для меня.
Теперь MainActivity по умолчанию имеет тип ActionBarActivity:
Я изменил его на тип активности после включения строки:
И затем я изменил тип на:
Пока все работает нормально.
Теперь я не знаю, в чем причина сохранения папки appcompat_v7. Если я удалю или переименую его, в моем приложении появится много ошибок.
Прошу сообщить мне о функции этой папки.
Делайте так, это работает для меня..
Щелкните правой кнопкой мыши на своем проекте → Свойства → Android → В панели «Библиотека», удалите библиотеку appcompat_v7, «Применить» и «ОК».
В Project goto res → values → style.xml
В строке изменить родительское значение из Theme.AppCompat.Light для android:Theme.Light
В Project goto res → values-v11 → style.xml
В строке изменить родительское значение из Theme.AppCompat.Light для android:Theme.Holo.Light
В Project goto res → values-v14 → style.xml
В строке изменить родительское значение из Theme.AppCompat.Light.DarkActionBar для android:Theme.Holo.Light.DarkActionBar
В меню Project goto → main.xml удалите эти строки в теге меню:
и в теге item измените эту строку из app_showAsAction=»never» для android_showAsAction=»never»
В проекте, goto res → layout → delete fragment.xml
В MainActivity extends Activity not ActionBarActivity и, наконец, ваш MainActivity.java после удаления ненужного кода выглядит следующим образом:
Наслаждаться:)
appcompat_v7 используется для поддержки ActionBarActivity и других функций ActionBar.
В последних версиях инструментов SDK при создании нового проекта по умолчанию appcompat_v7 добавляется в качестве ссылки в вашем проекте.
Если вы удалите этот проект библиотеки из eclipse, то, несомненно, он покажет ошибку в вашем приложении в качестве ссылки на ваше приложение.
Чтобы удалить ошибку, вам нужно будет следовать нижеприведенным шагам.
Щелкните правой кнопкой мыши по вашему проекту >> свойства >> Android (см. Список на левой панели) >> (см. Панель библиотеки в правой нижней части окна. Вы увидите appcompat_v7 в списке) выберите, что из списка >> нажмите кнопку удаления справа >> Применить >> OK
Это приведет к удалению appcompat_v7 из библиотек ссылок вашего приложения и удалит ошибки.
Appdata — что это за папка и что в ней хранится
Неопытным пользователям крайне не рекомендуется что-то удалять из системных папок Windows, потому что там хранятся важные файлы. Application data – специальный раздел, который скрыт от владельца ПК, но часть данных в нем только занимают место и не несут важной функции, поэтому необходимо знать, как получить доступ в эту директорию и почистить ее от «мусора». Ниже описаны способы анализа этой папки, что можно удалить и как это сделать.
Что хранится в папке Appdata
Директория Application Data по умолчанию недоступна для просмотра, относится к группе системных, содержится в подкаталогах с названием User. Скрытая папка Appdata содержит личные данные всех пользователей, которые зарегистрированы на этом компьютере. В ней хранится документация, созданная программным обеспечением с ПК, разработчики сделали ее скрытой. ЕЕ файлы не должны представлять интерес для рядового пользователя. Так, по крайней мере, рассуждают создатели Windows.
В реальности же практика использования системы показывает, что со временем скапливается большое количество данных и они занимают место на жестком диске. Это особенно ощутимо, если используется SSD-накопитель, который не имеет большого объема памяти. При этом часть файлов не будут использоваться совсем. Хранятся данные в следующих папках:
Для чего нужна
Windows записывает в AppData файлы программ, которые установлены на компьютере: кэш, конфигурационные документы, временные файлы, логи приложений, сохраненные сеансы и т.д. Программное обеспечение со своего компьютера имеет личную папку для хранения данных, это касается и антивируса, и принтера, и игр. К примеру, браузеры сохраняют в AppData данные профилей, в которые входят куки, кэш, расширения, историю просмотренных интернет-страниц.
Как найти Appdata на Windows
Папка по умолчанию скрыта от пользователя (даже с правами администратора), сделано это с учетом того, что обычному юзеру что-то удалять из этой директории не нужно. Некоторые программы не поддерживают функцию импорта и экспорта настроек, проектов и прочих параметров, если переустановить заново Windows. Если же скопировать эту папку и после переустановки операционной системы скопировать ее, то программы проще привести к прежнему состоянию. Для этого нужно знать, как найти AppData. Сделать это можно двумя путями:
- при помощи командной строки;
- изменить отображение содержимого и сделать видимыми скрытые директории.
Расположение в системе
Существует путь через директории, который приведет к AppData. Для этого вам нужно сделать следующее:
- Откройте «Мой компьютер».
- Зайдите на диск С.
- Найдите директорию «Пользователи» или «Users».
- Кликните на соответствующее имя пользователя.
- Здесь и находится заветная папочка.
Существует еще один способ, который поможет быстро переместиться в директорию даже без необходимости делать ее видимой. Можно воспользоваться следующей инструкцией:
- Кликните по пункту быстрого доступа «Пуск».
- Найдите функцию «Выполнить».
- Напишите в строку следующую команду %appdata%.
- Кликните Ок – и вы попадете в подкатегорию Roaming. Просто поднимитесь на один уровень выше – и окажетесь внутри AppData.
Как сделать скрытую папку видимой
Добраться по стандартному пути к директории AppData получится, если включить отображение невидимых каталогов. Это системная настройка, которая легко меняется в Виндовс 10 по следующему алгоритму:
- Откройте любую папку в проводнике.
- Найдите вкладку «Вид» в верхнем меню.
- В дополнительном меню справа будет раздел с названием «Параметры».
- Кликните по нему и нажмите на «Изменить параметры папок и поиска».
- Откроется дополнительное окно, перейдите на вкладку «Вид».
- Пролистайте список вниз, здесь нужно активировать опцию «Показывать скрытые файлы, папки и диски».
Если установлена другая версия операционной системы (7 или 8), то изменить настройки можно по следующему алгоритму:
- Откройте «Панель управления».
- Перейдите в меню «Оформление и персонализация».
- Кликните по надписи «Параметры папок».
- Здесь нажмите по вкладке «Вид».
- Пролистайте список параметров вниз и установите галочку напротив «Показывать скрытые файлы, папки и диски».
Структура системной папки
При работе с AppData необходимо учитывать, что у каждого пользователя, который завел учетную запись на компьютере, отдельная папка. Внесение изменений у пользователя А не распространяется на пользователя Б. При переходе в директорию вы увидите три папки, о которых говорилось ранее:
Каталог Local
Это первая директория, которая находится в AppData. В ней хранятся файлы и данные, относящиеся к локальному типу, их нельзя скопировать или перенести вместе с профилем пользователя. К примеру, тут можно найти загруженные файлы, которым не было указано конкретное место или сохраненные игры. Как правило, она имеет самый большой объем занимаемого места на винчестере.
Тут же хранится каталог под название Microsoft, который сохраняет всю активность операционной системы Windows. Local содержит каталог с временными файлами необходимые для ускорения загрузки программ, игр, созданные во время работы с ними. Называется папка «Temp». Содержимое директории постоянно растет и со временем начинает занимать много места. Это один из вариантов информации, которую можно безболезненно для операционной системы удалить.
Папка Roaming
Файлы из этой папки при необходимости человек может без проблем перенести, если появилась такая необходимость. К примеру, вы решили переустановить операционную систему. Скопируйте данные на съемный носитель, а после инсталляции просто скопируйте Roaming на место. Это поможет сохранить персональные настройки в первоначальном виде. Тут же хранится информация из интернет-проводников, закладок, сохраненные человеком.
Каталог LocalLow
Этот каталог похож на Local, но собирается в него информация из браузера или системы, когда пользователь работает в защищенном режиме. Директория не синхронизируется с другими учетными записями на компьютере.
Сканирование структуры с помощью WinDirStat
Это бесплатная программа, которая используется для анализа, просмотра актуальной статистики касательно состояния дискового пространства (винчестера), сколько занимают места файлы или папки. Инструмент WinDirStat проверят и AppData, при желании можно с ее помощью очистить от ненужных директорий, папок и файлов жесткий диск. Программа выдает подробный график и сведения о том, где, какие документы на вашем винчестере занимают место.
Что делать если папка Appdata занимает много места
Со временем информация накапливается, особенно если после последней переустановки Windows прошло много времени. Система не рассчитана на автоматическую очистку AppData, поэтому пользователь может вручную уменьшить ее объем. Первый вариант – очистка от временных файлов. При желании можно полностью удалить все содержимое каталога «Temp», в котором нет важных системных данных. В очистке могут помочь и специализированные программы, к примеру, Ccleaner.
Необязательно очищать AppData, ее можно просто переместить с системного диска, на котором всегда должен быть запас свободного места. Это особенно актуально, если вы пользуетесь SSD-диском. Используйте для этих целей следующую инструкцию:
- На другом диске создайте папку с таким же названием (на D), создайте соответствующие подпапки (LocalLow, Roaming, Local). По отдельности перенесите содержимое в соответствующие директории.
- Если появляется сообщение, что скопировать файл не получается, то просто пропускайте его. Это говорит о том, что приложение в данный момент запущено и использует этот документ.
- Запустите функцию «Выполнить» при помощи сочетания кнопок Win+R. Наберите в строке без кавычек «regedit».
- Откроется окно редактора реестра. Необходимо найти раздел под название «HKEY_CURRENT_USER», раскройте его и перейдите в «Software», затем в «Microsoft». Далее кликните по директории «Windows», затем по «CurrentVersion», зайдите в «Explorer». Здесь вам понадобится категория «Shell Folders».
- Найдите через поиск все строчки, которые содержат «AppData», измените изначальный адрес на D:/AppData.
- Перезагрузите компьютер.
Можно ли удалить полностью
Если вы выполнили инструкцию, которая описана выше (сменили расположение AppData), то с диска С ее нужно удалить. В остальных случаях стереть ее полностью не получится и не следует. Она хранит данные о программах, с которыми вы работаете, что будет конфликтовать при попытке их удалить. Если стереть папку полностью, то Windows будет продолжать работать, критических ошибок не будет, но приложения и программы либо запустятся со стандартными настройками, либо не запустятся совсем.
Как почистить Appdata
Допускается частичное удаление некоторых директорий, но система не всегда разрешает провести операцию. Связано это с тем, что приложение в данный момент запущено в активном или фоновом режиме. Как правило, запущен процесс Updater, который проверят наличие обновлений для конкретного приложения, подгружает его и инсталлирует. Чтобы удалить необходимый файл нужно:
- Нажмите сочетание клавиш Ctrl+Alt+Del (win 10 поддерживает комбинацию Ctrl+Shift+Esc).
- Запустите диспетчер задач и откройте вкладку «Процессы».
- Найдите по названию процесс, совпадающий с именем файла.
- Правой кнопкой кликните по строчке и выберите пункт «Завершить процесс».
- После этого вы сможете удалить папку из Appdata.
Встроенная утилита очистки диска Windows 10
Чтобы не менять настройки системы, не искать функцию показа скрытых директорий, воспользуйтесь стандартным инструментом операционной системы. Windows 10 может самостоятельно очистить временные документы из папки «Temp». Для этого вам нужно воспользоваться следующей инструкцией:
- Кликните правой кнопкой по меню «Пуск».
- Нажмите на строчку «Система».
- Слева нажмите на строчку под названием «Хранилище».
- Справа появится список разделов на вашем жестком (-их) диске (-ах). Нажмите на ярлык тома С.
- Система проведет анализ, покажет, сколько места занято разными приложениями. Найдите строчку с названием «Временные файлы», нажмите на нее.
- Откроется новое диалоговое окно с перечнем типов документов из этой директории.
- Установите необходимые галочки и кликните кнопку «Удалить файлы».
Удаление временных файлов с расширением TEMP вручную
Мусорные данные от софта накапливаются и «раздувают» объем AppData. Периодически рекомендуется проводить очистку этого каталога, чтобы увеличить размер свободного места на системном диске. Чтобы добраться до Temp, необязательно делать видимой AppData, можно воспользоваться специальными командами через строку браузера. Выполнить действие можно следующим образом:
- Запустите интернет-проводник и напишите в адресной строке «shell:history» (без кавычек). Вас перенаправит сразу же в папку с историей браузера Internet Explorer (он же Edge в 10-й версии Виндовс).
- Команда «shell:cache» откроет каталог с офлайн буфером обмена интернет-проводника.
- Команда «shell:cookies» открывает данные файлов «Куки» (Ckookie).
- Если написать «shell:sendto», появится возможность добавлять, удалять ярлыки из меню «Отправить».
С помощью CCleaner
Выполнение удаления элементов из Appdata, чтобы повысить производительность компьютера, можно сделать при помощи специального софта. Программа CCleaner помогает деинсталлировать приложения, чистит реестр от поврежденных и устаревших файлов, помогает освободить место на диске С. Это избавит от необходимости вручную проверять содержание директории. Для проведения процедуры необходимо:
- Скачать программу CCleaner. Распространяется она на бесплатной основе, поэтому никаких СМС для подтверждения загрузки отправлять не нужно.
- Запустите утилиту, дайте ей время просканировать систему.
- Зайдите в раздел «Очистка», где будут отображаться директории для анализа.
- Программа проверит, какие файлы можно убрать, чтобы не навредить Windows. Для этого нажмите на кнопку «Анализ».
- Появится информация, сколько мегабайт занимает та или иная папка.
- Вы можете провести выборочную очистку, установив флажки напротив интересующих документов.
- Программе понадобится немного времени на устранение «мусора» с системного диска, после чего можно выйти.
Нашли в тексте ошибку? Выделите её, нажмите Ctrl + Enter и мы всё исправим!
AppCompat
Словечко «AppCompat», появившееся в моем лексиконе за время работы над Wow64, обозначает множество вещей. Чаще всего — геморрой. Иногда — великий геморрой. Происходит оно от «application compatibility» — т.е. совместимость OS с приложениями, она же — «обратная совместимость».
Почему геморрой? Да потому, что эта совместимость, — она только для пользователей операционной системы полезна. Для разработчика OS эта совместимость хуже вреда. Скажем, исправляете вы ошибку в обработке некорректных параметров той или иной функции Win32. Как вы думаете, что случится после того, как исправление пройдёт все тесты и будет послано в репозиторий кода? Через пару недель-месяцев с вероятностью сильно отличной от нуля вы получите письмо от Gov Maharaj, что это исправление ломает то или иное приложение. Или хуже – ломает некую библиотеку, которой пользуется множество приложений. Да, это приложение сует непонятно что в параметры этой функции. Да, оно никогда не должно было работать. Но работало – значит будь добр, исправь. Бывает, конечно, и наоборот, OS делает непонятно что, и приложения работали просто чудом.
Я тут собрал небольшую коллекцию багов, найденных примерно вышеописанным образом в процессе работы над Windows 7:
Некий софт вызывал функцию RegEnableReflectionKey в ситуации, когда она не делала ничего, просто возвращая ERROR_SUCCESS. Собственно говоря, она и не могла ничего сделать, даже если бы попыталась. Софт, тем не менее, тщательно проверял код возврата и отказывался работать в случае, если функция возвращала ошибку.
Некий антивирус поломался, когда в один прекрасный момент изменился регистр букв в имени ключа «HKEY_LOCAL_MACHINE\Software\Wow6432Node». Пришлось вернуть прежнее начертание.
Оригинальная версия механизма Registry Value Redirection (замена «%ProgramFiles%» на «%ProgramFiles(x86)%») использовала чувствительное к регистру сравнение строк. Когда это было замечено и исправлено выяснилось, что несколько разных приложений используют строки другого регистра и, тем самым, обходят перенаправление. И как только перенаправление заработало «как положено» все очень сильно поломалось.
Некий софт указывал оба флага KEY_WOW64_32KEY и KEY_WOW64_64KEY при вызове RegCreateKeyEx. Зачем и почему – не понятно. Но программа очень обиделась, когда функция начала возвращать ошибку. К счастью, в этом случае было проще исправить само приложение.
В один не столь прекрасный момент, выяснилось, что функции RegCeateKeyEx и RegOpenKeyEx по разному реагируют на ведущий слеш в имени ключа. В зависимости от версии OS, разрядности приложения, комбинации флагов KEY_WOW64_XXX и ветки реестра, где создавался ключ, можно было получить разный результат. К сожалению, к моменту, когда это было обнаружено, было уже поздно что-либо менять в коде реестра.
Обнаружилось, что создатели некоторых программ изобретательно подошли к регистрации COM объектов в реестре во время инсталляции. COM объекты регистрируются в «HKEY_CLASSES_ROOT\CLSID». Этот ключ «перенаправляется» в Wow64, т.е. существуют две версии этого ключа 32-х и 64-х разрядная, которые синхронизируются между собой с помощью механизма Registry Reflection. Так вот, содержимое некоторых из ключей создавалось по кусочкам, скажем «LocalServer32» брался из .msi и клался в 32-х битный ключ, а «ProgID» дописывался позднее из Custom Action в 64-х разрядный ключ. Это худо-бедно работало, пока из Windows 7 с корнем не выкорчевали Registry Reflection.
Однажды мне пришел баг, который был вызван тем, что строка, передаваемая в другой компонент Windows в формате UNICODE_STRING, не завершалась нулем. Но позвольте, заметил я, UNICODE_STRING и не должен завершаться нулем! Но ведь раньше этот конкретный UNICODE_STRING завершался нулем, резонно возразили владельцы компонента. Пришлось вернуть ноль на место.
Самое неприятное свойство подобных ошибок заключается в том, что исправлять приходится как раз «правильный» код. «Неправильный» код либо невозможно исправить (код уже выпущен, приложение не наше, разумного способа обновить инсталляции на дисках пользователей нет), либо сложнее исправить (например, этот код имеет гораздо больше зависимостей, которые нельзя протестировать в разумные сроки).
AppCompat; что это за папка? (windows 7)
Внутри как видите есть еще папки, например в appraiser и правда что-то есть связанное с телеметрией:
Вот например здесь хранятся какие-то логи:
На одном сайте написано что в папке AppCompat хранятся данные совместимости операционки с приложениями.
Служба Windows Error Reporting
Служба Windows Error Reporting представляет собой отдельный сервис Windows, который можно легко отключить командой:
net stop WerSvc
Внутри каталога WERReportQueue содержится множество каталогов, с именами в формате:
- Critical_6.3.9600.18384_ _00000000_cab_3222bf78
- Critical_powershell.exe_ _cab_271e13c0
- Critical_sqlservr.exe__ _cab_b3a19651
- NonCritical_7.9.9600.18235__ _0bfcb07a
- AppCrash_cmd.exe_ _bda769bf_37d3b403
Как вы видите, имя каталога содержит степень критичности события и имя конкретного exe файла, который завершился аварийно. Во всех каталогах обязательно имеется файл Report.wer, который содержит описание ошибок и несколько файлов с дополнительной информацией.
Скачивание png иконки
Давайте вначале скачаем иконку поиска, которая будет отображаться в menu . Как правило, для создания приложения достаточно пользоваться ресурсами, которые уже для разработчиков подготовил Google. Например, такая ситуация с иконками, которые рекомендует использовать Google. Их можно найти на этом сайте. В данном случае нам необходима иконка поиска, поэтому попробуем её найти, введя в поле поиска search :
Нашли подходящую иконку, выбрали в выпадающем списке тип Android и цвет, а теперь можем скачать .png -файлы. В первую очередь извлекаем архив для удобной работы с файлами. После извлечения архива видим, что в папке res содержится иконка промасштабированная для различных разрешений экранов, поэтому в зависимости от разрешения экрана устройство самостоятельно будет использовать наиболее подходящий ресурс для отображения.
Наша задача – обеспечить приложение иконками для разных разрешений. Подробнее об этом можно почитать в официальной документации.
Таким образом выделяем все папки внутри res ( drawable-hdpi , drawable-xhdpi и т.д.), копируем их, потом заходим в проект и вставляем их в папку res нашего приложения. После добавления иконок структура проекта выглядит так:
Т.е. мы скопировали несколько иконок для разных размеров экранов.
Если поменяем тип отображения файлов с Android на Project , то увидим, что физически создалось несколько папок, в каждой из которых лежит png для разного разрешения экрана.
BAZEL
Bazel изобрели инженеры в недрах Google для сборки своих проектов и относительно недавно перевели его в open source. Для описания билд-конфигов используется питоноподобный Skylark или Starlark, оба названия имеют место быть. Собирается с использованием своего же последнего стабильного релиза.
- поддержка разных языков программирования. Если верить документации, то он умеет собирать проекты для iOs, Android или даже бэкенда;
- умеет кешировать ранее собранные артефакты;
- умеет работать с Maven-зависимостями;
- у Bazel очень крутая, на мой взгляд, поддержка распределённых проектов. Ему можно в качестве зависимостей указывать конкретные ревизии git-репозиториев, и он будет сам их выгружать и кешировать в процессе сборки. Для поддержки масштабируемости Bazel умеет, например, распределять различные таргеты по облачным билдсерверам, что позволяет очень быстро собирать громоздкие проекты.
- всю эту прелесть весьма тяжело поддерживать, потому что билд-конфиги очень подробные и описывают сборку на низком уровне;
- помимо прочего, кажется, что Bazel сейчас активно развивается. Из-за этого некоторые примеры не собираются, а те, что собираются, могут использовать уже устаревший функционал, который помечен как deprecated;
- документация сейчас также оставляет желать лучшего, особенно в сравнении с Gradle;
- на маленьких проектах прогрев и анализ билд-конфигов может занимать больше времени, чем сама сборка, что не есть хорошо, на мой взгляд.
Концептуально базовый конфиг Bazel состоит из WORKSPACE, где мы описываем всякие глобальные вещи для проекта, и BUILD, который содержит непосредственно таргеты для сборки.
Опишем WORKSPACE. Так как у нас Android-проект, то первое, что мы конфигурируем, — это Android SDK. Также тут импортируется правило для выгрузки конфигов. Потом, так как проект написан на Kotlin, мы должны указать правила для него. Тут мы делаем это, ссылаясь на конкретную ревизию прямо из git-репозитория.
Теперь приступим к BUILD.
Сперва импортируем правило для сборки Kotlin и описываем то, что хотим собрать. В нашем случае это Android-приложение, поэтому используем android_binary, где задаём манифест, минимальный SDK и т.д. Наше приложение будет зависеть от исходников, поэтому упоминаем их в deps и переходим к тому, что они собой представляют и где их найти. Код также будет зависеть от ресурсов и библиотеки appcompat. Для ресурсов используем обычный таргет для сборки андроидных исходников, но задаём ему только ресурсы без java-классов. И описываем пару правил, которые импортируют сторонние библиотеки. Тут также упоминается appcompat_core, от которой зависит appcompat.
По цифрам для такого маленького проекта всё выглядит печально. Больше половины минуты на чистую сборку Hello, world! — очень много. Время инкрементальной сборки также далеко от совершенства.
Bazel используют его создатели (Google) для каких-то своих проектов, в том числе серверных, а также Dropbox и Huawei, которые собирают им мобильные приложения. И небезызвестный Dagger 2 также собирается Bazel.
Его придумали перебежчики из Google в Facebook. Для описания конфигов раньше он использовал Python, а потом мигрировал на упоминавшийся сегодня Skylark. Собирается же он, внезапно, с помощью системы Ant.
- поддерживает разные языки программирования и умеет собирать как Andriod, так и iOS;
- умеет кешировать ранее собранные артефакты;
- для Buck сделали свою реализацию dex, которая работает пошустрее стандартной и висит вместе с демоном системы. Так они экономят время на инициализации dex. Инженеры действительно многое оптимизировали. Например, Buck не собирает код, который зависит от библиотеки, если при изменении внутренностей библиотеки не изменился интерфейс. Аналогично и для ресурсов: если идентификаторы не поменялись, то при изменении ресурсов код не пересобирается.
- есть плагин, который умеет прятать Buck за гредловским конфигом. Т.е. вы получаете примерно обычный Gradle-проект, который на самом деле собирается через Buck.
- его так же сложно поддерживать, как Bazel. Т.е. тут так же надо описывать низкоуровневые правила, четко описывающие процесс сборки;
- кроме прочего, Buck не умеет сам разрешать Maven-зависимости.
Итак, как выглядит конфиг сборки Hello, world! посредством Buck? Тут мы описываем один файл конфигурации, где указываем, что хотим собирать Android-проект, который будет подписан дебажным ключом. Приложение аналогичным образом будет зависеть от исходников — lib в массиве deps. Дальше идёт таргет с настройками подписи. Я использую дебажный ключ, который идёт в комплекте с Android SDK. Сразу за ним следует таргет, который соберёт нам исходники Kotlin. Аналогично Bazel, он зависит от ресурсов и библиотек совместимости.
Описываем их. Для ресурсов в Buck есть отдельный таргет, поэтому велосипеды не пригодятся. Следом идут правила для скачанных сторонних библиотек.
Собирается всё это дело очень резво. Чистая сборка занимает немногим более 7 секунд, тогда как инкрементальная — совершенно незаметные 200 миллисекунд. Я думаю, это очень хороший результат.
Так делают в Facebook. Кроме своего флагманского приложения, они собирают им Facebook Messenger. И Uber, которые сделали плагин для Gradle и Airbnb с Lyft.
Вопросы и ответы
Первый день обсуждения очертил круг вопросов. Ответы на большинство из них можно узнать, изучив предыдущие статьи о папке WinSxS, на которые я активно ссылался. Но материал требует внимания и определенного уровня технической подготовки. Поэтому я постараюсь максимально просто разобрать их здесь.
Не удается скачать обновление KB2852386. Что делать?
Качать с помощью Windows Update, как я сразу советую в статье. Обновление будет в списке рекомендуемых.
Если вы пытаетесь скачать в браузере и получаете ошибку «Эта версия средства проверки Windows Geniune Advantage более не поддерживается…», убедитесь что:
- Для закачки используется Internet Explorer
- В Internet Explorer разрешена установка дополнений / элементов ActiveX
При соблюдении этих двух условий средство проверки подлинности не скачивается на ПК, а устанавливается в качестве надстройки браузера и выполняет валидацию.
Это — все официальные способы получения обновления, и другие здесь рассматриваться и обсуждаться не будут.
Удалится ли папка WinSxS после очистки?
Нет, но число подпапок и файлов в ней уменьшится, а следовательно и ее объем.
Что конкретно удаляется?
Неиспользуемые файлы обновлений. Эти файлы не участвуют в работе системы, потому что вместо них уже используются файлы из более свежих обновлений.
Сколько места освободится? Почему у других удалилось 6GB, а у меня ничего.
Объем удаленных файлов зависит от сочетания трех факторов:
- Дата установки SP 1 или Windows 7 с SP1, от которого в любом случае ведется учет установленных обновлений. Чем дольше установлена система, тем больше количество и объем предыдущих версий файлов в WinSxS.
- Частота обновления компонента. Например, волны ошибки 0xc0000005 связаны с тем, что файлы ядра обновлялись три месяца подряд. При этом после каждого обновления в WinSxS сохранялась предыдущие версии файлов.
- Регулярность установки обновлений. Продолжая пример, если автоматическое обновление только что включили после трехмесячного перерыва, в winsxs осядет только один набор файлов, а не три.
Я попробую объяснить на пальцах, максимально упростив технические подробности и сделав некоторые допущения. Представьте, что Microsoft выпускает раз в два месяца обновление файла asdf.dll. Рассмотрим трех пользователей:
- Михаил установил Windows 7 с SP1 (сразу после его выхода) в феврале 2011 года и включил автоматическую установку обновлений. К октябрю 2013 года вышло 15 обновлений, заменяющих файл asdf.dll. Очистка диска удалила 14 ненужных файлов и оставила один из предыдущего обновления, сохраняя возможность отката.
- Андрей установил в один день с Михаилом, но сразу отключил автоматическую установку обновлений. Он их ставил вручную, руководствуясь гороскопом, и к октябрю 2013 года сделал это лишь 4 раза. Очистка диска удалила 3 ненужных предыдущих версии файла.
- Алексей регулярно переустанавливает систему, и последний раз он это сделал в августе 2013 года. К октябрю того же года успело выйти только одно обновление для файла asdf.dll. Очистка диска не удалила ничего, потому что нет предыдущего обновления, к которому можно откатиться.
Все трое в один день выполнили оптимизацию папки WinSxS. Очевидно, у Михаила она была самой большой, а очистка позволила высвободить самый значительный объем дискового пространства.
Как определить, сжимаются ли файлы в папке WinSxS в процессе оптимизации
Судя по вопросам и некоторым скриншотам утилиты TreeSize, примеров анализа оказалось недостаточно. Все очень просто: в меню Scan – Select Directory и выберите C:WindowsWinSxS.
Папки со сжатыми файлами помечены синим. Пока что я не видел ни одного факта сжатия в Windows 7.
Почему не работает команда DISM /Online /Cleanup-Image /StartComponentCleanup?
Потому что она для Windows 8 и новее. В Windows 7 используйте очистку диска, следуя инструкциям этой статьи.
а) Навигационные жесты
В Android Q Google попытался объединить все жесты навигации с помощью новой навигационной системы жестов, которая заменила плавающую навигационную панель (назад, домой и последние приложения).
- На что влияет: если ваше приложение содержит жесты, то они могут конфликтовать с системными жестами. Это повлияет на все приложения, работающие на Android Q (независимо от целевого SDK), поскольку первыми будут обрабатываться системные жесты.
- Рекомендуемый подход: Поскольку плавающая панель навигации фактически исчезла, рекомендуется в полной мере использовать доступное новое экранное пространство и обеспечить пользователям эффект погружения.
Чтобы создать эффект погружения, приложения должны отображаться за строкой состояния и панелью навигации. Сначала сделаем строку состояния и панель навигации прозрачными.
Далее делаем так, чтобы Activity/View отображалось на весь экран:
FAB (Floating Action Button, плавающая кнопка действия) перекрывается плавающей панелью навигации. Плавающая панель навигации включена для наглядности.
Теперь, когда приложение отображается в полноэкранном режиме за (прозрачными) системными компонентами, возможно, что какой-то интерактивный компонент приложения перекрывается системным UI. Чтобы решить эту проблему, используйте Insets.
Insets — это набор значений, которые скажут нам, на сколько нужно переместить View, чтобы они не конфликтовали с системным UI. Эта информация предоставляется классом WindowInset. Начиная с API 20, Android предоставляет разработчикам System Window Insets (Insets системных окон), которые сообщают, сколько места занимают компоненты системы (такие как плавающая панель навигации и строка состояния). Эта информация может использоваться для перемещения интерактивных View, чтобы пользователь тапал по нему, а не по системному UI.
Для FAB задайте слушатель WindowsInsets и примените нижний inset окна в качестве нижнего отступа.
Точно так же, начиная с Android Q, система предоставляет insets навигационных жестов, чтобы перемещать свайпаемые views так, чтобы они не конфликтовали с жестами системы. Они предоставляются через Insets.getSystemGestureInsets()
Области системных жестов выделены желтым цветом.
Но что, если мы не хотим перемещать View и хотим разместить некоторый контент в тех зонах жестов, которые могут конфликтовать с приложением? В этих сценариях приложение может определять области, в которых приложение будет сначала обрабатывать событие касания, а не системные жесты. Это можно сделать, передав List Rect > в API View.setSystemGestureExclusionRects(), представленный в Android Q. Этот метод также доступен в ViewCompat с androidx.core:core:1.1.0 .
- Подводные камни: вы можете отказаться от обработки только жестов “назад”. Границы жеста “домой” зарезервированы и не могут быть переопределены. Это сделано потому, что есть только один способ выйти из приложения. Если ваше приложение конфликтует с жестом “домой”, используйте WindowInsets.getMandatorySystemGestureInsets() , чтобы получить его границы и сместить ваши View.
б) Темная тема
В течение последнего года мы видели, что многие приложения начали поддерживать темные темы. Android Q добавляет этот переключатель в настройки системы.
Пользователь может включить темную тему тремя способами:
- Новый пункт в настройках системы (Настройки -> Дисплей -> Тема)
- Новый пункт в Быстрых Настройках
- В зависимости от производителя, можно включить через режим энергосбережения.
Чтобы поддерживать общесистемную конфигурацию Dark Theme, тема вашего приложения по умолчанию должна наследоваться от темы DayNight. Это связывает основную тему приложения с флагами ночного режима, управляемыми системой. Это работает путем извлечения ресурсов из папок квалификатора night .
Если вы заглянете внутрь стилей App Compat, вы заметите, что тема DayNight указывает на AppCompat Light в конфигурации по умолчанию и на AppCompat в ночной конфигурации.
Если вы хотите предоставить пользователям возможность управления темой из приложения, вы можете вызвать AppCompatDelegate.setDefaultNightMode(), который принимает один из четырех режимов:
- MODE_NIGHT_YES — Показать темную тему
- MODE_NIGHT_NO — Показать светлую тему
- MODE_NIGHT_FOLLOW_SYSTEM — Следовать настройкам системы
- MODE_NIGHT_AUTO_BATTERY — Включать темную тему, когда устройство переходит в режим энергосбережения.
- Подводные камни:
а) Не хардкодьте цвета. Если в layout-файлах есть захардкоженные цвета, это тревожный звоночек. Замените их ссылками на color . Еще лучше: используйте атрибуты для ссылки на цвета.
b) Проверьте изображения и предоставить им альтернативные ресурсы в рамках классификатора night .
c) В векторных рисунках не должно быть захардкоженных цветов. Используйте tint для стилизации векторных ресурсов с правильным цветом.
d) Убедитесь, что все color ресурсы имеют соответствующие альтернативы в папке night ( values-night/colors.xml )
e) Если приложение использует RemoteViews для уведомлений или виджетов, не забудьте также протестировать их. Хорошо, если приложение использует стили уведомлений по умолчанию, так как тогда система будет их обрабатывать.
f) Изменение конфигурации для uiMode вызывается всякий раз, когда устройство переключается между обычным и темным режимом. Пользователь может сделать это вручную или активировать энергосберегающий режим. Если приложение не обрабатывает изменения конфигурации должным образом, UI теряет контекст, когда устройство переключается между обычным и темным режимами, поскольку видимые Activity и их фрагменты уничтожаются и создаются заново. Поэтому, даже если UI заблокирован в одной ориентации, добавьте поддержку изменения конфигурации. Кроме того, если приложение вручную управляет изменениями конфигурации через android:configChanges , есть большая вероятность, что вы захотите также вручную управлять uiMode . Например, если приложение использует непрерывное воспроизведение (видеопроигрыватель), оно может не захотеть прерывать воспроизведение только потому, что устройство переключилось между обычным и темным режимом.
В Android Q также было представлено множество других вещей, которые я не рассматривал в деталях, такие как Панель настроек, новый API AudioPlaybackCapture (API дает приложениям возможность копировать звук, воспроизводимый другими приложениями. Эта функция является аналогом захвата экрана, но для аудио).
Наконец, Android Q включает в себя обновленный список ограниченных интерфейсов, не относящихся к SDK, доступ к которым в конечном итоге может быть закрыт из Android SDK. Вы можете найти список своих нарушений в play console в разделе «Отчет о тестировании» (Pre Launch Report).
На этом все. Если вы чувствуете, что есть что-то важное, о чем не сказано в статье, дайте знать в комментариях ниже.
При использовании v7-appcompat в Eclipse вы должны использовать его в качестве проекта библиотеки. Недостаточно просто скопировать * .jar в папку /libs . Прочитайте это (щелкните) пошаговое руководство по сайту developer.android.com , чтобы узнать, как правильно импортировать проект.
Как только проект будет импортирован, вы поймете, что некоторые папки в папке /res подчеркнуты красным цветом из-за таких ошибок, как:
Решение
Единственное, что вам нужно сделать, это открыть файл project.properties android-support-v7-appcompat и изменить цель с target=android-19 на target=android-21 .
После этого просто выполните Project —> Clean. чтобы изменения вступили в силу.
AppCompat — попытка удалить
Учитывая, что информации о папке нет никакой, именно абсолютно, тогда я принимаю решение — провести эксперимент и отключить папку принудительно. Посмотрим что из этого выйдет!
Итак, что я сделаю:
- У меня установлена бесплатная утилита Unlocker, она нужна чтобы удалить или переименовать заблокированные папки. Например системные, которой и является AppCompat.
- Мне нужно переименовать, но так, чтобы осталось оригинальное название. В таких случаях я просто добавляю символ нижнего пробела.
- Далее делаем перезагрузку.
- Проверяем работу ПК — все ли программы работают стабильно, а также нет ли ошибок.
Я перешел в папку:
Нажал правой кнопкой по AppCompat, выбрал пункт Unlocker:
Появилось маленькое окошко, там в менюшке слева нужно выбрать пункт Переименовать:
Потом указать новое имя — добавляю просто символ нижнего пробела (по факту и так получается новое название):
Нажимаю ОК. Потом снова ОК. Как и следовало ожидать — переименовать нельзя, потому что папка какой-то прогой используется, поэтому переименование будет после перезагрузки:
Ну а теперь как раз пора сделать перезагрузку))
Итак, после перезагрузки я вижу что и правда все переименовалось:
Дальше я запустил Хром, Мозиллу.. Оперу, Яндекс Браузер — все работает, поиск Windows тоже работает. В принципе никаких ошибок нет, поэтому можно сделать вывод, что переименовывать — вроде можно. А значит можно и удалить, но советую не делать этого сразу, мало ли))
Можно сделать вывод, что способ рабочий — AppCompat можно переименовать, а значит даже удалить. Поэтому: очень важно перед всеми этими делами сделать контрольную точку восстановления:
- Зажмите Win + R, напишите команду control или control panel, нажмите ОК.
- Появится окно со значками. Проверьте что в правом верхнем углу в меню Просмотр установлено Крупные значки.
- Теперь найдите значок Система, запустите > выберите Защита системы.
- Выберите системный диск (Система) и нажмите кнопку Создать. Если кнопка неактивна — нажмите сначала Настроить и включите защиту системы.
- Точку восстановления советую назвать До переименования AppCompat (или до удаления). После создания точки — можно переименовывать папку или даже удалить)) Разумеется все эти дела нужно делать утилитой Unlocker.
Важное замечание: я не пользуюсь точками восстановления, но пробовал, лично у меня они почему-то со временем удаляются. Самостоятельно. Причины неизвестны. Возможно сейчас уже разработчики исправили. Но удаляются не сразу, а где-то через пару дней.
Отключение Window Error Reporting в Windows Server 2012 R2 / 2008 R2
Отключить запись информации об ошибках Windows Error Reporting в серверных редакция Windows можно следующим образом:
- Windows Server 2012 / R2 – Панель Управления -> System and Security -> Action Center -> раздел Maintenance -> Settings -> выберите опцию I don’t want to participate, and don’t ask me again
- Windows Server 2008 R2 – откройте консоль Server Manager и промотайте список, перейдя в раздел Resources and Support. Нажмите на Turn Off Windows Error Reporting и выберите пункт I don’t want to participate, and don’t ask me again.
AppCompat — что это за папка? (windows 7)
Приветствую друзья!
Сегодня будем разбираться с папкой AppCompat — моя задача выяснить для чего она, возможно ее вообще можно удалить? Обо всем разберемся))
AppCompat — что это такое?
В папке могут хранится данные телеметрии (которая выполняется вроде как через планировщик). Также может иметь отношение к совместимости операционки и приложений.
AppCompat расположена здесь:
Внутри как видите есть еще папки, например в appraiser и правда что-то есть связанное с телеметрией:
Вот например здесь хранятся какие-то логи:
На одном сайте написано что в папке AppCompat хранятся данные совместимости операционки с приложениями.
AppCompat — попытка удалить
Учитывая, что информации о папке нет никакой, именно абсолютно, тогда я принимаю решение — провести эксперимент и отключить папку принудительно. Посмотрим что из этого выйдет!
Итак, что я сделаю:
- У меня установлена бесплатная утилита Unlocker, она нужна чтобы удалить или переименовать заблокированные папки. Например системные, которой и является AppCompat.
- Мне нужно переименовать, но так, чтобы осталось оригинальное название. В таких случаях я просто добавляю символ нижнего пробела.
- Далее делаем перезагрузку.
- Проверяем работу ПК — все ли программы работают стабильно, а также нет ли ошибок.
Я перешел в папку:
Нажал правой кнопкой по AppCompat, выбрал пункт Unlocker:
Появилось маленькое окошко, там в менюшке слева нужно выбрать пункт Переименовать:
Потом указать новое имя — добавляю просто символ нижнего пробела (по факту и так получается новое название):
Нажимаю ОК. Потом снова ОК. Как и следовало ожидать — переименовать нельзя, потому что папка какой-то прогой используется, поэтому переименование будет после перезагрузки:
Ну а теперь как раз пора сделать перезагрузку))
Итак, после перезагрузки я вижу что и правда все переименовалось:
Дальше я запустил Хром, Мозиллу.. Оперу, Яндекс Браузер — все работает, поиск Windows тоже работает. В принципе никаких ошибок нет, поэтому можно сделать вывод, что переименовывать — вроде можно. А значит можно и удалить, но советую не делать этого сразу, мало ли))
Можно сделать вывод, что способ рабочий — AppCompat можно переименовать, а значит даже удалить. Поэтому: очень важно перед всеми этими делами сделать контрольную точку восстановления:
- Зажмите Win + R, напишите команду control или control panel, нажмите ОК.
- Появится окно со значками. Проверьте что в правом верхнем углу в меню Просмотр установлено Крупные значки.
- Теперь найдите значок Система, запустите > выберите Защита системы.
- Выберите системный диск (Система) и нажмите кнопку Создать. Если кнопка неактивна — нажмите сначала Настроить и включите защиту системы.
- Точку восстановления советую назвать До переименования AppCompat (или до удаления). После создания точки — можно переименовывать папку или даже удалить)) Разумеется все эти дела нужно делать утилитой Unlocker.
Важное замечание: я не пользуюсь точками восстановления, но пробовал, лично у меня они почему-то со временем удаляются. Самостоятельно. Причины неизвестны. Возможно сейчас уже разработчики исправили. Но удаляются не сразу, а где-то через пару дней.