开发鸿蒙应用能引入 JAR 或 AAR 吗?
The following article is from 鸿蒙技术社区 Author 即构忠武
一直都有人问 HarmonyOS 跟 Android 有什么区别?华为手机能够适配 Android 应用,那么我们做鸿蒙应用开发能够直接调用 JAR/AAR 包的 API 吗?接下我们就一起来一一验证。
JAR 的 API 调用验证
那么是否如截图显示的直接导入 JAR 包就可以调用其 API 呢?我马上就把我厂 Express SDK 的 JAR 导进来。
以下为详细步骤:
③那么问题就来了,可以在鸿蒙 resources→layout→xml 里调用 Android 的控件吗?然后我又把 Android 的 v4 包给导进来了。
在 Previewer 显示 Initial image data is Iost,说明是不支持这个包的功能。
并且说明鸿蒙是可以直接进行 JAR 的 API 调用,能调用但不一定支持该功能。
AAR 的 API 调用验证
JAR 能够直接调用 API,那 AAR 呢?重复 JAR 的导入流程导入 AAR。
哇,我的 API 呢?证明鸿蒙是不能直接调用 AAR 的方法的。
这样我们就放弃了吗?有没有其他的辅助的手段让我们能够调用 AAR 的方法。
我们知 AAR 的本质是 class.jar + res,基于 JAR 包是可以直接在鸿蒙系统上调用的,所以我们提取 AAR 中的 class.jar 是不是就可以了。
有了这个想法我们就要开始验证:
如上图验证这样是可以直接调用,但是不能每次都手动解压再导入,于是就找了第三方的(aar2jar),为了解决鸿蒙依赖 AAR 库的问题,实现的原理也是解包 AAR,再依赖其中的 class.jar。
https://gitee.com/andych008/aar2jar#https://www.jianshu.com/p/afa35b6a1098
https://github.com/orhanobut/logger
HAR 的编译过程
创建鸿蒙的项目,默认包含的就是 JAR/HAR。
HarmonyOS 库(HarmonyOS Ability Resources,简称 HAR)可以提供应用构建所需的一切内容,包括源代码、资源文件、HarmonyOS 配置文件以及第三方库。
官网(HAR 的编译流程官网链接)已经详细的讲解了编译过程,就不再累赘。
结语
以下为本次验证总结:
鸿蒙应用开发,不能直接使用 Android 上的第三方库。
可以直接引用 JAR 的 API。但不能是运行时强依赖 Android 环境的,不然只能做移植,并做一定的修改。所以不依赖 Android 的 JAR 是可以直接在鸿蒙中使用的。
鸿蒙的 gradle plugin 环境下不能直接依赖 AAR,最好的办法是重新整理 AAR 工程,编译成相应的 HAR。
AAR 运行时不依赖 Android 环境的,可以提取其中的 class.jar,并做依赖。
- END -
推荐阅读
关注公众号 | 添加作者微信 |
---|---|