HarmonyOS App Pack или файл App , идентифицированный с расширением файла ".app", [1] служит в качестве формата файла, используемого операционной системой HarmonyOS . Он функционирует как собственное приложение HarmonyOS для распространения и установки через Huawei AppGallery , [2] или для распространения через Huawei Ability Gallery в отношении приложений без установки как в бывшей классической двухфреймворковой системе, так и в текущей системе HarmonyOS NEXT унифицированной платформы приложений OpenHarmony. Файл App также используется рядом других операционных систем с открытым исходным кодом на базе HarmonyOS, таких как операционные системы OpenHarmony и Oniro OS, для распространения и установки приложений , видеоигр и промежуточного программного обеспечения . Включая операционные системы, не основанные на OpenHarmony, такие как операционная система Unity на базе GNU Linux , которая поддерживает формат файла app. [3] [4] [5] [6] [7]
Каждое приложение HarmonyOS содержит один или несколько файлов HarmonyOS Ability Package ( HAP , китайский :鸿蒙能力包; пиньинь : Hóngméng Nénglì Bāo ) с расширением «.hap» [8] и pack.info
файл, описывающий атрибуты файла приложения. [9] [1]
Большинство приложений HarmonyOS содержат как минимум один файл HAP типа entry, который является основным модулем приложения, и дополнительные файлы HAP типа feature, которые используются для реализации определенной функции приложения. [9]
Подсистема управления пакетами в OpenHarmony для обработки пакетов установки приложений. При рассмотрении среды ПК. Функция установки и обновления позволяет пользователям устанавливать или обновлять приложения, взаимодействуя с менеджером пакетов через графический пользовательский интерфейс или интерфейс командной строки . Функция запроса и удаления позволяет пользователям запрашивать установленные пакеты и удалять нежелательные с помощью аналогичных интерфейсов. Также хранилище, где информация о пакете будет храниться в базе данных или файлах конфигурации на ПК. Подсистема управления пакетами обеспечивает бесперебойное управление пакетами приложений независимо от формы устройства. [10]
Приложения HarmonyOS распространяются в виде файла программного пакета, известного как App Pack или App file, с расширением .app, что аналогично другим программным пакетам, таким как apk , используемым операционной системой Android , appx в Microsoft Windows или пакету Debian в операционных системах на базе Debian.
Для создания приложения HarmonyOS требуется инструмент разработки программного обеспечения, такой как DevEco Studio, для кодирования и упаковки HarmonyOS Ability Package (HAP) и связанных файлов в пакет приложения. [11]
Файлы HAP могут состоять из ресурсов, сторонних библиотек и файлов конфигурации . Они классифицируются на два типа модулей, т. е. entry и feature. Тип entry файлов HAP является основным модулем и должен быть включен в пакет приложения, в то время как тип feature файлов HAP является дополнительными модулями для реализации функций приложений.
Более того, файл приложения, содержащий различные сборки и спецификации, оптимизированные для различных устройств, может содержать более одного файла HAP типа записи. [4]
Исторически развитие формата HAP прошло через два этапа. На первом этапе, после распаковки, в качестве входа программы был неисполняемый APK для соединения с библиотеками файлов AOSP двоичных файлов для взаимодействия с базой AOSP HarmonyOS 2.0 API 6, что вызвано несовершенной экологией ранней разработки нового формата файла приложения во время двойной структуры OpenHarmony L3-L5, которая состоит из конвергенции базы Android EMUI . На раннем этапе разработки приложения сторонние разработчики способствовали разработке смешанной упаковки APK и HAP. [12] С момента введения библиотек HAR в HarmonyOS 3.1 API 9 с декларативной структурой программирования ArkUI и ArkTS , эволюционировавшей из eTS в 3.0, как основного языка программирования, заменяющего двоичные файлы Java на втором этапе HAP, APK были устранены после распаковки, и HAP не может быть преобразован в APK путем простой распаковки и упаковки, поэтому формат файла HAP не является оболочкой APK.
Перед упаковкой в пакет приложений файлы HAP могут запускаться непосредственно на реальном устройстве или эмуляторе, чтобы разработчики могли отлаживать и проверять приложения на этапе разработки. [13]
После разработки приложения, содержащие информацию о подписи, можно распространять на различные устройства с помощью AppGallery Connect — набора инструментов и услуг для создания, разработки, распространения и обслуживания приложений. [14]
Для совместного использования кода и ресурсов в App Pack операционная система предлагает два вида общих пакетов: Harmony Archive (HAR) , который является статическим общим пакетом, и Harmony Shared Package (HSP) , который является динамическим общим пакетом. [15]
И HAR, и HSP позволяют совместно использовать код, библиотеки C++, ресурсы и файлы конфигурации. В HAR код и ресурсы компилируются вместе с вызывающими модулями, что может привести к появлению нескольких копий одного и того же кода и ресурсов. Напротив, HSP допускает независимую компиляцию, что приводит к появлению только одной копии кода и ресурсов в продукте сборки. [15]
Когда несколько HAP ссылаются на один и тот же HAR, HSP может использоваться вместо этого для совместного использования некоторых переменных состояния и уменьшения размера App Pack. Однако HSP имеет некоторые ограничения; например, он не поддерживает декларацию возможностей в своем файле конфигурации, а его вызывающие модули должны находиться в той же модели стадии, что и HSP. [15]
В OpenHarmony 4.1 API 11 улучшений с HSP системного уровня, который поддерживает обновления OTA в системе управления пакетами приложений. Кроме того, обновление API 11 в Public Basic Class Library поддерживает создание Workers в HSP и HAR, то есть то, что пользователь дает задание и продолжает в процессе, в то время как Worker или несколько Workers, также известные как Thread pools , обрабатывают задачу в другом потоке. Метод обратного вызова инициируется, когда вызывается специальный метод, предоставленный в первоначальном вызове. [16]
Структура файла приложения после сборки и упаковки в модель этапа обычно содержит следующие файлы и папки. [9]
entry.hap
и feature.hap
: базовые модули как входного, так и функционального типов для установки приложения, содержащие следующие папки и файлы.ets
: папка, в которой хранятся файлы байт-кода, созданные после сборки кода.libs
: папка, в которой хранятся файлы зависимостей основного модуля.resources
: папка, содержащая файлы ресурсов, такие как графика, мультимедиа, строки символов и макеты.resources.index
: файл, содержащий таблицу индекса ресурсов, созданную при сборке приложения.app.json5
и module.json5
: файлы JSON с информацией о конфигурации для инструментов сборки, операционной системы и рынков приложений. [17]pack.info
: файл, описывающий атрибуты App Pack.