日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

鸿蒙Harmony谈了这么久,和Android到底啥区别?

發布時間:2024/1/18 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鸿蒙Harmony谈了这么久,和Android到底啥区别? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

國產操作系統鴻蒙代碼終于開源,IDE也一并公開。迫不及待地安裝了IDE并嘗了鮮。

?

將按照鴻蒙OS介紹,IDE介紹,安裝及運行,項目構成,APP基本組件,APP可執行文件這幾個方面來講述我自己的開發體驗。

?

HarmonyOS

基于微內核的跨平臺分布式操作系統,最新為2.0。不再停留在PPT上,公開了源碼和IDE。

官方的資料我一并羅列下來。

鴻蒙OS的官方介紹:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/harmonyos-overview-0000000000011903

鴻蒙OS在gitee上的主頁:https://openharmony.gitee.com/openharmony

內核源碼的地址:https://openharmony.gitee.com/openharmony/kernel_liteos_a

華為開發者論壇:https://developer.huawei.com/consumer/cn/forum/home

?

IDE DevEco Studio

為鴻蒙OS開發的IDE名叫DevEco Studio,基于IntelliJ IDEA Community開源版本打造。界面及開發流程和Android Studio基本一致,極易上手。

下載地址:https://developer.harmonyos.com/cn/develop/deveco-studio

官網文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387

?

DevEco Studio安裝及運行

exe下載下來之后雙擊可以看到配置頁面。

選擇其他安裝目錄或默認選項,然后進入啟動頁面。

十來分鐘之后將提示是否下載SDK,選擇”接受“繼續。

下載成功之后將進入創建項目畫面,選擇“創建鴻蒙OS項目”繼續。

接下來需要選擇運行的硬件設備類型,目前支持電視,手表和穿戴設備三種設備類型。也可以看到預設的畫面布局,以及開發語言,目前支持JS和JAVA兩種開發語言。我們選擇“TV”設備,空畫面+JAVA開發方式,繼續。

當然需要設置項目名稱,包名及位置等信息,我們采用“HMApp”名稱繼續。

配置好之后將進入IDE主界面,并自動下載gradle等依賴包。

gradle下載及配置完畢之后,我們安裝下鴻蒙OS模擬器,暫時沒有本地的模擬器,只能使用遠程的模擬器,需要下載Resources模塊和網站登錄。我們點擊Tools->HVD Manager在打開模擬器設備列表的時候將自動下載Resources模塊。

這里必須要提一句,下載Resources模塊非常容易遇到如下的失敗,很多開發者都遇到。

解決辦法很多,沒有特別穩妥的方案。比如重啟電腦,重啟IDE,重裝IDE,刪除IDE的緩存目錄,華為開發者賬號注冊成功十分鐘之后再試等等。反正多試幾次終究能成功。

下載成功之后還需要登錄華為開發者賬號,才可以啟動遠程模擬器。IDE將自行啟動默認瀏覽器驗證賬號。在登錄成功之后需要“允許”,將看到登錄成功的提示。

這之后我們返回IDE,將看到底部的“login success”的提示。然后我們就可以在HVD Manager列表里啟動模擬器。

接著運行我們的代碼,可以看到成功部署到了遠程模擬器上。

?

項目構成

我們看一下鴻蒙APP的項目構成,并和Android Studio進行對比。

通過仔細對比,發現結構大體是類似的,在主體代碼邏輯模塊有著明細區別。

1,DevEco將配置清單格式由xml改為json,可能解析起來更為高效。

2,將資源文件分類為存放媒體資源的media目錄,存放字符內容的element目錄以及存放預設資源的rawfile目錄。相比Android原生的資源目錄分類更加簡潔明了。只是資源文件的尺寸適配,版本適配,國際化適配需要怎么區分開來呢?

3,源文件的幾大組件的實現類改了,名字看起來都有些相似,需要看源碼才能辨別。

APP基本組件

官方的API說明:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852

為了搞清楚APP基本組件和Android的區別,我們需要查看源碼的實現。我將總結出來的鴻蒙OS的APP組件大致的類圖貼出來。

Android原生的Application,Activity及Service三者的類圖也一并貼上。

可以看到鴻蒙OS的Ability,AbilitySlice和AbilityPackage組件都繼承自同一個父類AbilityContext。而且Context并不像Android,而是個接口。

具體到方法API的區別總結一下,初步感覺是這樣的。

可以看到大部分API都是類似的,只是名稱上的細微差別,說明組件的設計思路基本一致。但是我們也看到鴻蒙OS出現了一些Android并不存在的API。

