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

效果图
打开仍是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 中这样做:

在这里插入图片描述
在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