当前位置:首页 >焦点 >跟着小白一起学鸿蒙—如何编译Hap程序(十七) 对程序本身的编译没有影响

跟着小白一起学鸿蒙—如何编译Hap程序(十七) 对程序本身的编译没有影响

2024-06-28 10:26:42 [百科] 来源:避面尹邢网

跟着小白一起学鸿蒙—如何编译Hap程序(十七)

作者:王石 胡瑞涛 系统 OpenHarmony 本篇我们来学习如何在鸿蒙环境下编译Hap程序。小白

​​想了解更多关于开源的起学内容,请访问:​​

跟着小白一起学鸿蒙—如何编译Hap程序(十七) 对程序本身的编译没有影响

​​51CTO 开源基础软件社区​​

跟着小白一起学鸿蒙—如何编译Hap程序(十七) 对程序本身的编译没有影响

​​https://ost.51cto.com​​

跟着小白一起学鸿蒙—如何编译Hap程序(十七) 对程序本身的编译没有影响

安装使用说明(Open-Harmony)

在开源鸿蒙系统下

  • 蓝牙专项应用程序路径为:foundation/communication/bluetooth/test/example/BluetoothTest
  • 目录结构
.
├── example
│ ├── BluetoothTest
│ │ ├── build-profile.json5
│ │ ├── hvigorfile.js
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── BUILD.gn
│ │ ├── entry/src/main
│ │ │ ├── config.json
│ │ │ ├── ets
│ │ │ │ ├── Component
│ │ │ │ ├── MainAbility
│ │ │ │ │ ├── app.ets
│ │ │ │ │ ├── controller
│ │ │ │ │ ├── model
│ │ │ │ │ ├── pages
│ │ │ │ │ └── res
│ │ │ │ │ └── image
│ │ │ │ ├── MainAbility2
│ │ │ │ └── Utils
│ │ │ └── resources
│ │ │ └── base
│ │ │ ├── element
│ │ │ └── media
│ │ └── signature
├── fuzztest
├── moduletest
└── unittest
  • 在开源鸿蒙下的编译,是程序套用了原本系统中编写好的hap程序编译模板,因此保留了一些模板中的小白结构,如:MainAbility2 和config.json中的起学js语句;对程序本身的编译没有影响。
  • 在bundle.json中添加编译命令。鸿蒙何编
路径为:foundation/communication/bluetooth/bundle.json
命令为:
"test": [
...
"//foundation/communication/bluetooth/test/example/example_btTest:BluetoothTest"
]
  • 添加BUILD.gn
foundation/communication/bluetooth/test/example/BluetoothTest/BUILD.gn
import("//test/xts/tools/build/suite.gni")
ohos_hap("BluetoothTest") {
hap_profile = "entry/src/main/config.json"
hap_name = "BluetoothTest"
subsystem_name = XTS_SUITENAME
final_hap_path =
"${ SUITES_OUTPUT_ROOT}/${ XTS_SUITENAME}/testcases/${ hap_name}.hap"
deps = [
":bluetooth_resources",
":bluetooth_ts_assets",
]
certificate_profile = "signature/auto_ohos_default_com.ohos.bttest.p7b"
}

ohos_js_assets("bluetooth_ts_assets") {
source_dir = "entry/src/main/ets"
hap_profile = "entry/src/main/config.json"
ets2abc = true
}

ohos_resources("bluetooth_resources") {
sources = [ "entry/src/main/resources" ]
hap_profile = "entry/src/main/config.json"
}
  • 创建signature文件夹,添加签名文件。小白

路径为:foundation/communication/bluetooth/test/example/example_btTest/signature
签名文件为:Dev-Eco自动签名生成的文件:auto_ohos_default_com.ohos.bttest.p7b

  • config.json
{ 
"app": {
"vendor": "samples",
"bundleName": "ohos.samples.bttest",
"version": {
"code": 1000000,
"name": "1.0.0"
},
"apiVersion": {
"compatible": 8,
"target": 8
}
},
"deviceConfig": { },
"module": {
"mainAbility": ".MainAbility",
"deviceType": [
"default",
"phone"
],
"reqPermissions": [
{
"reason": "",
"name": "ohos.permission.DISCOVER_BLUETOOTH"
},
{
"reason": "",
"name": "ohos.permission.USE_BLUETOOTH"
},
{
"name": "ohos.permission.LOCATION"
}
],
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"orientation": "unspecified",
"visible": true,
"srcPath": "MainAbility",
"name": ".MainAbility",
"srcLanguage": "ets",
"icon": "$media:icon",
"description": "$string:MainAbility_desc",
"formsEnabled": false,
"label": "$string:MainAbility_label",
"type": "page",
"launchType": "singleton"
},
{
"orientation": "unspecified",
"visible": true,
"srcPath": "MainAbility2",
"name": ".MainAbility2",
"srcLanguage": "ets",
"icon": "$media:icon",
"description": "$string:MainAbility2_desc",
"formsEnabled": false,
"label": "$string:MainAbility2_label",
"type": "page",
"launchType": "singleton"
}
],
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "ohos.samples.bttest",
"srcPath": "",
"name": ".entry",
"js": [
{
"mode": {
"syntax": "ets",
"type": "pageAbility"
},
"pages": [
"pages/homePage",
"pages/manualApiTestPage",
...
],
"name": ".MainAbility",
"window": {
"designWidth": 720,
"autoDesignWidth": false
}
},
{
"mode": {
"syntax": "ets",
"type": "pageAbility"
},
"pages": [
"pages/index"
],
"name": ".MainAbility2",
"window": {
"designWidth": 720,
"autoDesignWidth": false
}
}
]
}
}
  • 编译命令

# 全量编译
./build.sh --product-name { product_name}

# 单独编译HAP
./build.sh --product-name { product_name} --build-target BluetoothTest

  • 生成文件
  • 使用 find out -name “BluetoothTest.hap*” 查找生成文件,或者直接查看config.json所写的鸿蒙何编生成路径。
  • 将生成文件拷到本地电脑上,程序连接板子,小白使用命令hdc_std.exe install BluetoothTest进行安装。起学
  • 使用命令hdc_std uninstall { 安装包名} 进行卸载。鸿蒙何编
  • 安装包名在entry\src\main\config.json 如:"bundleName": "com.ohos.bttest"
  • 补充
    在鸿蒙系统下编译,仍存在高版本对低版本的编译不兼容性问题。即在mater版本下编译的hap无法在beta2版本运行;反之则可以。
  • 可能出现的编译报错
  • 一些属性必须初始化一个默认值。如:The @State property ‘bgColor’ ‘settingArrow’ ‘settingSummary’ must be specified a default value。
  • 注意引用路径中的文件名大小写问题。
  • 一些属性名与关键词或类名重复会起冲突。如:Property ‘height’/“onClick”/“enabled” in type ‘EntryComponent’ is not assignable to the same property in base type 'CustomComponent。将其改成例如"isOnClick"/"isEnabled"即可。
  • 一些资源,如:@State settingSummary: Resource 必须是resource 不能加 |string 或者赋值为string。Type ‘Resource’ is not assignable to type ‘string’. 反之同理。Type ‘string’ is not assignable to type ‘Resource’。

​​想了解更多关于开源的内容,请访问:​​

​​51CTO 开源基础软件社区​​

​​https://ost.51cto.com​​。

责任编辑:jianghua 来源: 51CTO开源基础软件社区 Hap程序鸿蒙

(责任编辑:时尚)

    推荐文章
    热点阅读