比如Ability提供了停止Ability的stopAbility(),設置是否支持側滑消失的setSwipeToDismiss(),設置路由主入口的setMainRoute(),用來指定先啟動的AbilitySlide實例。

比如AbilitySlice提供了開啟,停止和獲取Ability實例的startAbility(),stopAbility()和getAbility(),同時還提供了設置UI視圖的setUIContent()。

AbilitySlice可以直接展示視圖,而Android的Service不可以直接展示視圖,需要依賴WindowManager去添加Window。再結合官網API的說明,我們可以斷定鴻蒙OS的AbilitySlice并不同于Android的Service,它只是Ability的UI展示的一個補充,一個部分而已,更像是Fragment。上述表格的對比維度并不準確,不能直接將AbilitySlice和Service進行對比。

我們還發現一個細節,Ability和AbilitySlice在提供了onConfigurationUpdated()以外都提供了監聽屏幕方向變化的onOrientationChanged()。為何將屏幕方向的變化單獨處理,比較微妙。

?

上述表格并未展示的一點是,Ability和AbilitySlice都提供了connectAbility(Intent intent, IAbilityConnection conn)和disconnectAbility(IAbilityConnection conn)去綁定和解綁Ability。但是只有Ability提供了onConnect(Intent intent)和onDisconnect(Intent intent)去處理綁定和解綁的回調。

可以知道AbilitySlice也可以參與綁定組件但只有它依附的Ability可以處理綁定和解綁的回調。

可以發現這和Android完全不一樣,Android是Activity通過bindService()和unbindService()去綁定和解綁Service,Service提供了onBind()和onUnbind()去處理綁定和解綁請求。

總結來說,

Android上活動和服務是兩個不一樣的概念,活動提供和用戶交互的UI,服務提供后臺任務的執行。活動可以啟動和停止服務,也可以綁定,遠程調度和解綁服務。他們兩者的實現類也是分開的。

而鴻蒙OS則將活動和服務整合,統稱為抽象的"能力",由實現類Ability來統一管理。需要展示UI交互的時候,它就是活動;需要執行后臺任務的話它就是服務。當然,因為是Ability的緣故,服務擁有了在需要交互時直接展示UI的便利。

必須指出的一點是,雖然將前臺活動和后臺服務進行整合是個好想法,但很多概念容易混淆,進而導致生命周期的管理混亂。在開發的過程中也極易出錯。尤其對于習慣了Activity和Service兩大概念的Android開發者來說,需要好好適應一下。。。

APP可執行文件

鴻蒙OS編譯出來的應用程序格式為hap,全稱是harmony application package?和APK一樣也是壓縮包,改名之后解壓下來如圖。有一個同名的APK文件。。。

和一般APK的內容DIFF一下。

我們再把APK文件解壓下來和一般的APK對比一下,結構和名稱完全一致。

HAP文件內置APK文件當然是為了兼容Android系統,便于系統生態的營造。

具體怎么兼容?我猜想有兩個可能性。

1,鴻蒙OS底層仍然是像Android一樣,暫時通過PMS和PackageInstaller解析和安裝APK文件。所以內置了APK文件,外部的json只是額外配置和補充。

2,鴻蒙OS完全有自己的HAP格式解析和安裝流程。這個HAP里內置的APK是為了方便HAP能安裝和運行到Android OS上去的。這樣可以方便鴻蒙開發者開發的APP可以不用修改代碼直接運行到Android設備上。具體怎么實現呢,比如HMS的App Gallery分發HAP格式到手機里的時候,可以自動解壓出來APK到手機上,然后執行和APK一樣的流程。

這是我的猜想,歡迎大家探討。

?

從IDE的安裝和使用來看,目前還有很多需要優化的地方。

比如每次啟動HVD都需要登錄,比如運行APP的日志從出不來,比如沒有體用本地模擬器等等。

羅馬也不是一天建成的,我們需要保持積極的心態去嘗試和反饋,給華為開發者一些時間。這樣大家才能不斷進步。

?

鴻蒙OS的IDE,組件設計,以及可執行文件構成,和Android有著相似之處卻又有差異頻頻。

這種貌合神離的方式既能在生態營造上取巧,又能樹立自己的風格,無奈之中透著倔強。

到底孰優孰劣尚無法評判,只能把問題交給時間和用戶。

此刻我只想祝愿鴻蒙OS越來越好!

?

寫于20200926深夜。


原創不易,如果本篇文章引起你的思考和興趣,歡迎點贊和關注。如果想要了解更多更全信息,掃碼關注博主公眾號TechMerger


?

總結

以上是生活随笔為你收集整理的鸿蒙Harmony谈了这么久,和Android到底啥区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。