更多信息请访问:2022年3月31日发布最新IDE工具DevEcoStudio3.0Beta3,仔细阅读文档后发现,OpenHarmony最新应用的编译构建过程已经公开。对应官方文档:编译构建概述出于好奇,我只是按照文档一步一步来,一开始是手动构建一个文件,最后编译成功。分享一下施工过程吧。结果工具准备了Node.js:v14.??19.1+最新的OpenHarmonySDK包,解压到一个文件夹,SDK下载地址。SDK目录结构。|---ets|\---3.1.5.5|+---API|+---构建工具||+---ets-装载机|\---component\---toolchains\---3.1.5.5+---configcheck+---lib\---syscapcheck需要在./3.1.5.5/build-tools/ets-loader/目录下创建目录结构后执行npminstall命令创建项目1.创建项目目录为了演示,我在E盘重新新建一个项目文件夹BuildTest,然后创建三个配置在vscode工具的帮助下生成文件build-profile.json5、hvigofile.js和package.json。build-profile.json5:注意SDK版本和srcPath配置。签名信息请参考上述官方文档进行相应的配置。{"app":{"signingConfigs":[//项目的签名信息,可以包含多个签名信息],"compileSdkVersion":8,//编译OpenHarmony应用/服务时指定SDK版本"compatibleSdkVersion":8,//指定与OpenHarmony应用/服务兼容的最低SDK版本"products":[//定义要构建的产品类别,如一般默认版本、付费版本、免费版本等{"name":"default",//定义产品名称,开发者自定义"signingConfig":"debug",//指定当前产品类别对应的签名信息,需要在signingConfigs中定义签名信息}]},"modules":[{"name":"entry",//模块名称"srcPath":"./entry",//表示src目录相对于项目根目录的相对路径"targets":[//Define构建的产品,由product定义,每个模块定义的targets{"name":"default",//目标名称,由每个模块的build-profile.json5中的targets字段定义js:module.exports=require('@ohos/hvigor-ohos-plugin').legacyAppTaskspackage.json:熟悉npm框架的应该都明白package.json是npm依赖阶段的配置文件。我们来看看项目目录下的配置项。{"name":"buildtest",//项目名称"version":"1.0.0",//版本"ohos":{//ohos"org":"huawei","buildTool":"hvigor","directoryLevel":"project"},"description":"exampledescription","repository":{},"license":"ISC","dependencies":{//Dependencies"hypium":"^1.0.0","@ohos/hvigor":"1.0.6","@ohos/hvigor-ohos-plugin":"1.0.6"}}配置项目后,我们创建第一个模块条目。2、创建模块在项目目录下创建文件夹入口(与上面build-profile.json5的模块配置的srcPath一致),添加模块配置文件:build-profile.json5、hvigorfile.js、package。json和HarmonyOS同src模块目录。build-profile.json5:这里省略Cpp配置,Cpp相关配置参考官方文档。{"apiType":'faMode',//API类型,API8为FA模型,API9为Stage模型,无需修改"showInServiceCenter":true,//是否在服务中心暴露"buildOption":{"arkEnable":true,//是否使用方舟编译器编译},"targets":[//模块对应的产品配置{"name":"default",}]}hvigorfile.js:module.exports=require('@ohos/hvigor-ohos-plugin').legacyHapTasks让我们找出区别。乍一看,这里的配置和项目下的hvigorfile.js是一样的。其实require引入的模块是不一样的。项目目录是legacyAppTasks,这里是legacyHapTasks(项目是AppTasks模块是HapTasks)。因为这里的配置问题,我浪费了十分钟。package.json:这里的npm配置文件是模块中引用第三方组件/插件配置的地方。{"license":"ISC","name":"entry","ohos":{"org":"huawei","directoryLevel":"module","buildTool":"hvigor"},"description":"exampledescription","repository":{},"version":"1.0.0","dependencies":{}}然后在src目录下创建src/main/config.json和src/main/ets/App.ets、src/main/ets/pages/index.ets、src/resources/…等对应文件。此处不再赘述,详见相应的文件结构和文件。3、构建(1)添加npm源,必须先添加harmonyOS的npm源,否则执行npminstall时会报404错误。npmconfigset@ohos:registry=https://repo.harmonyos.com/npm/(2)在项目目录下安装依赖在项目目录(根目录)下安装依赖。npminstall(3)执行构建命令在项目目录下执行构建命令。构建就是通过node.js调用hvigor工具进行打包构建。确保已将节点添加到系统环境变量中。node./node_modules/@ohos/hvigor/bin/hvigor.js-mmoduleassembleHap无一例外会出现如下错误:PSE:\BuildTest>node./node_modules/@ohos/hvigor/bin/hvigor.js-mmoduleassembleHap>hvigorERROR:Aproblemoccurredinrootmodule:ERROR:Cause:Cannotfindsdk.dirorOHOS_SDK_HOMEinSystemEnvironmentPathatE:\BuildTest\local.properties:1:1PSE:\BuildTest>以上原因是我们没有配置SDK路径。处理方法为:在项目根路径下创建local.properties文件或在系统环境变量中配置OHOS_SDK_HOME。请注意,系统环境变量不是用户环境变量。local.properties:sdk.dir=//sdk所在的文件夹nodejs.dir=//复制并配置好nodejs所在的文件夹,然后再次执行构建命令就可以看到我们构建成功的结果.结论做了那么多步骤,那么有什么实际意义呢?1、目前openharmony和HarmonyOS的UI是一样的,只是API不一样。然后就可以直接在Openharmony上使用HarmonyOSUI,直接打包构建openharmony的HAP2。处理完后可以像vue-cli一样直接创建项目目录。如果能再实现预览功能,就可以实现不依赖IDE了。可以开发和打包HAP。3、如果有机会自己定制一个IDE,把上面的过程变成黑盒子,想自己做IDE的朋友一定要有这一步。更多资讯请浏览:?????????????????????????????????????????????????????????
