一直都有人問 HarmonyOS 跟 Android 有什么區(qū)別?華為手機(jī)能夠適配 Android 應(yīng)用,那么我們做鴻蒙應(yīng)用開發(fā)能夠直接調(diào)用 JAR/AAR 包的 API 嗎?接下我們就一起來一一驗(yàn)證。
JAR 的 API 調(diào)用驗(yàn)證
使用 HarmonyOS 開發(fā)工具 DevEco Studio 創(chuàng)建一個(gè)項(xiàng)目,我們到 entry→build.gradle→查看 dependencies 的引用包含了 JAR / HAR。
那么是否如截圖顯示的直接導(dǎo)入 JAR 包就可以調(diào)用其 API 呢?我馬上就把我廠 Express SDK 的 JAR 導(dǎo)進(jìn)來。
以下為詳細(xì)步驟:
①ZegoExpressEngine.jar 包放置到 project 中的 Entry 目錄下 libs 文件夾中,在 gradle 中增加 sync project。 ②在程序調(diào)用該庫(ZegoExpressEngine.jar)的 API。如圖顯示說明是可以直接調(diào)用 JAR 的 API 的:
③那么問題就來了,可以在鴻蒙 resources→layout→xml 里調(diào)用 Android 的控件嗎?然后我又把 Android 的 v4 包給導(dǎo)進(jìn)來了。
resources→layou→長按右鍵→new→Layout Resource File:
如上圖所示,鴻蒙的 Layout 是不允許創(chuàng)建 Android 控件的。于是我就手動輸入,看會有什么效果:
在 Previewer 顯示 Initial image data is Iost,說明是不支持這個(gè)包的功能。
并且說明鴻蒙是可以直接進(jìn)行 JAR 的 API 調(diào)用,能調(diào)用但不一定支持該功能。
如,不支持 Android 的控件,它有自己的組件來進(jìn)行 UI 的渲染。
AAR 的 API調(diào)用驗(yàn)證
JAR 能夠直接調(diào)用 API,那 AAR 呢?重復(fù) JAR 的導(dǎo)入流程導(dǎo)入 AAR。
entry→build.gradle→dependencies 的引用添加 AAR:
以為很完美,這樣就可以直接調(diào)用了:
哇,我的 API 呢?證明鴻蒙是不能直接調(diào)用 AAR 的方法的。
這樣我們就放棄了嗎?有沒有其他的輔助的手段讓我們能夠調(diào)用 AAR 的方法。
我們知 AAR 的本質(zhì)是 class.jar + res,基于 JAR 包是可以直接在鴻蒙系統(tǒng)上調(diào)用的,所以我們提取 AAR 中的 class.jar 是不是就可以了。
有了這個(gè)想法我們就要開始驗(yàn)證:
①把 AAR 后綴修改為 zip 后解壓 ,找到 class.jar 并修改昵稱為 cardview.jar。
如上圖驗(yàn)證這樣是可以直接調(diào)用,但是不能每次都手動解壓再導(dǎo)入,于是就找了第三方的(aar2jar),為了解決鴻蒙依賴 AAR 庫的問題,實(shí)現(xiàn)的原理也是解包 AAR,再依賴其中的 class.jar。
②aar2jar,打開鏈接有依賴流程就不再累贅,新測有效。
https://gitee.com/andych008/aar2jar#https://www.jianshu.com/p/afa35b6a1098
如上圖,成功調(diào)用了 logger 的 AAR 庫:https://github.com/orhanobut/logger
HAR 的編譯過程
創(chuàng)建鴻蒙的項(xiàng)目,默認(rèn)包含的就是 JAR/HAR。
HarmonyOS 庫(HarmonyOS Ability Resources,簡稱 HAR)可以提供應(yīng)用構(gòu)建所需的一切內(nèi)容,包括源代碼、資源文件、HarmonyOS 配置文件以及第三方庫。
官網(wǎng)(HAR 的編譯流程官網(wǎng)鏈接)已經(jīng)詳細(xì)的講解了編譯過程,就不再累贅。
把我廠的 ZegoExpressEngine.jar 放到 HarmonyOS Library 編譯:
生成的 har 再放到項(xiàng)目的 libs 進(jìn)行驗(yàn)證,是可以正常調(diào)用的,說明 har 編譯成功。
結(jié)語
以下為本次驗(yàn)證總結(jié):
鴻蒙應(yīng)用開發(fā),不能直接使用 Android 上的第三方庫。
可以直接引用 JAR 的 API。但不能是運(yùn)行時(shí)強(qiáng)依賴 Android 環(huán)境的,不然只能做移植,并做一定的修改。所以不依賴 Android 的 JAR 是可以直接在鴻蒙中使用的。
鴻蒙的 gradle plugin 環(huán)境下不能直接依賴 AAR,最好的辦法是重新整理 AAR 工程,編譯成相應(yīng)的 HAR。
AAR 運(yùn)行時(shí)不依賴 Android 環(huán)境的,可以提取其中的 class.jar,并做依賴。
責(zé)任編輯:haq
-
Android
+關(guān)注
關(guān)注
12文章
3936瀏覽量
127416 -
安卓
+關(guān)注
關(guān)注
5文章
2130瀏覽量
57212 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2634瀏覽量
66353
原文標(biāo)題:鴻蒙OS和Android到底有什么區(qū)別?
文章出處:【微信號:Huawei_Kirin,微信公眾號:華為麒麟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論