鸿蒙OS和Android到底有什么区别?

奋斗的疯子 2021-08-06 15:43:28 3868

一直都有人问 HarmonyOS 跟 Android 有什么区别?华为手机能够适配 Android 应用,那么我们做鸿蒙应用开发能够直接调用 JAR/AAR 包的 API 吗?接下我们就一起来一一验证。

JAR 的 API 调用验证

使用 HarmonyOS 开发工具 DevEco Studio 创建一个项目,我们到 entry→build.gradle→查看 dependencies 的引用包含了 JAR / HAR。

那么是否如截图显示的直接导入 JAR 包就可以调用其 API 呢?我马上就把我厂 Express SDK 的 JAR 导进来。

以下为详细步骤:

①ZegoExpressEngine.jar 包放置到 project 中的 Entry 目录下 libs 文件夹中,在 gradle 中增加 sync project。

②在程序调用该库(ZegoExpressEngine.jar)的 API。如图显示说明是可以直接调用 JAR 的 API 的:

③那么问题就来了,可以在鸿蒙 resources→layout→xml 里调用 Android 的控件吗?然后我又把 Android 的 v4 包给导进来了。

如下图显示 v4 包是成功引入:

resources→layou→长按右键→new→Layout Resource File:

如上图所示,鸿蒙的 Layout 是不允许创建 Android 控件的。于是我就手动输入,看会有什么效果:

在 Previewer 显示 Initial image data is Iost,说明是不支持这个包的功能。

并且说明鸿蒙是可以直接进行 JAR 的 API 调用,能调用但不一定支持该功能。

如,不支持 Android 的控件,它有自己的组件来进行 UI 的渲染。

AAR 的 API 调用验证

JAR 能够直接调用 API,那 AAR 呢?重复 JAR 的导入流程导入 AAR。

entry→build.gradle→dependencies 的引用添加 AAR:

哇,我的 API 呢?证明鸿蒙是不能直接调用 AAR 的方法的。

这样我们就放弃了吗?有没有其他的辅助的手段让我们能够调用 AAR 的方法。

我们知 AAR 的本质是 class.jar + res,基于 JAR 包是可以直接在鸿蒙系统上调用的,所以我们提取 AAR 中的 class.jar 是不是就可以了。

有了这个想法我们就要开始验证:

①把 AAR 后缀修改为 zip 后解压 ,找到 class.jar 并修改昵称为 cardview.jar。

哇,我的 API 呢?证明鸿蒙是不能直接调用 AAR 的方法的。

这样我们就放弃了吗?有没有其他的辅助的手段让我们能够调用 AAR 的方法。

我们知 AAR 的本质是 class.jar + res,基于 JAR 包是可以直接在鸿蒙系统上调用的,所以我们提取 AAR 中的 class.jar 是不是就可以了。

有了这个想法我们就要开始验证:

①把 AAR 后缀修改为 zip 后解压 ,找到 class.jar 并修改昵称为 cardview.jar。
https://gitee.com/andych008/aar2jar#https://www.jianshu.com/p/afa35b6a1098

如上图,成功调用了 logger 的 AAR 库:
https://github.com/orhanobut/logger

HAR 的编译过程

创建鸿蒙的项目,默认包含的就是 JAR/HAR。

HarmonyOS 库(HarmonyOS Ability Resources,简称 HAR)可以提供应用构建所需的一切内容,包括源代码、资源文件、HarmonyOS 配置文件以及第三方库。

官网(HAR 的编译流程官网链接)已经详细的讲解了编译过程,就不再累赘。

把我厂的 ZegoExpressEngine.jar 放到 HarmonyOS Library 编译:

生成的 har 再放到项目的 libs 进行验证,是可以正常调用的,说明 har 编译成功。

以下为本次验证总结:

鸿蒙应用开发,不能直接使用 Android 上的第三方库。

可以直接引用 JAR 的 API。但不能是运行时强依赖 Android 环境的,不然只能做移植,并做一定的修改。所以不依赖 Android 的 JAR 是可以直接在鸿蒙中使用的。

鸿蒙的 gradle plugin 环境下不能直接依赖 AAR,最好的办法是重新整理 AAR 工程,编译成相应的 HAR。

AAR 运行时不依赖 Android 环境的,可以提取其中的 class.jar,并做依赖。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 93 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
奋斗的疯子
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区