今天看到社区问答板块的一个问题:“为什么鸿蒙应用的安装包是 .apk?”引起了我的思考,在回答过程中内容越来越多,也就单独起了这一片文章进行一个讨论,发表一下自己的拙见。也希望大家在读完这篇文章后,会有所收获。

相关概念解析
①HAP
在 HarmonyOS 开发文档的术语定义里:HarmonyOS Ability Package,一个 HAP 文件包含应用的所有内容,由代码、资源、三方库及应用配置文件组成,其文件后缀名为 .hap。也即 HAP 是 Ability 的部署包。
②应用程序包
APP Pack(.app),HarmonyOS 的用户应用程序包以 APP Pack 形式发布。
在华为运用分发文档的 HarmonyOS 应用中:最终打包上传的 HarmonyOS 应用软件包应为 .app 格式,且不能超过 2GB。
③APK
全称:Android application package,Android 应用程序包,是 Android 操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件,其文件后缀名为 .apk。
④混合包开发模式
华为论坛回复:在现有 Android 应用向 HarmonyOS 应用改造的过程中,为使开发者迅速迁移到 HarmonyOS 生态,HarmonyOS 提供了混合打包方案,可以将原 Android 应用与 HarmonyOS FA 混合打包成满足 HarmonyOS 要求的应用。
⑤应用上架与发布
流程为签名→构建→发布。从 Android 应用改造为 HarmonyOS 应用的流程:构建鸿蒙版本的 apk 包(集成专用 jar 包)→配置鸿蒙工程(混入 apk 文件配置→签名改造→增加配置文件属性→设置启动入口)→实现 Android-HarmonyOS 互调用(安卓调用鸿蒙需要集成专用 jar 包,鸿蒙调用安卓组件是本身就支持的,而目前只能调用部分安卓功能)。
HarmonyOS 应用发布流程:开发者中心创建鸿蒙应用→选择软件包类型(Android 应用、HarmonyOS 应用、快应用、PC 应用)→添加项目→上传构建的 .app 软件包→等待审核。
若想学习如何改造详见:《京东APP鸿蒙版上架实践》
⑥分布式调度相关问题解答
.hap 文件解压后会有 .apk 文件的?A:hap 和 apk 只是打包压缩格式。
⑦深扒一下鸿蒙 2.0 Beta 里的 HAP 如何运行
鸿蒙 2.0 提供的 SDK,对外的接口完全屏蔽了 Android,HAP 里解压出来的 APK 还是一个遵守 Android 标准的 App 包,Apk 用来引导,然后使用 ClassLoader 加载用户程序。
至少在虚拟手机层面,是有一个 Android 运行时存在的,根据 Log 看到的信息,虚拟手机层面,应该还是有一个 Linux Runtime 存在的。
整个 hap 还是由 Android Runtime 加载并运行的,但鸿蒙应该是在外部加了一个定制的类加载路径,用来加载 hap 里的 classes.dex 文件中带的类。按照正常的程序来理解,HAP 不能算是系统原生应用。
⑧HUAWEI DevEco Studio 日常 Q&A

⑨App Bundle 应用与 Dynamic Ability 解决方案
Dynamic Ability 是 AppGallery Connect(简称 AGC)基于 Android App Bundle 技术实现的动态加载特性的一套解决方案,第三方应用通过集成 Dynamic Ability SDK,可以在需要时动态从华为应用市场下载应用的某个特性或语言包,从而减少不必要的网络流量与终端设备存储空间消耗
说明:此方案目前只支持客户端 SDK-Android。且在使用说明中软件包选择必须选用“APK(Android 应用)”。

这个解决方案就回答了为什么鸿蒙版这些应用这么小的原因。
相关实际验证
①AGC 现行项目创建实际情况
创建应用软件包类型只有两个选项-APK,快应用**,添加应用平台**有五个选项。


②夜神模拟器运行《微博极速鸿蒙版》


③手机上验证与比对
设备名称:Honor V10
HarmonyOS 版本:2.0.0
应用来源:华为应用商店
(1)应用商店的鸿蒙应用与其他应用的区别
图片右下角有 HMOS 的标记:

应用体积小:

(2)应用的详情比较
微博:

微博极速鸿蒙版:

APK 文件基于 ZIP 文件格式,它的互联网媒体类型是:
application/vnd.android.package-archive
④ACG 应用创建
可以发现:添加运用选择的平台是 HarmonyOS,但包名输入 .apk 也可以正常创建,软件包类型:APP。


软件包类型:APK

相关结论
MIME 类型:鸿蒙应用和其他应用无异,均是application/vnd.android.package-archive
文件扩展名:《微博极速鸿蒙版》目前来看安装包的文件拓展名均是 .apk
现在下载鸿蒙应用,长按图标是没有分享选项的:

软件包:安卓应用是 APK,鸿蒙应用是 APP
运行平台:鸿蒙应用的运行平台是 HarmonyOS
👇 扫码报名周三的鸿蒙直播课 👇


求分享

求点赞

求在看




