一直都有人问 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 包给导进来了。
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。
如上图验证这样是可以直接调用,但是不能每次都手动解压再导入,于是就找了第三方的(aar2jar),为了解决鸿蒙依赖 aar 库的问题,实现的原理也是解包 aar,再依赖其中的 class.jar。
②aar2jar,打开链接有依赖流程就不再累赘,新测有效。
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,并做依赖。
缓冲电路工作原理
漏电维护器的准确运用和选择
中国特需给力!日本半导体设备厂商业绩飙升
高频开关电源中EMI产生的机理及其抑制方法
电动客车高压线束工作特点及负荷计算
HarmonyOS跟Android有什么区别
打造“超算-智算-数据传输交换平台”,助力人工智能行业发展
基于转码器的高清视频解决方案
甚高频调频天线升压电路详解
小身材大能量,最小拖车机器人,轻松拉动皮卡,爬山涉水如履平地
选择示波器时需要注意哪些技术指标
变压器的概述
德国电信数字化转型:转变传统应与时俱进
基站节能 通信网节能的“长尾”
这些数字化“武器”如何在抗疫中发挥作用
苹果研发microLED屏幕欲取代OLED屏
国产计算机平台介绍——申威
利用Python发送邮件的 3 种方式
基于VHDL和FPGA的非对称同步FIFO设计实现
三季度报告披露结束,汽车产业链上市公司的业绩也浮出水面