Сегодня в выпуске: ответы Android engineering team на вопросы пользователей Reddit, запрет на доступ к сторонним приложениям в новых версиях Android, способ предотвратить клонирование приложения, множество советов, как писать чистый код на Kotlin, рассказ о функции with из уст разработчиков Koltin, польза и вред функций-расширений. А также: очередная порция библиотек и инструментов пентестера.
Android engineering team QA — ежегодная сессия вопросов и ответов команды разработчиков Android на Reddit. Как обычно, вопросы банальные, а ответы обтекаемые. Но есть несколько интересных моментов.
Package visibility in Android 11 — статья разработчиков Android о новом запрете Android 11, благодаря которому сторонние приложения больше не смогут получать информацию или запускать любое установленное на смартфон приложение.
Напомню, что до версии 11 Android предоставлял вполне официальный API для получения информации обо всех установленных на смартфон приложениях (имя, версия, время установки и так далее) и не налагал никаких запретов на запуск любых приложений. Этим пользовались не только сторонние менеджеры приложений, панели быстрого запуска и другой полезный софт, но и разного рода малварь и недобросовестные разработчики, сливающие информацию на третью сторону.
Начиная с Andoroid 11 система будет ограничивать доступный приложению список установленных приложений и обяжет разработчиков перечислять приложения, с которыми приложение автора хочет контактировать, в манифесте:
<manifest package="com.example.game"> <queries> <package android:name="com.example.store" /> <package android:name="com.example.service" /> </queries> ... </manifest>
Кроме самих приложений, также можно перечислить типы интентов, которые собирается использовать приложение (в следующем примере приложение заявляет о своем намерении делиться изображениями с другими приложениями):
<manifest package="com.example.game"> <queries> <intent> <action android:name="android.intent.action.SEND" /> <data android:mimeType="image/jpeg" /> </intent> </queries> ... </manifest>
Эти требования будут распространяться на все приложения, собранные для API 30 и выше (targetSdkVersion=30), и не коснутся уже существующих приложений, до тех пор пока в Google Play не будет введен минимальный уровень API 30.
Для лаунчеров и других приложений, которым необходим доступ ко всем установленным приложениям, предусмотрено новое разрешение QUERY_ALL_PACKAGES. Но для его использования придется проходить ручную премодерацию.
Write fluent code in Kotlin — статья с советами о том, как сделать код на Kotlin более понятным для чтения.
require(arg.length < 10) { "message" } val result = checkNotNull(bar(arg)) { "message" } /// вместо /// if (arg.length < 10) { throw IllegalArgumentException("message") } val result = bar(arg) ?: throw IllegalStateException("message")
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости