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 сервисами, но в будущем это классный задел под разработку приложений под две платформы. А что на счет этого думаете Вы?

UPD: в комментарих пишут что Google Drive недоступен, продублировал файл в Я.Диск

UPD1: для получения самой последней версии подсистемы с сервера MicrosoftStore

  • Открываем сайт store.rg-adguard.net

  • В левом списке выбираем "URL (link)"

  • В поле ввода вставляем ссылку www.microsoft.com/store/productId/9P3395VX91NR

  • В правом списке выбиваем "Slow"

  • Нажимаем на "галочку"

  • Ищем в списке файл MicrosoftCorporationII.WindowsSubsystemForAndroid*.msixbundle вес около 1.2 GB, у меня всегда был последний в списке

  • Правой кнопкой мыши кликаем по имени файла и выбираем пункт "копировать адрес ссылки"

  • Вставляем ссылку в новую вкладку. Загрузка началась

Комментарии (21)


  1. aborouhin
    24.10.2021 16:05
    +1

    есть инструкции как получить его с сервера Microsoft Store, но у меня не получилось. Нашел ссылку на GoogleDrive

    Скачать по ссылкам со Store тоже не получилось, и линк на Google Drive не работает, заблокирован в связи со слишком большим количеством скачиваний. Нашёл работающий линк на Mega, скачал, надеюсь, он в свою очередь не падёт под хабраэффектом :)


    1. bsod_keks Автор
      24.10.2021 16:40

      Спасибо! Щас выложу в свой я.диск и пошарю на всякий случай


  1. ChPr
    24.10.2021 16:24
    +4

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

    Но ExoPlayer по-умолчанию не имеет никаких нативных либ, только в экстеншонах, да и те доступны под х86 тоже, так что нужно еще и abi фильтр настроить правильно для эксперимента.


    После всех этих действий, у меня перестал запускаться эмулятор и пока с этим не разобрался

    Потому что для виртуализации используется Hyper-V, а эмуляторы из студии один из трех вариантов. Покапайте в эту сторону, возможно достаточно будет их пересоздать чтобы SDK вдуплил что теперь нужно использовать Hyper-V. (я не знаю деталей, не использую винду)


  1. aborouhin
    24.10.2021 17:14

    P.S. Для статистики, попробовал поставить то, чего мне сильнее всего не хватает на компе из телефонных приложений:

    • Life360 (недавно выпилившие веб-интерфейс) - работает, но ругается на отсутствие Google Play Services (MicroG установлены) и не показывает карту (т.е. фактчиески бесполезно).

    • Яндекс.Еда (путь курьера показывает только в мобильной версии) - запускается, но при попытке открыть меню для авторизации вылетает. Чего ей не хватает, непонятно.

    • Mi Home (роботы-пылесосы запускать) - работает без проблем.

    • Pass24 (заказ пропусков в посёлке, где живу) - работает без проблем.

    В общем, 50% пока так себе результат :( Да ещё и без возможности автоматического обновления приложений.

    Главная проблема - как я понимаю, Google Play Services для приложений, установленных через Amazon App Store, даже когда он официально заработает для всех, недоступны, и разработчикам надо предпринимать отдельные усилия, чтобы сделать версию, использующую аналогичные сервисы Amazon (см. тут). А если разработчик сейчас не озадачился нормальной десктопной или веб-версией своего продукта (иначе потребности запускать Android-версию на ПК и не было бы вообще) - то вряд ли ради возможности запуска на Win 11 он такие усилия предпримет :(

    А на гугловские сервисы уж очень много чего завязано и MicroG, как показывает даже мой короткий эксперимент, не всегда спасают.


    1. bsod_keks Автор
      24.10.2021 17:37

      Попробуй накатить AppGallery от Huawei, щас многие аппки поддерживают и его, и вроде его сервисы должны взлететь. Я глубоко не копал ещё в эту сторону


    1. bsod_keks Автор
      24.10.2021 18:09
      +1

      только что накатил AppGallery, поставил оттуда Яндекс.Еда. Она подхватила huawei сервисы, авторизовался без проблем. life360 там нет. Но то что уже куча приложений адаптируются для huawei сильно расширяет круг полноценно работающих приложений в этой среде

      П.С после запуска AppGallery установленной из APK, она обновилась до последней версии


      1. chain2k
        24.10.2021 20:07
        +2

        Гугл сервисы ставятся из opengapps, но нужен root, потом можно вернуть нормальное ядро.

        github.com/ADeltaX/WSAGAScript


        1. aborouhin
          25.10.2021 05:44

          Вот за эту ссылку спасибо. В итоге практически всё, что нужно было, поставил. Ну кроме злополучного Life360 :(

          Правда, пока полный разброд и шатание. Какие-то приложения в Play Store показаны как несовместимые с текущим устройством, но если установить из APK - работают (Яндекс.Еда, Mi Home). А какие-то устанавливаются из Play Store, но не работают (Яндекс.Карты). Даже из софта самой MS - Excel ставьте пожалуйста, а Word "не совместим"...

          Ну, впрочем, рассчитывать, что в таком неподдерживаемом сценарии всё будет гладко, да ещё и с первой беты, было бы наивно. Доволен уже тем, что есть, а там посмотрим за прогрессом.


          1. bsod_keks Автор
            25.10.2021 08:31

            а на что теперь life ругается?


            1. aborouhin
              25.10.2021 13:56

              1. "Не установлены Google Services" (хотя на смартфоне с LineageOS и теми же OpenGApps Pico ему всего хватает).

              2. Не показывает карту, только серое поле (хотя, скажем, Gett карту Google показывает в своём приложении без вопросов).


          1. chain2k
            25.10.2021 10:21

            Похоже не работают те, что на определении местоположения завязаны. Возможно UnifiedNlp поможет с microg.org. Доберусь до домашнего ноута, попробую проверить.


            1. aborouhin
              25.10.2021 13:57

              Да нет, ЯндексGo и Gett, например, местоположение прекрасно определяют.


              1. chain2k
                25.10.2021 15:46
                +1

                Карты запустил, но сайдлоадом, работают только под версию arm v7
                https://www.apkmirror.com/apk/yandex-apps/yandex-maps/yandex-maps-10-6-1-release/

                И в винде разрешение WSA на доступ к местоположению не забыть дать.
                Да, если поставить версию постарее и обновить из гугл плей, то перестают работать)


  1. dartraiden
    24.10.2021 22:01
    +2

    есть инструкции как получить его с сервера Microsoft Store, но у меня не получилось

    store.rg-adguard.net → URL (link): www.microsoft.com/store/productId/9P3395VX91NR → Slow → MicrosoftCorporationII.WindowsSubsystemForAndroid*.msixbundle


    1. bsod_keks Автор
      24.10.2021 22:21
      +1

      У меня файл не скачивался при этом, возможно заработало

      UPD. До сих пор не скачивается


      1. parshkov
        25.10.2021 08:07
        +1

        Надо скопировать ссылку, вставить в пустое окно браузера и перейти по ней


        1. bsod_keks Автор
          25.10.2021 08:21

          Это круто, сам не додумался) Спасибо, щас добавлю


  1. parshkov
    25.10.2021 08:05

    del. Ошибся веткой


  1. Neikist
    25.10.2021 10:38

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

    А с чего бы они были страшны если они для библиотек обычно собираются и под arm и под x86 и поставляются вместе?


  1. exibite777
    25.10.2021 21:11

    Лучше бы технических деталей накидали:
    — Amazon AppStore так и не нашел, хотя мелкомягкие обещали что встанет вместе с WSA
    — с ApkMirror какую архитектуру качать? x86_64 или WSA эмулирует в своем контейнере что-то?
    — дайте плиз ссылку на актуальный портабл ADB, студию ради экспериментов не хочется ставить
    — в режиме разработчика этой WSA что-то не вижу «Отладка через ADB», а посыл фразы «ADB можно подключить на 127.0.0.1:58526» мне технически не совсем понятен
    — как накидывать GApps и откуда их брать я помню, но вот не помню, как из ADB прошивать архивы, вроде как-то можно по аналогии с TWRP. Напомните плиз
    ===========
    Вообще кроме GApps конечно вопрос как Windows шарит ресурсы для WSA (блютуз-устройства, доступ к диску и прочее). Ладно вот на DEV-канале отмучались наконец-то с WSL. Установка вот этого DevWSA на на юзер-десктопы вскроет кучу багов


    1. bsod_keks Автор
      25.10.2021 22:33

      1. Если я правильно понял, амазон ставить не нужно, приложения из амазона будут доступны в MicrosoftStore. На момент тестирования(т.е. сейчас) доступны 50 приложений, каких не скажу, потому что не интересно и не смотрел

      2. Не смотрел еще, брал первые попавщиеся APK - взлетали все

      3. Adb

      4. Фраза не моя, пояснить за нее не могу:)

      5. Все про установку G сервисов на WSA в репозитори

      По блютузу, дискам и.т.д. пока не смотрел.