Разработка приложений с Windows Subsystem for Android

Microsoft открыла тестирование Windows Subsystem for Android. Пока это доступно для бета тестеров из США. Но умельцы уже нашли способы установить ее на любую сборку windows 11. Далее опишу эту инструкцию, и запущу приложения из Android Studio, попробую подебажить и расскажу нюансы которые я заметил, на которые необходимо обратить внимание при разработке.

Для начала надо убедиться, что ЦП поддерживает виртуализацию и включить ее. Открываем «диспетчер задач», переходим на вкладку «производительность» под графиками ЦП ищем строчку «Виртуализация включено». Если строчка есть – все ОК переходим к следующему шагу, если нет лезем в BOIS и включаем ее там. Если ЦП не поддерживает виртуализацию – то закрываем инструкцию она не пригодится.

Следующим шагом в поиске меню «Пуск» ищем и открываем «Включение или отключение компонентов Windows», и ставим галочку напротив пункта «Платформа виртуальной машины»

Далее нужен установщик Windows Subsystem for Android, есть инструкции как получить его с сервера Microsoft Store, но у меня не получилось. Нашел ссылку на GoogleDrive

Дальше необходимо запустить PowerShell обязательно от имени администратора! В консоль вводим команду

Add-AppxPackage -Path "C:\Users\user1\Desktop\MyApp.msix"

Где указываем путь до файла скачанного в прошлом пункте. Если все удачно, то в пуске появилась ссылка на Windows Subsystem for Android.

Теперь рассмотрим, как устанавливать apk файлы в эту систему. Сначала запускаем Windows Subsystem for Android, включаем режим разработчика, нажимаем иконку рядом с пунктом «Файлы», для запуска подсистемы. Возвращаемся на прошлый экран и нажимаем кнопку «обновить» рядом с элементом «IP адрес». На моем скрине эта кнопку уже называется «Копировать», потому что «Обновить» я уже нажал.

Полученный IP адрес будем использовать для подключения с помощью ADB. Для этого в командную строку вводим команду

adb.exe connect полученный_IP

С этого момента Android Studio видит подсистему как устройство, на котором можно запускать приложения. Примечание, если AS не была запущенна или открыть другой проект, то для того, чтобы увидеть подсистему как устройство – надо заново выполнить эту команду

У меня запустились все приложения, которые я пробовал запустить. Дебаг работает без проблем, так же как на эмуляторе.

Если нужно установить APK файл, то через командную строку вводим команду

adb.exe install MyApp.apk

После установки приложения любым из способов – в Пуске появляется ярлык этого приложения.

Теперь мои наблюдения:

  • Если понимаем, что необходимо будет поддерживать приложение для десктопа – надо обратить внимание на обработку физической клавиатуры. Например, были статьи про добавление навигации в RecyclerView стрелками

  • Еще более остро заметна проблема отсутствия обработки кнопки «enter» в TextView

  • Возник спор с коллегой, что не будет тут поддерживаться armv7. Для теста запустили приложение использующее exoPlayer для отображения потокового видео – все взлетело без проблем, работает. Так что «сишные» библиотеки не страшны

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

  • Физическая камера подхватывется без проблем, если нет такой – открывается пустое окно

  • После всех этих действий, у меня перестал запускаться эмулятор и пока с этим  не разобрался(если у кого повторится и с этим разберетесь - пишите в комменты)

Я думаю, что получилась классная подсистема. Понятно что она еще сырая, что есть проблемы с Google сервисами, но в будущем это классный задел под разработку приложений под две платформы. А что на счет этого думаете Вы?