精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony-3.0 編譯構(gòu)建流程

開發(fā) 前端
早就打算研究下OH3.0的編譯框架了,最近一直在搞移植,總算有點進(jìn)展了,抽個空來分析下3.0的編譯框架。

[[437383]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

前言

OpenHarmony-2.0 編譯構(gòu)建流程

早就打算研究下OH3.0的編譯框架了,最近一直在搞移植,總算有點進(jìn)展了,抽個空來分析下3.0的編譯框架。大體看了下和2.0的差別不是特別大,OHOS3.0的打包鏡像腳本由原來2.0的build\adapter\build_image.sh 全部修改替換為 build\ohos\images\build_image.py 將打包image鏡像的部分制作成build_target,以前是通過shell腳本來調(diào)用,現(xiàn)在是通過gn和ninja來調(diào)用。主要文件在build\ohos\images這個文件夾下。沒有修改的部分就不說了,有需要的可以看我之前的帖子 這篇主要說下不一樣的地方,看OH3.0是如何將編譯好的文件打包成鏡像的。

一、增加編譯參數(shù)

3.0之后在build\build_scripts\build_common.sh 增加了 build_cmd+=" build_target=images",這句的意思約等于在執(zhí)行默認(rèn)編譯命令 ./build.sh --product-name Hi3516DV300 會有個默認(rèn)的參數(shù) --build-target images,具體流程是這樣的:

  1. build\build_scripts\build_common.sh => build\core\gn\BUILD.gn => build\ohos\images\BUILD.gn 
  2.  
  3. action_with_pydeps("${_platform}_${_image_name}_image") { 
  4.     script = "//build/ohos/images/build_image.py" 
  5.     depfile = "$target_gen_dir/$target_name.d" 
  6.     deps = [ "//build/ohos/packages:${_platform}_install_modules" ] 
  7.  
  8.     image_config_file = 
  9.     "//build/ohos/images/mkimage/${_image_name}_image_conf.txt" 
  10.     output_image_file = "$current_platform_dir/images/${_image_name}.img" 
  11.  
  12.     image_input_path = "$current_platform_dir/${_image_name}" 
  13.     if (_image_name == "userdata") { 
  14.         image_input_path = "$current_platform_dir/data" 
  15.     } 
  16.  
  17.     sources = [ 
  18.         image_config_file, 
  19.         system_module_info_list, 
  20.         system_modules_list, 
  21.     ] 
  22.     outputs = [ output_image_file ] 
  23.     args = [ 
  24.         "--depfile"
  25.         rebase_path(depfile, root_build_dir), 
  26.         "--image-name"
  27.         _image_name, 
  28.         "--input-path"
  29.         rebase_path(image_input_path, root_build_dir), 
  30.         "--image-config-file"
  31.         rebase_path(image_config_file, root_build_dir), 
  32.         "--output-image"
  33.         rebase_path(output_image_file, root_build_dir), 
  34.         "--build-image-tools-path"
  35.         rebase_path(build_image_tools_path, root_build_dir), 
  36.     ] 
  37.     if (sparse_image) { 
  38.         args += [ "--sparse-image" ] 
  39.     } 

通常情況下,gn會使用 action 運行一個腳本來生成一個文件,但是這里使用的是 action_with_pydeps,應(yīng)該也是內(nèi)置的目標(biāo)類型。查看官方手冊是這么說明的

Inputs and Depfiles

List all files read (or executed) by an action as inputs.

  • It is not enough to have inputs listed by dependent targets. They must be listed directly by targets that use them, or added by a depfile.
  • Non-system Python imports are inputs! For scripts that import such modules, use action_with_pydeps to ensure all dependent Python files are captured as inputs.

前面還定義了一個image_list,然后使用 foreach 執(zhí)行 action_with_pydeps,要生成幾個img文件,就執(zhí)行幾次action_with_pydeps。

  1. image_list = [ 
  2.   "system"
  3.   "vendor"
  4.   "userdata"
  5.   "updater"
  6. foreach(_image_name, image_list) {... ...} 

二、調(diào)用python腳本

既然知道了img鏡像是由 build\ohos\images\build_image.py 來創(chuàng)建的,那就來分析下這個python腳本。

  1. if os.path.exists(args.output_image_path): 
  2.         os.remove(args.output_image_path)           # 刪除之前生成的鏡像文件夾 
  3.     if args.image_name == 'userdata'
  4.         _prepare_userdata(args.input_path)          # 準(zhǔn)備好 userdata.img 需要的文件 
  5.     if os.path.isdir(args.input_path): 
  6.         _make_image(args) 
  7.         _dep_files = [] 
  8.         for _root, _, _files in os.walk(args.input_path): 
  9.             for _file in _files: 
  10.                 _dep_files.append(os.path.join(_root, _file)) 
  11.         build_utils.write_depfile(args.depfile, 
  12.                                   args.output_image_path, 
  13.                                   _dep_files, 
  14.                                   add_pydeps=False
  15. =================================================================== 
  16. def _make_image(args): 
  17.     if args.image_name == 'system'
  18.         _prepare_root(args.input_path)              # 準(zhǔn)備好 system.img 需要的文件 
  19.     elif args.image_name == 'updater'
  20.         _prepare_updater(args.input_path)           # 準(zhǔn)備好 updater.img 需要的文件 
  21.     image_type = "raw" 
  22.     if args.sparse_image: 
  23.         image_type = "sparse" 
  24.     mk_image_args = [ 
  25.         args.input_path, args.image_config_file, args.output_image_path, 
  26.         image_type 
  27.     ] 
  28.     env_path = "../../build/ohos/images/mkimage" 
  29.     if args.build_image_tools_path: 
  30.         env_path = '{}:{}'.format(env_path, args.build_image_tools_path) 
  31.     os.environ['PATH'] = '{}:{}'.format(env_path, os.environ.get('PATH')) 
  32.     mkimages.mk_images(mk_image_args)           # 而真正制作鏡像使用的下面的函數(shù) 
  33. =================================================================== 
  34. # build\ohos\images\mkimage\mkimages.py 
  35. def mk_images(args): 
  36.     ... ... 
  37.     if "system.img" in device: 
  38.         src_dir = build_rootdir(src_dir) 
  39.     mkfs_tools, mk_configs = load_config(config_file) 
  40.     mk_configs = src_dir + " " + device + " " + mk_configs 
  41.  
  42.     res = run_cmd(mkfs_tools + " " + mk_configs)    # 制作鏡像命令使用的是mkfs_tools 
  43. =================================================================== 
  44.     if "ext4" in mk_configs: 
  45.         fs_type = "ext4" 
  46.         mkfs_tools = "mkextimage.py"                # 而mkfs_tools根據(jù)文件系統(tǒng)類型,分別調(diào)用對應(yīng)的python腳本 
  47.     elif "f2fs" in mk_configs: 
  48.         mkfs_tools = "mkf2fsimage.py" 
  49.         fs_type = "f2fs" 
  50. =================================================================== 
  51. # build\ohos\images\mkimage\mkextimage.py # 制作ext4文件系統(tǒng) 
  52. def build_run_mke2fs(args): 
  53.     .. ... 
  54.     blocks = int(int(args.fs_size) / BLOCKSIZE) 
  55.     mke2fs_cmd += ("mke2fs " + str(mke2fs_opts) + " -t " + FS_TYPE + " -b " 
  56.                    + str(BLOCKSIZE) + " " + args.device + " " + str(blocks)) 
  57.     res = run_cmd(mke2fs_cmd)       # mke2fs:制作文件系統(tǒng) 
  58. =================================================================== 
  59. def build_run_e2fsdroid(args): 
  60.     ... ... 
  61.     e2fsdroid_cmd += ("e2fsdroid" + e2fsdroid_opts + " -f " + 
  62.                       args.src_dir + " -a " + args.mount_point + 
  63.                       " " + args.device) 
  64.     res = run_cmd(e2fsdroid_cmd)    # e2fsdroid:制作鏡像文件   

無論前面執(zhí)行了什么操作,最終都是為了執(zhí)行mke2fs、e2fsdroid。

關(guān)于這兩個命令:

mke2fs:Linux下的命令,用于建立ext文件系統(tǒng)。

e2fsdroid:來自三方庫,third_party\e2fsprogs。詳情可以參考 http://e2fsprogs.sourceforge.net

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-06-28 09:38:50

鴻蒙HarmonyOS應(yīng)用

2024-07-26 16:39:33

鴻蒙系統(tǒng)開源構(gòu)建系統(tǒng)

2023-06-12 15:43:44

鴻蒙智能家居開發(fā)

2022-02-21 14:49:26

OpenHarmon操作系統(tǒng)鴻蒙

2021-09-16 15:04:28

鴻蒙HarmonyOS應(yīng)用

2024-01-03 15:31:16

網(wǎng)格布局ArkTSGrid

2023-07-17 16:13:21

組件模塊開發(fā)的鴻蒙

2021-10-09 10:12:39

鴻蒙HarmonyOS應(yīng)用

2023-08-11 14:06:58

鴻蒙Windows

2022-01-11 15:41:18

鴻蒙HarmonyOS應(yīng)用

2023-07-27 14:38:33

開源鴻蒙

2021-12-03 09:50:39

鴻蒙HarmonyOS應(yīng)用

2021-10-14 15:48:28

鴻蒙HarmonyOS應(yīng)用

2021-07-27 11:54:51

windows系統(tǒng)OpenHarmony

2022-05-07 16:13:59

DevEcoTool鴻蒙

2022-05-27 15:04:53

鴻蒙操作系統(tǒng)

2023-02-09 15:28:19

鴻蒙編譯速度

2023-04-26 15:29:35

NAPI模塊鴻蒙

2023-07-28 15:32:26

鴻蒙操作系統(tǒng)

2023-02-28 15:49:09

鴻蒙應(yīng)用開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

日韩美女福利视频| 日韩一区二区视频| 亚洲欧洲另类精品久久综合| 国产精品国产一区二区三区四区| 综合久久99| 亚洲国产美女久久久久| 一区二区三区国产免费| 欧美男男video| 久久久久久久国产精品影院| 91久久久久久久久| 波多野结衣视频网站| 亚洲澳门在线| 亚洲男人第一网站| 特黄特色免费视频| 99久久综合国产精品二区| 一区二区三区四区国产精品| 欧洲精品国产| 天天干天天摸天天操| 激情六月婷婷久久| 日本伊人精品一区二区三区介绍| 欧洲第一无人区观看| 禁果av一区二区三区| 一区二区三区| 酒色婷婷桃色成人免费av网| 欧美黄色免费看| 成熟丰满熟妇高潮xxxxx视频| 中文字幕无码毛片免费看| 伦理在线一区| 国产精品电影一区二区| 久久精品国产精品国产精品污 | 日韩夫妻性生活xx| 亚洲韩国欧洲国产日产av | 亚洲精品第一| 欧美在线短视频| 欧美亚洲一二三区| 99爱在线视频| 亚洲一区视频在线| 99久久久无码国产精品性色戒| 黄色在线视频观看网站| 成人av在线播放网站| 444亚洲人体| 国产乱码一区二区| 久草精品在线观看| 国产精品一区二区三区在线播放| 性无码专区无码| 在线免费观看欧美| 久久久女女女女999久久| 丰满少妇高潮久久三区| 亚洲成人最新网站| 美女999久久久精品视频| 波多野结衣欲乱| 色综合久久网| 视频在线一区二区| 国产精品麻豆一区| 久久久9色精品国产一区二区三区| 国产亚洲精品久久久久久| 成人乱码一区二区三区av| 蜜桃精品噜噜噜成人av| 国产视频久久久久| 无码人妻精品一区二区三区温州 | 欧美精品一区二区久久婷婷| 国产精品日日摸夜夜爽| 综合欧美亚洲| 亚洲福利在线视频| 中文字幕5566| 国内精品久久久久久久影视简单 | 欧美日韩亚洲综合一区二区三区激情在线| 欧美性受xxxx狂喷水| 99久久er热在这里只有精品15| 精品福利影视| 精品视频三区| 中文字幕一区日韩精品欧美| 一区二区三区一级片| 制服丝袜中文字幕在线| 午夜久久久久久| av天堂永久资源网| 成人亚洲网站| 日韩欧美电影一二三| 中文字幕一区二区人妻电影丶| 日韩av中文字幕一区| 亚洲人成在线观看| 中文字幕美女视频| 一区在线观看| 国产精品一二三在线| 国产哺乳奶水91在线播放| 成人丝袜高跟foot| 日本午夜精品一区二区| 精品国产99久久久久久| 亚洲成人免费在线观看| 成人在线观看黄| 亚洲美女色播| 亚洲护士老师的毛茸茸最新章节| 扒开jk护士狂揉免费| 希岛爱理av一区二区三区| 欧美精品video| 一级黄色av片| 国产成人在线网站| 鲁鲁狠狠狠7777一区二区| 欧美激情午夜| 欧美视频二区36p| 91大神免费观看| 亚洲性视频大全| 精品中文字幕乱| 中文字幕一区二区人妻视频| 国产电影精品久久禁18| 欧美亚洲免费在线| 色呦呦在线免费观看| 91久久国产综合久久| 91精品人妻一区二区三区蜜桃2| 精品在线观看入口| 色综合91久久精品中文字幕| 国模私拍一区二区| 99国产欧美久久久精品| 91免费视频黄| 国产精品videossex撒尿| 精品久久人人做人人爰| 久草视频手机在线| 日韩在线一区二区三区| 国产无套精品一区二区| 国精产品一区| 欧美午夜精品免费| 熟女人妻在线视频| 亚洲午夜精品久久久久久app| 国产精品一二三视频| 天堂在线免费av| 亚洲中国最大av网站| 亚洲一区精品视频在线观看| 视频精品在线观看| 91精品国产成人www| 国产黄色美女视频| 亚洲欧美日韩久久| 五月天激情播播| 欧美日韩国产免费观看视频| 欧美亚洲激情在线| 欧美一级视频免费| 亚洲国产成人tv| 天天操夜夜操很很操| 亚洲h色精品| 国产日韩在线亚洲字幕中文| 黄色片在线免费看| 日韩欧美在线观看| 麻豆国产精品一区| 国产日韩欧美在线播放不卡| 国产精品免费视频一区二区| 黑人极品ⅴideos精品欧美棵| 日韩视频免费观看高清完整版在线观看 | 亚洲日本va在线观看| 亚洲一二三不卡| 欧美肥老太太性生活| 国产欧美日韩专区发布| jyzzz在线观看视频| 欧美性极品少妇| 正在播放国产对白害羞| 捆绑调教美女网站视频一区| 亚洲成色www久久网站| 国产福利亚洲| 精品久久久av| www.av网站| 亚洲高清久久久| 国产精品一级黄片| 日本在线观看不卡视频| 亚洲一一在线| 国产精品亚洲欧美日韩一区在线 | 自拍一区在线观看| 亚洲人成伊人成综合网久久久 | 日韩尤物视频| 国外成人福利视频| 久久亚洲国产成人| 欧美一级在线免费观看 | 中文字幕在线观看免费| 中文字幕一区二区在线播放| 潘金莲一级淫片aaaaa| 亚洲第一黄色| 日本一区二区在线| 日韩一区二区三区四区五区 | 久久国产精品电影| 男人天堂网在线视频| 欧美性xxxx极品hd欧美风情| 中文字幕av久久爽一区| 国产在线精品一区在线观看麻豆| 欧美极品少妇无套实战| 天堂综合网久久| 国产日本欧美在线观看| 欧美韩日亚洲| 一个人www欧美| 国产日韩欧美一区二区东京热| 亚洲一区视频在线观看视频| 成都免费高清电影| 国产精品99久久久久久有的能看| 91九色在线观看视频| 99热国内精品| 国产美女99p| 欧美亚洲黄色| 97超级碰碰碰| 黄视频网站在线| 亚洲福利在线视频| 国产又粗又长又黄| 欧美色xxxx| 色在线观看视频| 久久久久国色av免费看影院| 天天爽夜夜爽视频| 日韩中文字幕麻豆| 无码中文字幕色专区| 日韩欧美中文| 欧美国产一二三区| 一区二区网站| 国产免费一区二区三区在线观看| 里番在线播放| 日韩视频在线观看免费| 色资源在线观看| 日韩欧美在线综合网| 中文字幕欧美人妻精品一区蜜臀| 亚洲成av人片在线观看| 四虎884aa成人精品| 久久久美女艺术照精彩视频福利播放| www.桃色.com| 蜜桃精品在线观看| 国产黄色特级片| 亚洲高清自拍| 国产精品日韩三级| 亚洲一本二本| 中文字幕欧美人与畜| 免费av一区| 久久精品magnetxturnbtih| 亚洲一区二区三区免费| 成人亚洲综合色就1024| 神马久久资源| 欧美在线播放视频| av女在线播放| 久久久久久久香蕉网| 中文字幕资源网在线观看| 神马国产精品影院av| 大地资源中文在线观看免费版| 亚洲精品福利视频| 好吊色一区二区三区| 日韩一本二本av| 99视频在线观看免费| 欧美伊人久久久久久午夜久久久久| 成年人免费高清视频| 五月婷婷综合在线| 亚洲精品视频在线观看免费视频| 一区二区三区四区不卡在线| 18岁成人毛片| 一区二区三区四区亚洲| 精品国产精品国产精品| 亚洲色图欧洲色图| 91香蕉视频在线播放| 中文字幕一区二区三区四区| 欧美特黄一级片| 亚洲天堂免费在线观看视频| 欧美日韩午夜视频| 亚洲精品成人精品456| 欧美日韩大片在线观看| 亚洲尤物在线视频观看| 日本一级淫片色费放| 五月天丁香久久| 久久精品国产成人av| 色综合天天综合网天天狠天天| 中文字幕精品无码一区二区| 在线观看日韩精品| 一道本在线视频| 欧美一级久久久久久久大片| 亚洲女人18毛片水真多| 亚洲精品美女久久久| 你懂的在线看| 色爱精品视频一区| 色在线视频网| 欧美自拍视频在线| 久久人体av| 97超碰人人看人人| 四虎884aa成人精品最新| 日本欧洲国产一区二区| 亚洲国产精品综合久久久 | 日日夜夜精品免费视频| 日韩爱爱小视频| 国产成人精品一区二区三区四区| 日韩av无码一区二区三区不卡| 久久综合色天天久久综合图片| 国产福利在线导航| 一区二区三区av电影| 永久免费无码av网站在线观看| 欧美日韩亚洲综合在线| 亚洲精品久久久久avwww潮水| 亚洲精品乱码久久久久久金桔影视| 国自产拍在线网站网址视频| 久久精品最新地址| 亚洲十八**毛片| 成人黄色午夜影院| 啪啪激情综合网| 成年人免费观看的视频| 日韩午夜av在线| www.久久av.com| wwwwww.欧美系列| av激情在线观看| 色综合av在线| 亚洲成a人片77777精品| 国产亚洲美女精品久久久| 肉肉视频在线观看| 国产精品久久久久aaaa九色| 亚洲午夜免费| 亚洲欧洲精品一区二区| 亚洲一区二区三区高清不卡| 可以看污的网站| 久久久一区二区| 久久久久亚洲AV| 欧美欧美欧美欧美| 你懂的好爽在线观看| 欧美国产第一页| 亚洲天堂网站| 亚洲国产精品久久久久久女王| 亚洲第一黄色| 在线观看免费看片| 国产精品美女久久福利网站| 久久久久久久久影院| 91精品国产色综合久久不卡电影| 国产小视频免费在线网址| 久久久久久有精品国产| 国产精一区二区| 亚洲精品一区二区三区四区五区| 一区二区三区国产在线| 日本成人在线免费观看| 亚洲欧洲成人av每日更新| 超碰在线97观看| 亚洲女人天堂av| 97人澡人人添人人爽欧美| 91免费电影网站| 欧美肥老太太性生活| 国产小视频精品| 国产午夜精品久久久久久久| 日韩黄色一级大片| 精品sm在线观看| 麻豆福利在线观看| 999视频在线免费观看| 888久久久| 91日韩精品视频| 国产精品成人免费在线| 一级黄色免费片| 色哟哟亚洲精品一区二区| 澳门av一区二区三区| 欧美在线播放一区| 久久最新视频| 亚洲最大成人综合网| 在线观看视频一区二区欧美日韩 | 美日韩在线视频| 国产一区 二区| 久久久久久久久影视| 国产美女在线观看一区| 欧美卡一卡二卡三| 精品久久久久久久人人人人传媒| 青草视频在线免费直播| 国产精品国产精品国产专区不卡| 国产一在线精品一区在线观看| 中文字幕在线观看视频www| 亚洲精选免费视频| 六月丁香色婷婷| 欧美一级在线亚洲天堂| 欧美美女在线| 亚洲国产日韩欧美在线观看| 中文字幕中文在线不卡住| 国产三级精品在线观看| 色在人av网站天堂精品| 欧美福利在线播放网址导航| 9久久9毛片又大又硬又粗| 久久亚洲捆绑美女| 国产偷人爽久久久久久老妇app| 日韩在线视频网站| 玖玖玖电影综合影院| 精品视频免费在线播放| 久久久久久影视| 97精品久久人人爽人人爽| 久久夜色撩人精品| 国产精品99久久免费观看| 久久精品一区二| 最新久久zyz资源站| 秋霞视频一区二区| 国产成人精品久久久| 99热在线成人| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 日韩精品专区在线影院重磅| av在线最新| 亚洲v国产v| 国产成人高清在线| 波多野结衣二区三区| 欧美成人黄色小视频| 日韩精品欧美大片| 中文字幕第一页在线视频| 婷婷一区二区三区| 在线观看av黄网站永久| 国产精品伊人日日| 久久电影国产免费久久电影| 国产精品第九页| 最近2019中文字幕一页二页| 成人精品毛片| 污污的视频免费| 欧美日韩国产在线| 国产精品刘玥久久一区| 青青草久久网络| 成人一区二区视频| 一级特黄录像免费看| 69久久夜色精品国产69|