0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS跟Android有什么区别

华为麒麟 来源:鸿蒙技术社区 作者:即构忠武 2021-08-16 09:24 次阅读

一直都有人问 HarmonyOSAndroid 有什么区别?华为手机能够适配 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 包给导进来了。

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

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

581aba1a-fdf0-11eb-9bcf-12bb97331649.png

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

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

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

5a190a06-fdf0-11eb-9bcf-12bb97331649.png

AAR 的 API调用验证

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

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

5a283030-fdf0-11eb-9bcf-12bb97331649.png

以为很完美,这样就可以直接调用了:

5a3670d2-fdf0-11eb-9bcf-12bb97331649.png

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

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

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

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

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

5a71ba0c-fdf0-11eb-9bcf-12bb97331649.png

如上图验证这样是可以直接调用,但是不能每次都手动解压再导入,于是就找了第三方的(aar2jar),为了解决鸿蒙依赖 AAR 库的问题,实现的原理也是解包 AAR,再依赖其中的 class.jar。

②aar2jar,打开链接有依赖流程就不再累赘,新测有效。

https://gitee.com/andych008/aar2jar#https://www.jianshu.com/p/afa35b6a1098

5a80ee1e-fdf0-11eb-9bcf-12bb97331649.png

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

HAR 的编译过程

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

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

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

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

5a8ee6d6-fdf0-11eb-9bcf-12bb97331649.png

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

结语

以下为本次验证总结:

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

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

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

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

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3923

    浏览量

    127120
  • 安卓
    +关注

    关注

    5

    文章

    2120

    浏览量

    57006
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2634

    浏览量

    66209

原文标题:鸿蒙OS和Android到底有什么区别?

文章出处:【微信号:Huawei_Kirin,微信公众号:华为麒麟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    美国多IP服务器和美国多服务器什么区别

    美国多IP服务器和美国多服务器什么区别 美国多IP服务器和美国多服务器在概念、功能以及应用场景上存在明显的区别。主机推荐小编为您整理发布美国多IP服务器和美国多服务器
    的头像 发表于 11-11 10:22 124次阅读

    RTOS与Linux到底什么区别

    很多做嵌入式开发的小伙伴都存在这样的疑惑:RTOS与Linux到底什么区别
    的头像 发表于 10-29 09:53 319次阅读

    INA282,INA200什么区别,后者什么优势?

    采用差动放大器INA117和采用专门的高端电流检测芯片,比如INA282,INA200什么区别,后者什么优势?是不是在INA117差放后加一级相应倍数的放大,效果就采用INA2
    发表于 09-26 07:50

    请问模拟开关多路复用器什么区别

    我想请问,模拟开关多路复用器什么区别。比如单刀双掷开关,是不是就是2选1的多路选择器,只是模拟开关是1:2,AMUX是2:1?我理解的区别是模拟开关的状态要么通道A导通,要么通道
    发表于 08-12 08:16

    请问ESPTOUCH和AIRKISS什么区别

    请问ESPTOUCH和AIRKISS什么区别?谢谢!
    发表于 07-12 12:44

    RV 和ARM什么区别

    district RV 和ARM什么区别
    发表于 06-26 12:41

    线路板的层和阶什么区别

    线路板的层和阶什么区别
    的头像 发表于 02-23 17:27 659次阅读

    TC397多核之间数据访问效率什么区别?本地和全局的效率什么区别

    TC397多核之间数据访问效率什么区别,本地和全局的效率什么区别,可不可以将电机同步ADC采集放到主核0,算法在1核执行
    发表于 02-06 07:42

    SPI和QSPI什么区别

    SPI和QSPI什么区别
    发表于 02-06 06:12

    求助,TC275中不同的STEP什么区别

    TC275中不同的STEP什么区别?我看了一些芯片CA-STEP,DB-STEP,DC-STEP这几个step什么区别呢?或者从哪个手
    发表于 02-04 07:34

    S120电机模块与功率模块什么区别

    S120电机模块与功率模块什么区别 电源模块是整流吧,ALM/SLM/BLM 我问的是AC功率模块电机模块的区别,另外想请教一下各路大神,组态S120用GSD还是HSP呢,第一
    发表于 01-09 07:39

    hdi板与普通pcb什么区别

    hdi板与普通pcb什么区别
    的头像 发表于 12-28 10:26 2706次阅读

    pcb软板和硬板什么区别

    pcb软板和硬板什么区别
    的头像 发表于 12-19 10:01 1817次阅读

    什么是干簧管呢?它霍尔元件什么区别和联系呢?

    什么是干簧管呢?它霍尔元件什么区别和联系呢? 干簧管是一种基于磁电效应的开关器件,广泛应用于电子和自动控制系统中。它由两个金属片组成,其中一个片上覆盖一个在有电流流过时产生磁场的线圈。当没有外部
    的头像 发表于 12-18 14:49 1052次阅读

    RDMA和TCP/IP什么区别

    在分布式存储网络中,我们使用的协议RoCE、Infiniband(IB)和TCP/IP。其中RoCE和IB属于RDMA (RemoteDirect Memory Access)技术,他和传统的TCP/IP什么区别呢,接下来我
    的头像 发表于 11-30 09:19 1672次阅读
    RDMA和TCP/IP<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>