目录
项目创建
1.App普通项目创建
2.元服务创建
项目结构
.hvigor
.idea
AppScope
entry
EntryAbility.ts
pages
resources
module.json5
ohosTest
hvigorfile.ts
build-profile.json5
oh_modules
build-profile.json5
hvigorfile.ts
项目运行
项目创建
File->new->create Project
1.App普通项目创建
第一个为空白模版。选中可以看到对应的创建能力模版
2.元服务创建
元服务可以理解为卡片式的服务模式。类似下图。
项目结构
这里主要讲的是应用的项目结构.
从上到下。
.hvigor
存储构建配置文件信息。
.idea
存储项目的配置信息。
AppScope
翻译过来是【应用程序范围】。它是存放了全局的资源文件及配置信息
resources为资源文件。app.json5为全局配置信息
{
"app": {
"bundleName": "com.application.myapplication",// 标识应用的Bundle名称,用于标识应用的唯一性。
"bundleType": "app",// 标识应用的Bundle类型,用于区分应用或者原子化服务。如app或者atomicService
"vendor": "example",//应用开发厂商的描述
"versionCode": 1000000,//应用的版本号
"versionName": "1.0.0",//应用版本号的文字描述,用于向用户展示。
"icon": "$media:app_icon",//应用的图标
"label": "$string:app_name",//应用的名称
"description": "$string:description_application",//应用的描述信息
"minAPIVersion": 9,//应用运行需要的SDK的API最小版本。
"targetAPIVersion": 9,//应用运行需要的API目标版本。
"apiReleaseType": "Release",//应用运行需要的API目标版本的类型,(可不填,系统自动填入)Canary:受限发布的版本。 Beta:公开发布的Beta版本。 Release:公开发布的正式版本。
"debug": false,//标识应用是否可调试,true:可调试。 false:不可调试。
"car": { //tablet、tv、wearable、car、phone可以对不对设备单独设置参数,如不设置则默认用公共的
"minAPIVersion": 8,
}
},
}
app.json5
entry
应用模块
EntryAbility.ts
承载Ability生命周期。也是指定了第一个打开的界面
pages
页面
resources
当前应用模块的资源信息
module.json5
{
"module": {
"name": "entry", //当前Module的名称
"type": "entry", //标识当前Module的类型。类型有两种,分别: entry:应用的主模块。 feature:应用的动态特性模块。
"description": "$string:module_desc", //前Module的描述信息
"mainElement": "EntryAbility", //当前Module的入口
"deviceTypes": [
//标识当前Module可以运行在哪类设备上
"phone",
"tablet"
],
"deliveryWithInstall": true, //当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。 true:主动安装时安装。 false:主动安装时不安装
"installationFree": false, //当前Module是否支持免安装特性。 true:表示支持免安装特性,且符合免安装约束。 false:表示不支持免安装特性。
"pages": "$profile:main_pages", //当前Module的profile资源,用于列举每个页面信息。
"virtualMachine": "ark", //当前Module运行的目标虚拟机类型,供云端分发使用
"metadata": [
//(待确认,暂不了解)当前Module的自定义元信息,标签值为数组类型,只对当前Module、UIAbility、ExtensionAbility生效。
{
"name": "string",
"value": "string",
"resource": ""
}
],
"abilities": [
//当前Module中UIAbility的配置信息,只对当前UIAbility生效。
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [//标识UIAbility组件或者ExtensionAbility组件能够接收的Want的特征。简而言之就是消息传递用的
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
]
}
],
"extensionAbilities": [//当前Module中ExtensionAbility的配置信息,标签值为数组类型,只对当前ExtensionAbility生效。
],
"requestPermissions": [//当前应用运行时需向系统申请的权限集合。
{
"name": "ohos.abilitydemo.permission.PROVIDER",
"reason": "$string:reason",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "inuse"
}
}
]
}
}
当前模块的配置资源
ohosTest
测试用例
hvigorfile.ts
模块级编译构建任务脚本
build-profile.json5
{
"apiType": 'faMode', //API类型,支持FA和Stage模型
"showInServiceCenter": true, //是否在服务中心展示
"buildOption": {
//配置筛选har依赖.so资源文件的过滤规则
"napiLibFilterOption": {
//按照.so文件的优先级顺序,打包最高优先级的.so文件
"pickFirsts": [
"**/1.so"
],
//按照.so文件的优先级顺序,打包最低优先级的.so 文件
"pickLasts": [
"**/2.so"
],
//排除的.so文件
"excludes": [
"**/3.so"
],
//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
"enableOverride": true
},
//cpp相关编译配置
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt", //CMake配置文件,提供CMake构建脚本
"arguments": "", //传递给CMake的可选编译参数
"abiFilters": [ //用于设置本机的ABI编译环境
"armeabi-v7a",
"arm64-v8a"
],
"cppFlags": "" //设置C++编译器的可选参数
},
},
"targets": [ //定义的Target,开发者可以定制不同的Target,具体请参考定制多目标构建产物
{
"name": "default",
"runtimeOS": "HarmonyOS",
},
{
"name": "ohosTest",
}
]
}
当前的模块信息、编译信息配置项
oh_modules
用于存放三方库依赖信息。关于原npm工程适配ohpm操作
build-profile.json5
{
"app": {
//工程的签名信息,可包含多个签名信息
"signingConfigs": [
{
"name": "default", //标识签名方案的名称
"type": "HarmonyOS", //标识HarmonyOS应用
//该方案的签名材料
"material": {
"certpath": "D:\\SigningConfig\\debug_hos.cer", //调试或发布证书文件,格式为.cer
"storePassword": "******", //密钥库密码,以密文形式呈现
"keyAlias": "debugKey", //密钥别名信息
"keyPassword": "******", //密钥密码,以密文形式呈现
"profile": "D:\\SigningConfig\\debug_hos.p7b", //调试或发布证书Profile文件,格式为.p7b
"signAlg": "SHA256withECDSA", //密钥库signAlg参数
"storeFile": "D:\\SigningConfig\\debug_hos.p12" //密钥库文件,格式为.p12
}
}
],
"compileSdkVersion": 9, //指定HarmonyOS应用/服务编译时的SDK版本
"compatibleSdkVersion": 9, //指定HarmonyOS应用/服务兼容的最低SDK版本
//定义构建的产品品类,如通用默认版、付费版、免费版等
"products": [
{
"name": "default", //定义产品的名称,支持定制多product目标产物,具体请参考定制多目标构建产物
"signingConfig": "default", //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义
}
]
},
"modules": [
{
"name": "entry", //模块名称
"srcPath": "./entry", //标明模块根目录相对工程根目录的相对路径
"targets": [ //定义构建的APP产物,由product和各模块定义的targets共同定义
{
"name": "default", //target名称,由各个模块的build-profile.json5中的targets字段定义
"applyToProducts": [
"default" //表示将该模块下的“default” Target打包到“default” Product中
]
}
]
}
]
}
应用级配置信息,包括签名、产品配置等。
hvigorfile.ts
应用级编译构建任务脚本。