一、環(huán)境配置
OpenHarmony版本:OpenHarmony 4.0 Release
編譯環(huán)境:WSL2 Ubuntu 18.04
平臺(tái)設(shè)備:RK3568
二、配置hb
OpenHarmony 代碼構(gòu)建有build.sh和hb兩種方式:
#方式一、build.sh
./build.sh --product-name rk3568 --ccache
#方式二、hb
hb set -p rk3568
hb build
下拉的4.0代碼無(wú)法直接使用hb命令
OpenHarmony_4.0_release$ hb --help
hb_error: Please call hb utilities inside source root directory
可參考搭建開(kāi)發(fā)環(huán)境-安裝編譯工具 進(jìn)行hb安裝和環(huán)境配置。
2.1、安裝hb
python3 -m pip install --user build/hb
2.2、配置環(huán)境變量
vim ~/.bashrc
#將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
#更新環(huán)境變量
source ~/.bashrc
在源碼目錄執(zhí)行"hb help",界面打印以下信息即表示安裝成功。
OpenHarmony_4.0_release$ hb help
[OHOS INFO] ----------------------------------------------------------------------------------------------------
[OHOS INFO] usage: hb build [option]
[OHOS INFO]
[OHOS INFO] optional arguments:
[OHOS INFO] -h, --help show this help message and exit
[OHOS INFO] --target-cpu {arm,arm64,x86_64,x64}
[OHOS INFO] Default:''. Help:Specifies the desired cpu architecture for the build, each may support
[OHOS INFO] different cpu architectures, run 'hb set --all' to list product all supported cpu
[OHOS INFO] architectures
[OHOS INFO] --target-os {android,ios}
[OHOS INFO] Default:''. Help:Specifies the desired os type for the build, each may support different os
[OHOS INFO] type, run 'hb set --all' to list product all supported os type
[OHOS INFO] -p PRODUCT_NAME, --product-name PRODUCT_NAME
[OHOS INFO] Default:''. Help:Build a specified product. You could use this option like this: 1.'hb build
[OHOS INFO] --product-name rk3568@hihope' 2.'hb build --product-name rk3568'
...
注:可使用以下命令卸載hb
$ python3 -m pip uninstall ohos-build
三、模塊編譯
為了編譯調(diào)試和開(kāi)發(fā)驗(yàn)證往往使用模塊化編譯替換全量編譯,節(jié)約編譯時(shí)間,提高開(kāi)發(fā)效率,OpenHarmony build.sh 和hb都支持模塊化編譯。
這里以關(guān)機(jī)彈框應(yīng)用為例。
1、通過(guò)hdc 查看system/app應(yīng)用包名或者IDE查看調(diào)出關(guān)機(jī)框log,可知關(guān)機(jī)彈框所在應(yīng)用包名為com.ohos.powerdialog
# ls -al /system/app
com.ohos.powerdialog
2、在源碼中搜索com.ohos.powerdialog包名定義出處,確定模塊對(duì)應(yīng)的源碼路徑。
可知系統(tǒng)關(guān)機(jī)彈框源碼位于:base/powermgr/power_manager/power_dialog
3、確定build-target,查看base/powermgr/power_manager/power_dialog/BUILD.gn
可知系統(tǒng)關(guān)機(jī)框模塊名power_dialog_hap
import("http://build/ohos.gni")
group("dialog_hap") {
deps = [ ":power_dialog_hap" ]
}
ohos_hap("power_dialog_hap") {
hap_profile = "entry/src/main/module.json"
deps = [
":power_dialog_js_assets",
":power_dialog_resources",
]
certificate_profile = "signature/openharmony_sx.p7b"
hap_name = "power_dialog"
subsystem_name = "applications"
part_name = "prebuilt_hap"
module_install_dir = "app/com.ohos.powerdialog"
}
...
4、模塊編譯power_dialog_hap
#使用build.sh模塊編譯power_dialog_hap
./build.sh --product-name rk3568 --build-target power_dialog_hap
#使用hb編譯power_dialog_hap
hb build -p rk3568 -T power_dialog_hap
得到hap位于:out/rk3568/obj/
base/powermgr/power_manager/power_dialog/power_dialog.hap
可發(fā)現(xiàn)out/rk3568/obj/后路徑與模塊源碼路徑對(duì)應(yīng)。
注意:
模塊編譯需模塊目錄存在BUILD.gn。
四、常用模塊編譯
4.1 編譯Full SDK
rm -rf out
./build.sh --product-name ohos-sdk
Full SDK生成目錄:out/sdk/packages/ohos-sdk/
4.2 編譯kernel
#使用build.sh編譯指定產(chǎn)品kernel
./build.sh --product-name rk3568 --build-target kernel --gn-args linux_kernel_version="linux-5.10"
4.3 編譯常見(jiàn)原生應(yīng)用
4.3.1 編譯系統(tǒng)資源應(yīng)用
#使用build.sh編譯systemres_hap
./build.sh --product-name rk3568 --build-target systemres_hap
#使用hb編譯systemres_hap
hb build -p rk3568 -T systemres_hap
得到hap位于:out/rk3568/obj/base/global/system_resources/systemres/SystemResources.hap
4.3.2 編譯性能測(cè)試應(yīng)用
#使用build.sh編譯SmartPerf
./build.sh --product-name rk3568 --build-target SmartPerf
#使用hb編譯SmartPerf
hb build -p rk3568 -T SmartPerf
得到hap位于:out/rk3568/obj/developtools/profiler/host/smartperf/client/client_ui/SmartPerf.hap
4.3.3 編譯輸入法選擇框應(yīng)用
#使用build.sh編譯input_method_choose_hap
./build.sh --product-name rk3568 --build-target input_method_choose_hap
#使用hb編譯input_method_choose_hap
hb build -p rk3568 -T input_method_choose_hap
得到hap位于:out/rk3568/obj/base/inputmethod/imf/services/dialog/input_method_choose_dialog.hap
4.3.4 編譯授權(quán)管理應(yīng)用
#使用build.sh編譯permission_manager
./build.sh --product-name rk3568 --build-target permission_manager
#使用hb編譯permission_manager
hb build -p rk3568 -T permission_manager
得到hap位于:out/rk3568/obj/applications/standard/permission_manager/permissionmanager/permission_manager.hap文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-775865.html
4.3.5 編譯關(guān)機(jī)彈框應(yīng)用
#使用build.sh模塊編譯power_dialog_hap
./build.sh --product-name rk3568 --build-target power_dialog_hap
#使用hb編譯power_dialog_hap
hb build -p rk3568 -T power_dialog_hap
得到hap位于:out/rk3568/obj/base/powermgr/power_manager/power_dialog/power_dialog.hap文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-775865.html
到了這里,關(guān)于OpenHarmony模塊化編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!