Новости о продуктах

Четвертая бета-версия Android 17

4 минуты чтения
Daniel Galpin
Представитель разработчиков

Android 17 достиг четвертой бета-версии, последней запланированной бета-версии этого цикла релизов, что является критически важной вехой для совместимости приложений и стабильности платформы. Независимо от того, занимаетесь ли вы тонкой настройкой пользовательского интерфейса вашего приложения, обеспечением плавной отрисовки от края до края или использованием новейших API, четвертая бета-версия предоставляет практически финальную среду, необходимую для тестирования.

Подготовьте свои приложения, библиотеки, инструменты и игровые движки!

Если вы разрабатываете Android SDK, библиотеку, инструмент или игровой движок, крайне важно подготовить все необходимые обновления уже сейчас, чтобы предотвратить проблемы совместимости с разработчиками ваших приложений и игр и позволить им использовать новейшие функции SDK. Пожалуйста, сообщите разработчикам ваших приложений, если необходимы обновления для полной поддержки Android 17.

Android17_Timeline_01_V02.png

Тестирование включает в себя установку вашего рабочего приложения или тестового приложения, использующего вашу библиотеку или движок, через Google Play или другими способами, на устройство или эмулятор под управлением Android 17 Beta 4. Проработайте все сценарии работы вашего приложения и найдите функциональные проблемы или проблемы с пользовательским интерфейсом. Каждый релиз Android содержит изменения платформы, которые улучшают конфиденциальность, безопасность и общее взаимодействие с пользователем; проанализируйте изменения в поведении приложений, работающих на Android 17 и ориентированных на него , чтобы сосредоточить тестирование на следующих аспектах:

  • Изменение размера на больших экранах: начиная с Android 17, вы больше не сможете отказаться от сохранения ограничений по ориентации, изменению размера и соотношению сторон на больших экранах .
  • Динамическая загрузка кода: если ваше приложение ориентировано на Android 17 или выше, защита Safer Dynamic Code Loading (DCL) , представленная в Android 14 для файлов DEX и JAR, теперь распространяется и на нативные библиотеки. Все нативные файлы, загружаемые с помощью System.load(), должны быть помечены как доступные только для чтения. В противном случае система выдаст ошибку UnsatisfiedLinkError.
  • Включить прозрачность сертификатов (CT) по умолчанию: прозрачность сертификатов (CT) включена по умолчанию. (В Android 16 прозрачность сертификатов доступна, но приложениям приходилось включать её вручную .)
  • Защита локальной сети: В приложениях для Android 17 и выше доступ к локальной сети по умолчанию заблокирован . По возможности переключитесь на использование средств выбора, обеспечивающих конфиденциальность, и используйте новое разрешение ACCESS_LOCAL_NETWORK для широкого и постоянного доступа.
  • Усиление защиты от фонового воспроизведения звука: начиная с Android 17, аудиофреймворк вводит ограничения на фоновые взаимодействия со звуком, включая воспроизведение аудио, запросы на фокусировку на аудио и API изменения громкости . На основе ваших отзывов мы внесли некоторые изменения по сравнению с бета-версией 2, включая ограничение использования FGS во время работы targetSDK и исключение аудиосигналов будильника. Подробная информация доступна в обновленном руководстве .

Ограничения памяти приложения

В Android вводятся ограничения на использование памяти приложениями, основанные на общем объеме оперативной памяти устройства, чтобы создать более стабильную и предсказуемую среду для ваших приложений и пользователей Android. В Android 17 ограничения устанавливаются консервативно, чтобы установить базовые системные показатели, нацеленные на выявление экстремальных утечек памяти и других аномальных явлений до того, как они вызовут общесистемную нестабильность, приводящую к зависаниям пользовательского интерфейса, повышенному расходу заряда батареи и закрытию приложений. Хотя мы ожидаем минимального влияния на подавляющее большинство сеансов работы приложений, мы рекомендуем следующие лучшие практики использования памяти , включая установление базового уровня памяти.

В текущей реализации, если ваше приложение пострадало от ограничения памяти, в переменной `getDescription` в `ApplicationExitInfo` будет содержаться строка `"MemoryLimiter"`. Вы также можете использовать профилирование на основе триггеров с параметром `TRIGGER_TYPE_ANOMALY` для получения дампов памяти, которые собираются при достижении лимита памяти.

unnamed (2).png
Задача LeakCanary в профилировщике Android Studio

Чтобы помочь вам обнаружить утечки памяти, Android Studio Panda добавляет интеграцию с LeakCanary непосредственно в профилировщик Android Studio в виде отдельной задачи, контекстуализированной в рамках IDE и полностью интегрированной с вашим исходным кодом.

