Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Проблема оверлеев (окон, которые приложения могут показывать поверх своего или любых других окон) в том, что они позволяют перекрыть окно другого приложения и передавать ему все нажатия, показывая на экране совершенно другую информацию. В итоге злоумышленник может создать оверлей, который будет призывать нажать безобидную кнопку, а в итоге нажатие будет передано находящемуся позади него окну, которое может активировать опасную функцию.
В разных версиях Android Google реализовала все новые методы защиты от оверлеев, включая невозможность контактировать с системными диалогами при наличии оверлеев, отзыв разрешения на показ оверлеев при первой возможности и так далее. В Android 12 появится еще один вид защиты: невозможность использовать оверлеи, которые пропускают нажатия. Другими словами, если приложение показывает непрозрачный оверлей, который передает нажатия находящемуся за ним окну (тип окна: TYPE_APPLICATION_OVERLAY с флагом FLAG_NOT_TOUCHABLE), то такое окно будет заблокировано.
В списке исключений:
CompileSdkVersion and targetSdkVersion — what is the difference? — статья об отличиях двух свойств Gradle, которые часто приводят к вопросам и недопониманию.
Действительно, как разработчики мы обычно обновляем значения compileSdkVersion
и targetSdkVersion
одновременно. Для нас такое обновление означает, что приложение теперь может использовать новые API, появившиеся в новой версии Android, и на приложения теперь накладываются новые ограничения, которые в этой версии Android появились.
Но зачем тогда существует два свойства, если даже IDE подсказывает, что при обновлении значения одного следует обновить и значение другого? Начнем с compileSdkVersion
. Задача этого свойства в том, чтобы указать, какая версия SDK будет использоваться при компиляции приложения. Если сильно упростить, то она нужна для того, чтобы приложение смогло найти новые API и вызвать их.
Задача свойства targetSdkVersion
другая. С его помощью разработчик как бы говорит «я протестировал свое приложение на этой версии Android, и оно готово к особенностям работы именно этой версии Android». Это важное свойство потому, что с развитием Android меняется не только API, но и поведение ОС в отношении приложений. Android может вести себя по‑разному в зависимости от того, для какой версии собрано приложение.
Например, в Android 12 изменился способ отображения уведомлений. Если в предыдущих версиях приложения могли использовать всю область уведомления, то теперь им доступен только ограниченный прямоугольник с отступами по краям. Для приложений, собранных с targetSdkVersion
или ниже (то есть для предыдущих версий Android), система будет включать режим совместимости, позволяя съедать всю область уведомления. Но для приложений с targetSdkVersion
будет доступна только часть области уведомления.
Вместе с новой версией ОС Google выпускает документ, в котором подробно расписывает, какие аспекты поведения ОС изменятся в зависимости или вне зависимости от значения targetSdkVersion
. По‑хорошему программист сначала должен ознакомиться с этим списком, исправить приложение так, чтобы оно учитывало изменения, затем изменить оба свойства на значение новой версии ОС.
При этом никто не запрещает изменять compileSdkVersion и targetSdkVersion раздельно, но практического смысла в этом мало, так как Google постоянно повышает минимальную версию targetSdkVersion
для принимаемых в Google Play приложений.
Kotlin Ktor Network Fetching on Android — статья об использовании библиотеки сетевых запросов Ktor для создания мультиплатформенного приложения вместо библиотеки OkHttp.
Ktor — это библиотека для разработки клиентских и серверных сетевых приложений, изначально спроектированная для работы в среде Kotlin вне зависимости от того, на какой платформе работает приложение: JVM, Android, iOS, браузер или десктоп.
Для начала Ktor следует подключить к проекту:
implementation "io.ktor:ktor-client-core:1.6.0"
implementation "io.ktor:ktor-client-cio:1.6.0"
|
|