Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устройства на основе ARM становятся все более популярными благодаря их энергоэффективной природе, большой емкости аккумулятора и впечатляющей вычислительной мощности. Windows on Arm поддерживает единицы нейронной обработки (NPUs), настроенные для все более популярных рабочих нагрузок искусственного интеллекта и машинного обучения.
В этом руководстве рассматриваются действия по добавлению поддержки в приложения Windows для устройств, на основе процессоров Arm64. Он также предоставляет рекомендации по устранению потенциальных проблем или блокировщиков, таких как сторонние зависимости или подключаемые модули, которые могут препятствовать созданию версии приложения на основе Arm64.
Эмуляция на устройствах на основе Arm для приложений Windows x86 или x64
Версии Arm Windows 10 включают технологию эмуляции, которая позволяет существующим немодифицированным приложениям x86 работать на устройствах Arm. Windows 11 расширяет эмуляцию для запуска неизмененных приложений x64 Windows на устройствах с процессором ARM.
Хотя возможность эмулировать x64 и x86 на устройствах Arm является отличным шагом вперед, это руководство помогает добавить поддержку на основе Arm, чтобы приложение пользовалось преимуществами собственных показателей производительности и уникальными качествами устройств Arm64, в том числе:
- Оптимизация потребления энергии приложения для расширения времени работы батареи устройства.
- Оптимизация производительности ЦП, GPU и NPU для ускорения рабочих процессов, особенно при работе с ИИ.
Кроме того, драйверы ядра необходимо создать в виде родных для Arm64. Ядро не включает эмуляцию. Это ограничение в основном влияет на сценарии виртуализации. Для приложений, использующих драйверы устройств, которым требуется прямой доступ к внутренним компонентам ОПЕРАЦИОННОй системы или оборудования, работающего в режиме ядра, а не в пользовательском режиме, и которые еще не обновлены для поддержки процессоров Arm64, см. статью "Создание драйверов Arm64 с помощью WDK".
Замечание
Прогрессивные веб-приложения (PWAs) уже выполняются с собственной производительностью Arm64.
Предпосылки
Если вы обновляете приложение с помощью устройств на базе Arm (машинной компиляции – создания кода для той же платформы, на которой он выполняется), можно использовать следующее:
Знакомство с Visual Studio 17.10 — предварительная версия 1 (февраль 2024 г.)
Visual Studio 2022 версии 17.4 или более поздней. Это первый выпуск общедоступной версии Visual Studio, который изначально поддерживает создание и отладку приложений Arm64 на процессорах на основе Arm. Обе версии Visual Studio 2022 17.4 и Microsoft Visual C++ (MSVC) для Arm64 обеспечивают значительно лучшую производительность по сравнению с предыдущими эмулированными версиями.
(Необязательно) LLVM (Clang) версии 12+ или более поздней версии. LLVM 12 добавляет официальный двоичный выпуск, размещенный в Windows на Arm64, включая компилятор Clang, LLD Linker и библиотеки среды выполнения компилятора RT.
Если вы обновляете приложение Windows для поддержки Arm, используя устройства Intel на базе x64 или x86 (посредством кросс-компиляции), вы можете использовать следующее:
- Visual Studio 2022 версии 17.10 (рекомендуется)
- Visual Studio 2019 версии 16.x
- Visual Studio 2017 версии 15.9 и новее (UWP, мост для настольного режима, win32 C++)
- LLVM (Clang) версии 12 и выше
При выборе между кросс-компиляцией или собственной компиляцией следует учитывать несколько факторов, таких как доступное оборудование и простота выполнения теста.
Замечание
GCC, поддержка коллекции компилятора GNU нацелена на ближайшее будущее.
Шаги по добавлению собственной поддержки Arm64
Чтобы обновить приложение для собственного запуска на устройствах Arm64, выполните следующие действия.
- Добавление конфигурации Arm64 в проект в Visual Studio
- Тестирование и отладка нового созданного приложения Arm64
- Создание и тестирование вашего приложения на устройствах на базе Arm
После подтверждения оптимизации приложения для устройств Arm:
Шаг 1. Добавление конфигурации Arm64 в проект в Visual Studio
Чтобы добавить новую платформу решения ARM64 с целевыми объектами отладки и выпуска в существующий проект приложения x64 или x86:
- Откройте решение (код проекта) в Visual Studio (см. предварительные требования поддерживаемых версий).
- В раскрывающемся меню «Платформы решений» на стандартной панели инструментов или в меню «Сборка» выберите Диспетчер конфигураций...
- Откройте раскрывающееся меню "Активная платформа решения" и выберите <"Создать...>".
- В раскрывающемся меню "Введите или выберите новую платформу", выберите ARM64 и убедитесь, что для значения "Копировать параметры из" установлено значение x64 с включенным флажком "Создать новые платформы проектов", а затем нажмите кнопку "ОК".
Поздравляю! Вы начали добавлять поддержку Arm в приложение. Затем проверьте, успешно ли выполняется сборка решения Arm64.
Если решение не успешно создано, необходимо устранить проблемы, которые вызывают сбой сборки. Наиболее вероятная причина заключается в том, что зависимость недоступна для ARM64, об этом речь идет в разделе Устранение неисправностей ниже.
(Необязательно). Чтобы убедиться, что двоичный файл приложения создан для Arm64, откройте каталог проекта в PowerShell (щелкните правой кнопкой мыши проект приложения в обозревателе решений Visual Studio и выберите "Открыть в терминале"). Перейдите в каталог, чтобы был выбран новый каталог bin\ARM64\Debug или каталог Release вашего проекта. Введите команду: dumpbin /headers .\<appname>.exe (замена <appname> именем приложения). Прокрутите вверх в выходных данных терминала, чтобы найти раздел FILE HEADER VALUES и убедитесь, что первая строка AA64 machine (ARM64).
Шаг 2. Тестирование и отладка недавно созданного приложения Arm64
Чтобы проверить успешность сборки решения Arm64 после добавления платформы решения Arm64 в проект в Visual Studio:
- Закройте окно платформы активных решений .
- Измените параметр сборки с отладки на выпуск.
- В раскрывающемся меню «Сборка» выберите «Перестроить решение» и дождитесь перестроения проекта.
- Вы получаете вывод Перестроение всех прошло успешно. Если нет, см. раздел "Устранение неполадок ".
После создания двоичных файлов для приложения для поддержки Arm64 необходимо протестировать их. Для этого тестирования требуется устройство или виртуальная машина под управлением Windows в Arm.
Если вы разрабатываете на Arm-устройстве Windows, то вы легко настроите локальную отладку в Visual Studio. Если вы выполняете перекрестную компиляцию (используя устройство, которое не работает на процессоре Arm), то вы хотите использовать удаленную отладку на устройстве Windows на устройстве Arm или виртуальной машине, чтобы обеспечить работу разработки в Visual Studio при запуске приложения Arm64 на другом устройстве.
Доступные для тестирования Windows на оборудовании Arm или виртуальных машинах
Если вы ищете оборудование для непрерывной интеграции (CI) и тестирования, это несколько устройств Windows с процессором на основе Arm64:
Сведения о настройке виртуальной машины под управлением Windows on Arm для поддержки CI и тестирования см. в кратком руководстве по созданию виртуальной машины Windows на портале Azure.
Ознакомьтесь с объявлением блога Azure о общедоступной доступности виртуальных машин Azure с процессорами на основе Ampere Altra Arm с возможностью запуска версий Windows 11 Pro и Enterprise на основе Arm64.
Дополнительные сведения о Windows 11 в Предварительной версии для Arm (VHDX) для создания локальной виртуальной машины Windows на Arm с помощью Hyper-V и VHDX программы Windows Insider. *Виртуальные машины Arm64 поддерживаются только на устройствах, удовлетворяющих предварительным требованиям. Создание виртуальных машин Arm64 не поддерживается на оборудовании x64. Для размещения виртуальной машины в облаке см. ссылку краткого руководства выше.
Ознакомьтесь с видео "Спросите эксперта: создание приложений с помощью виртуальных машин Azure на основе Ampere".
Шаг 3. Создание и тестирование приложения на устройствах Arm
Добавление этапа автоматизации тестирования важно учитывать в вашей стратегии непрерывной интеграции и доставки (CI/CD). Для решений Arm64, работающих в Windows, важно запустить набор тестов на архитектуре Arm64. Эта архитектура может быть фактической версией Windows на оборудовании Arm, используя одно из устройств Arm, перечисленных ранее или виртуальную машину, из перечисленных ранее виртуальных машин.
Компиляция приложения удобнее выполнять на том же компьютере, что и тесты, но во многих случаях не требуется. Вместо этого можно расширить существующую инфраструктуру сборки, чтобы создать кросс-компилированный результат для Arm64.
Шаг 4. Обновление установщика и публикация обновленного приложения
При публикации в Microsoft Store после создания версии приложения Arm64, выполнив описанные выше действия, вы можете обновить существующий пакет приложения в Microsoft Store, перейдя на панель мониторинга Центра партнеров и добавив в отправку только что созданные двоичные файлы ARM64.
Если вы еще не публикуете приложение в Microsoft Store, следуйте инструкциям по созданию отправки приложения на основе того, хотите ли вы отправить MSI или EXE, пакет MSIX, PWA или надстройку приложения.
Если вы создаете собственный установщик, убедитесь, что он может успешно установить новую версию Arm64. Большинство фреймворков установщиков, таких как WiX, Squirrel, InnoSetup, InstallAware, и другие поддерживают Windows на Arm без проблем.
Если вы предлагаете установщик приложения на веб-странице, вы можете использовать User-Agent подсказки клиенту, чтобы определить, когда ваш клиент посещает устройство с Windows на базе Arm, и предложить им обновленную версию приложения, оптимизированного для Arm. В отличие от строки user-agent, User-Agent признаки клиента позволяют различать клиентов на Arm-устройствах от клиентов на x86-устройствах.
Шаг 5. Планирование текущих обновлений
Теперь, когда вы публикуете версию Приложения Arm64, необходимо убедиться, что она обновляется так же, как и другие версии приложения. Сохраняйте версии и функции согласованными между архитектурами, чтобы избежать путаницы у клиентов в будущем.
Устранение неполадок
Распространенные проблемы, которые препятствуют добавлению версии Arm64 существующего приложения x64 или x86, включают:
- Зависимость, не скомпилированная для ARM64, блокирует выполнение успешной сборки.
- Код написан для конкретной архитектуры, отличной от Arm64.
- Приложение использует драйвер ядра.
- Вы застряли и нуждаетесь в помощи.
Зависимость, не скомпилированная для ARM64, блокирует выполнение успешной сборки
Если вы не можете создать приложение из-за зависимости, будь то внутренняя, от сторонней или из библиотеки с открытым кодом, необходимо либо обновить эту зависимость для поддержки архитектуры ARM64, либо удалить ее.
Для внутренних зависимостей перестройте зависимость для поддержки ARM64.
Для сторонних зависимостей попросите ответственного разработчика собрать зависимость заново с ARM64 поддержкой.
Для зависимостей с открытым кодом проверьте vcpkg , чтобы узнать, включена ли более новая версия зависимости ARM64, на которую можно обновить. Если обновление не существует, рассмотрите возможность добавления поддержки ARM64 в пакет самостоятельно. Многие сопровождающие проекты с открытым исходным кодом ценят вклад.
Организация Linaro работает с предприятиями и сообществами с открытым исходным кодом для разработки программного обеспечения на основе технологий на основе Arm. Вы можете отправить запрос в службу технической поддержки Linaro, чтобы помочь обновить поддержку пакетов для любых отсутствующих зависимостей, связанных с Windows on Arm.
Используйте Arm64EC. Версии зависимостей Arm64EC можно использовать для перестроения приложения, сохраняя при этом использование версий зависимостей x64. Любой код x64, включая код из зависимостей, внутри процесса Arm64EC выполняется в режиме эмуляции в приложении. (В этом случае версии зависимостей Arm64 недоступны.)
Удалите зависимость из проекта приложения и замените её.
Код написан для конкретной архитектуры, отличной от Arm64
- Необходимо изменить ассемблерный код или встроенные функции для того, чтобы они соответствовали доступным инструкциям и функциям на процессорах Arm. Инструкции см. в статье "Использование сборки и встроенных функций в коде C или C++".
Приложение использует драйвер ядра
Драйверы ядра должны быть созданы под архитектуру Arm64. Ядро не предоставляет эмуляции. Это ограничение в основном влияет на сценарии виртуализации. Для приложений, использующих драйверы устройств, требующие прямого доступа к внутренним компонентам ОС или оборудования, работающего в режиме ядра (а не в пользовательском режиме), и которые еще не обновлены для поддержки процессоров Arm64, см. статью "Создание драйверов Arm64 с помощью WDK".
Кроме того, драйверы в Windows должны быть созданы как Arm64 и не могут быть эмулированы. Для приложений, использующих драйверы программного обеспечения, которые еще не обновлены для поддержки процессоров Arm64, см. статью "Создание драйверов Arm64 с помощью WDK".
Цепочка инструментов для Windows в Arm
Помимо поддержки Visual Studio и LLVM (CLANG), как описано в разделе предварительных требований этого руководства, также поддерживаются следующие средства и платформы для Arm64:
- .NET 7
- .NET 6 (LTS)
- .NET 5.0.8+
- .NET Framework 4.8.1
- Clang-cl компилирует код C++ для Windows и может служить заменой компилятора и компоновщика MSVC. Он по-прежнему использует заголовки и библиотеки из MSVC и совместим с MSVC на уровне ABI.
А также сторонние платформы, в том числе:
- Qt для Windows, Библиотека Boost C++, Bazel, средство сборки и тестирования с открытым исходным кодом.
- Поддержка GCC и Mingw / GNU Toolchain для Windows on Arm выполняется в Linaro.
- Более полный список см. в разделе Windows On Arm (WOA) — Confluence (atlassian.net).
Нужна помощь? Использование службы App Assure
Услуга консультаций Arm App Assure доступна, чтобы помочь разработчикам создавать приложения, оптимизированные для Arm. Эта служба в дополнение к нашему существующему обещанию: ваши приложения работают в Windows на Arm и при возникновении каких-либо проблем корпорация Майкрософт помогает устранить их. Подробнее.
Windows on Arm