Меньший объем используемой памяти напрямую приводит к более плавной работе, увеличению времени автономной работы и превосходному пользовательскому опыту во всех форм-факторах. Давайте вместе построим более быстрое и надежное будущее для экосистемы Android!

Триггеры профилирования для выявления аномалий в приложениях

Android представляет встроенную службу обнаружения аномалий на устройстве, которая отслеживает ресурсоемкие процессы и потенциальные проблемы совместимости. Интегрированная с ProfilingManager , эта служба позволяет вашему приложению получать артефакты профилирования, запускаемые определенными событиями, обнаруженными системой.

Используйте триггер TRIGGER_TYPE_ANOMALY для обнаружения проблем с производительностью системы, таких как чрезмерное количество вызовов binder и чрезмерное использование памяти. Когда приложение превышает установленные ОС ограничения памяти, триггер anomaly позволяет разработчикам получать дампы кучи, специфичные для приложения, что помогает выявлять и устранять проблемы с памятью. Кроме того, при чрезмерном использовании binder триггер anomaly предоставляет профиль выборки стека для транзакций binder.

Этот API-вызов происходит до применения каких-либо системных мер. Например, он может помочь разработчикам собрать отладочные данные до того, как приложение будет завершено системой из-за превышения лимитов памяти. Чтобы понять, как использовать триггер, ознакомьтесь с нашей документацией по профилированию на основе триггеров .

    val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
    val triggers = ArrayList<ProfilingTrigger>()  
    triggers.add(ProfilingTrigger.Builder(
                 ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
    val mainExecutor: Executor = Executors.newSingleThreadExecutor()
    val resultCallback = Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
            // upload profile result to server for further analysis          
            setupProfileUploadWorker(profilingResult.resultFilePath)
        } 
    profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
    profilingManager.addProfilingTriggers(triggers)
}

Постквантовая криптография (PQC) в хранилище ключей Android

В Android Keystore добавлена ​​поддержка стандартизированного NIST алгоритма цифровой подписи ML-DSA (Module-Lattice-Based Digital Signature Algorithm). На поддерживаемых устройствах можно генерировать ключи ML-DSA и использовать их для создания квантово-безопасных подписей, полностью используя защищенное оборудование устройства. Android Keystore предоставляет доступ к вариантам алгоритмов ML-DSA-65 и ML-DSA-87 через стандартные API криптографической архитектуры Java: KeyPairGenerator , KeyFactory и Signature . Для получения дополнительной информации см. нашу документацию для разработчиков .

KeyPairGenerator generator = KeyPairGenerator.getInstance(
        ML-DSA-65, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                my-key-alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();

Начните работу с Android 17

Вы можете зарегистрировать любое поддерживаемое устройство Pixel , чтобы получать это и будущие обновления бета-версии Android по беспроводной сети. Если у вас нет устройства Pixel, вы можете использовать 64-битные образы системы с эмулятором Android в Android Studio.

Если вы в настоящее время участвуете в программе бета-тестирования Android, вам будет предложено обновление до бета-версии 4 по беспроводной сети.

Продолжайте сообщать о проблемах и отправлять запросы на добавление новых функций на странице обратной связи . Чем раньше мы получим ваши отзывы, тем больше мы сможем учесть в финальной версии.

Для наилучшего опыта разработки под Android 17 мы рекомендуем использовать последнюю предварительную версию Android Studio (Panda) . После настройки выполните следующие действия:

  • Скомпилируйте проект с использованием нового SDK, протестируйте в средах непрерывной интеграции и сообщите о любых проблемах в нашем трекере на странице обратной связи .
  • Проверьте совместимость вашего текущего приложения, выясните, затрагивают ли его изменения в Android 17, и установите приложение на устройство или эмулятор под управлением Android 17 и проведите тщательное тестирование.

Мы будем регулярно обновлять образы системы и SDK для предварительных/бета-версий на протяжении всего цикла выпуска Android 17. После установки бета-версии вы автоматически будете получать обновления по беспроводной сети для всех последующих предварительных и бета-версий.

Для получения полной информации посетитесайт разработчиков Android 17 .

Присоединяйтесь к обсуждению

Ваши отзывы остаются для нас самым ценным активом. Независимо от того, являетесь ли вы одним из первых пользователей канала Canary или разработчиком приложений, тестирующим бета-версию 4 , присоединяйтесь к нашим сообществам и оставляйте свои отзывы. Мы вас слушаем.

    Автор:

    Продолжить чтение