成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙HarmonyOS單模塊編譯與源碼導讀

開發 OpenHarmony
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[381069]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

我這里以3518的開發板為例進行講解,3516的也是通用的。

下面是之前全量編譯的腳本:

  1. python build.py ipcamera_hi3518ev300 -b debug 

HarmonyOS最初只能支持全量編譯的方式,這種方式最大的弊端就是我們在系統源碼上開發一個用戶態程序,每次都需要全量編譯好系統之后進行鏡像的燒錄,每次編譯加燒錄少說需要15分鐘時間,對于我們開發測試及其消耗時間,試想下每次就是想加入一行log調試下這么費勁會多么麻煩。

還好,后面隨著HarmonyOS的源碼更新,開始支持用戶態程序的單模塊編譯了,編譯的腳本如下:

  1. python build.py ipcamera_hi3518ev300 -T //applications/sample/camera/app:camera_app 

這里以單獨編譯HarmonyOS自帶的HelloWorld項目為例,這個-T參數非常重要,它就是代表單模塊編譯的,//applications/sample/camera/app只的要編譯的模塊的絕對路徑,camera_app為要編譯的模塊名稱。

這里先結合HarmonyOS源碼講下-T參數的由來,如果各位是通過下載壓縮包的方式下載的官方的code1.0的源碼壓縮包解壓的話,肯定是不支持該參數的,也就是說不支持單模塊編譯。下面來看下該參數是在什么時候更新到源碼庫的吧,首先我們去gitee上找到編譯構建框架所在的代碼倉,如下圖:


然后,我們查看該倉庫下的commit記錄,然后就可以找到下面的關鍵記錄。


看commit的日志已經很明確了這里加入了單模塊構建,下面我們打開該commit記錄仔細看看具體修改了什么。


看到這里,大家就知道這個-T參數怎么來的了吧,為了讓你的代碼支持單模塊編譯,趕緊去git更新下代碼吧,如果下載code1.0離線代碼的也不用著急,可以直接把build倉下的最新代碼全部下載下來替換之前的build倉即可。

下面再來講講前面單模塊編譯最后面的那個模塊名稱camera_app怎么來的吧,關于用戶態程序如何編譯的,建議大家好好看看官方源碼的“用戶程序框架”倉下的介紹,絕對會受益良多。我這里挑重點講,首先是在//build/lite/product/ipcamera_hi3518ev300.json這個文件中進行了用戶程序編譯的相關配置,可以理解為一個配置清單,告訴系統哪些用戶態程序需要參與編譯。我們可以在里面找到如下配置:

  1.   "name""applications"
  2.   "component": [ 
  3.     { "name""camera""dir""//applications/sample/camera/app:camera_app""features":[] }, 
  4.     { "name""communication""dir""//applications/sample/camera/communication:sample""features":[] } 
  5.   ] 
  6. }, 

 看到dir后面的配置就自然會聯想到我們之前-T后面的參數為何要使用它了吧,那么最后的冒號后面的camera_app參數又從哪里來呢?

那么這里首先要對linux下的c語言編譯有一定了解才行了,大家如果看不懂后面的可以先去補習下Makefile和gn的知識。

這里每個用戶態程序都是通過gn文件配置進行編譯的,我們先在源碼目錄下找到這個模塊路徑,如下圖:


哈哈,大家可能會疑惑我咋是用idea在看代碼,因為本人電腦沒安裝source insight,加上本人最精通的技術是java和Android,所以使用idea習慣了,一個快速檢索功能足夠我閱讀系統源碼了。

這里我們看到了BUILD.gn腳本,打開瞅瞅,可以看到如下關鍵代碼:

  1. lite_component("camera_app") { 
  2.     target_type = "executable" 
  3.  
  4.     features = [ 
  5.         ":hello_world"
  6.     ] 

 之前調用的參數模塊名稱camera_app就是在這里配置的。

下面簡單列舉一個gn的一個標準的helloworld用法,如下:

  1. executable("hello_world") { 
  2.   sources = [ 
  3.     "hello_world.c"
  4.   ] 

后面我在講如何創建一個獨立的用戶態程序會編寫這個gn文件和json文件。本篇已經夠長了,就放在下一篇博客講解了。

看系統源碼確實還是很有意思的,只奈工作太忙沒有時間看。。。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-12-05 08:41:39

Redis調試環境源碼

2014-08-19 10:30:30

Swift源碼OpenStack架構

2012-02-02 13:04:50

JavaSpring

2021-03-11 11:14:39

鴻蒙HarmonyOS應用

2023-08-09 18:26:02

光纖綜合布線

2018-03-13 12:46:41

單模多模光纖

2021-08-17 14:39:00

鴻蒙HarmonyOS應用

2013-05-28 10:52:07

Android開發移動開發移動應用

2023-08-29 15:45:20

單模光纖多模光纖

2021-05-18 14:25:30

Linux運維Linux系統

2011-03-14 13:51:00

iptables編譯

2009-12-03 17:43:27

Linux服務器

2013-05-28 11:04:42

Android開發Android編譯源碼編譯

2009-11-30 16:38:30

Android

2025-06-13 08:15:00

光模塊網絡光纖

2018-01-18 23:10:32

單模光纖多模光纖光纖

2020-10-12 11:33:00

鴻蒙

2009-12-17 15:28:32

內核模塊編譯

2009-04-21 11:27:52

MVCJSPJDBC

2009-12-30 09:22:01

Ubuntu編譯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人视频网站 | 成人亚洲综合 | 影音av| 国产精品精品久久久 | 91综合网| 欧美男人天堂 | 日韩三片 | 精品视频一区二区 | 国产精品一区久久久 | 亚洲 中文 欧美 日韩 在线观看 | 欧美色影院 | 成人九色 | 日韩视频免费看 | 亚洲视频免费在线观看 | 国产亚韩 | aaaaaaa片毛片免费观看 | 国产1区2区在线观看 | www.久| 全部免费毛片在线播放网站 | 玖玖视频国产 | 午夜电影网 | 成人免费视频网站在线看 | 国产高清一区二区三区 | 欧美成人影院在线 | av网站在线免费观看 | 日韩a视频 | 亚洲午夜视频在线观看 | 偷牌自拍 | 国产精品久久久久久妇女 | 久久五月婷 | 最新中文字幕在线播放 | 久久精品性视频 | 亚洲国产一区二区视频 | 久久久久国产一区二区三区 | 日韩视频精品 | 精品在线观看一区 | 羞羞视频免费在线 | 天堂一区二区三区 | 亚洲www啪成人一区二区 | 大乳boobs巨大吃奶挤奶 | 国产一区二|