HarmonyOS跟Android有什么区别

来源:
导读 大家好,我是本期栏目编辑小友,现在为大家讲解HarmonyOS跟Android有什么区别问题。 人们总是问鸿蒙系统和安卓有什么区别?华为手机可以适

大家好,我是本期栏目编辑小友,现在为大家讲解HarmonyOS跟Android有什么区别问题。

人们总是问鸿蒙系统和安卓有什么区别?华为手机可以适应安卓应用,那么我们在开发鸿蒙系统应用的时候可以直接调用JAR/AAR包的API吗?接下来,让我们逐一验证它们。

JAR的API调用验证。

使用鸿蒙系统开发工具DevEco Studio创建一个项目。我们转到entrybuild.gradle检查依赖项的引用是否包含JAR/HAR。

有没有可能通过直接导入如截图所示的JAR包来调用它的API?我会立即导入我们工厂的Express SDK的JAR。

以下是详细的步骤:

zegoxpressengine . jar包放在project中Entry目录下的libs文件夹中,同步项目添加在gradle中。程序中调用了库(ZegoExpressEngine.jar)的API。图中显示可以直接调用JAR的API:

然后问题来了。你能在鸿蒙系统资源布局xml中调用安卓控件吗?然后我导入了安卓的v4包。

资源楼层长按右键新建布局资源文件:

如上图所示,鸿蒙系统布局不允许创建安卓控件。所以我手动输入,看看会发生什么:

在预览器中,显示初始图像数据丢失,表示不支持该包的功能。

也说明鸿蒙系统可以直接调用JAR API,可以调用但不一定支持这个函数。

例如,不支持Android的控件有自己的组件来呈现UI。

AAR的API调用的认证。

JAR可以直接调用API,但是AAR呢?通过重复JAR的导入过程导入AAR。

条目 build.gradle 依赖项的引用添加AAR:

我认为它是完美的,所以我可以直接称之为:

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

所以我们放弃了?有没有其他辅助手段让我们称之为AAR的方法?

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

有了这个想法,我们将开始验证:

修改AAR后缀进行压缩解压,找到class.jar,将其昵称改为cardview.jar

上图验证了这个可以直接调用,但是不能每次都手动解压导入,所以找到了第三方(aar2jar)。为了解决鸿蒙系统依赖AAR库的问题,实现原理是先解包AAR,再依赖它的class.jar

aar2jar,打开链接所依赖的流程不再累赘,新的测试有效。

https://gitee.com/and ych 008/AAR 2 jar # https://www . jianshu.com/p/AFA 35 b 6 a 1098

dent:2em;"> 如上图,成功调用了 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,并做依赖。

责任

标签:

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。