news 2026/6/13 11:32:41

安卓应用混合打包拥有鸿蒙特性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安卓应用混合打包拥有鸿蒙特性

介绍
本篇 旨在使用混合打包使得现有的安卓应用能够快速拥有鸿蒙的特性,布局鸿蒙生态

效果图
打开仍是android应用内容,拥有了 服务卡片的鸿蒙特性。


开发步骤
准备安卓工程
新建一个包名为 com.hoperun.harmonyMix 的 helloworld工程。

签名(Generate Signed APK)

记住别名和密码 , 密码弄稍微复杂点,后面Harmony工程也需要设置相同的别名和密码(鸿蒙工程签名对密码有些要求)。

本例中的别名/密码分别为key0/harmony123456

安卓工程进行改造
引入鸿蒙sdk中的abilityshell_ide_java.jar。 jar自行拷贝,位置:HarmonySdk\java\2.x.x.xx\api\abilityshell_ide_java.jar


原有的Application,继承更换为 HarmonyApplication

在AndroidManifest.xml中,向根节点下增加

向application节点下新增子节点


编译出app-debug.apk,同时,准备好签名生成的harmonymix.jks文件。

至此,安卓工程的改造已经结束。

配置鸿蒙工程
创建HelloWorld鸿蒙工程,包名最好最好最好 和Androd工程一致。
保证entry/src/main/config.json中的 version.code & version.name 和 Android一致 (Android 默认是 1/1.0)。
追加apiVersion节点

将apk(需改名为xxx-entry.apk)和jks文件拷贝到根目录下,并在 entry module的build.gradle 中,添加混入apk的配置。

运行鸿蒙工程

直接运行会报错,提示不存在entry下的启动页面了。 这是因为混合打包的本质就是用apk替代entry模块。

在桌面找到我们的应用,点击可正常打开,页面为Android启动页


此时运行的是鸿蒙工程,但是内容任然是APK的内容。

支持鸿蒙特性之服务卡片
创建卡片module

保证mycard/src/main/config.json中的 version.code & version.name 和 Android一致 (Android 默认是 1/1.0)。 和entry一样设置
追加apiVersion节点。 和entry一样设置
创建mycard模块,其实IDE已经做了很多操作,例如服务卡片是否要在 服务中心显示,卡片的样式,卡片的持久化等等。

好了,重新运行下,看下 长按应用图标是不是能够看到已经支持的鸿蒙特性之服务卡片。


看来 鸿蒙工程不签名是不行了。。。

鸿蒙工程签名
Generate Key and Csr, 生成p12和csr文件。 别名和密码 需要和Androd签名时一致。

在AppGalleryConnect中申请 调试签名Profile

  1. 创建项目

  2. 在用户与访问中,新增证书,过程中用到了刚才的获取的xxx.csr文件,下载获取xxx.cer文件

  3. 在我的项目中,管理HAP Provision Profile,添加Profile,下载获取xxx.p7b文件

鸿蒙工程设置签名

设置运行配置,勾选 deploy Multi Hap Packages

再次运行Entry,一切OK。

点击卡片如何快速跳转到Android

卡片创建所在类 CardAbility,一般(除非自己去设置点击)点击卡片,会跳转到CardAbility。 若是想立马跳转到Android 的某个页面。 可以在 onstart 中这样做:


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 5:35:45

滑动定窗口(十三)3439. 重新安排会议得到最多空余时间 I

3439. 重新安排会议得到最多空余时间 I 给你一个整数 eventTime 表示一个活动的总时长,这个活动开始于 t 0 ,结束于 t eventTime 。 同时给你两个长度为 n 的整数数组 startTime 和 endTime 。它们表示这次活动中 n 个时间 没有重叠 的会议&#xff0c…

作者头像 李华
网站建设 2026/6/13 2:43:53

Delphi:重命名单元

在Delphi中,如果想要重命名一个单元(unit),需要遵循几个步骤来确保更改不会影响您的项目或其他依赖该单元的代码: 1. 备份项目在进行任何重大的代码更改之前,确保备份项目。这可以通过简单地复制整个项目文…

作者头像 李华
网站建设 2026/6/13 2:42:09

为什么你的Open-AutoGLM跑不起来?:从内存、显卡到存储的完整诊断方案

第一章:Open-AutoGLM部署的设备需求概览部署 Open-AutoGLM 模型需要综合考虑计算资源、内存容量、存储空间以及网络环境,以确保模型推理与训练任务的高效运行。不同规模的应用场景对硬件配置提出差异化要求,以下从核心组件出发说明推荐配置。…

作者头像 李华
网站建设 2026/6/13 11:10:41

用 Lit 构建跨 Vue / React 的组件库完整实践

在前面的几篇中,已经把 Lit 的原理层拉出来溜了一圈: 它为什么不需要 Virtual DOMlit-html 如何通过 Part 精确更新 DOM响应式系统为什么极度克制生命周期为什么贴近浏览器模型为什么几乎没有状态管理 现在不再停留在“理解”上,而是发出灵魂…

作者头像 李华
网站建设 2026/6/13 6:44:12

Cursor Test 2025.12.24

Cursor 测试写个比较复杂的工具类,这个格式化,我早前已经写过了豆包好像也没弄明白,好奇,是不是有些如果没做过的东西或者github公网没学习到的东西,还是没有准确的思考。还是说表述都不够明白呢。感觉就是混乱啊

作者头像 李华
网站建设 2026/6/10 23:20:37

收藏!工业大模型核心应用场景全解析(程序员小白必看)

设计研发:创意迸发效率倍增的双重突破生产制造:柔性生产与智能升级的深度变革质量管控:全流程闭环的质量保障方案物流配送:高效协同的智能物流新生态营销售后:以客户为中心的价值升级路径供应链与企业管理:…

作者头像 李华