写点什么

Gradle 工程适配为 Hvigor 工程

作者:坚果
  • 2023-04-22
    广东
  • 本文字数:2471 字

    阅读完需:约 8 分钟

Gradle工程适配为Hvigor工程

作者:坚果

团队:坚果派

公众号:“大前端之旅”

润开鸿技术专家,华为 HDE,InfoQ 签约作者,OpenHarmony 布道师,擅长 HarmonyOS 应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领 100+队员完成 Pr 的提交合入。

欢迎通过主页或者私信联系我,加入坚果派,一起学习 OpenHarmony/HarmonyOS 应用开发。

目前我们创建的项目更多是 API9 的项目,但是也有一些项目是 Api7 的版本,这个时候我们就需要做一些适配,接下来就说一下具体是如何适配的。


原 OpenHarmony API 7 的工程采用的是 Gradle 自动化构建工具,而 OpenHarmony API 9 的工程则采用 Hvigor 自动化构建工具,由于 Gradle 构建工具和 Hvigor 构建工具的配置文件不同,因此,对于采用 Gradle 编译构建的历史工程,需要手动进行适配,以适用于使用 Hvigor 工具进行编译构建。

当然这里需要注意的一点就是 OpenHarmony API 7 的工程属于 FA 模型,因此将工程升级到 OpenHarmony API 9 时,也只能升级为 FA 模型,不支持升级为 Stage 模型。

这里提供两种方法

适配方法一

1.使用 DevEco Studio 创建一个 OpenHarmony 新工程,请注意:

  • Bundle name:请与需要适配的历史工程的 Bundle name 保持一致。待适配工程的 Bundle name 字段可在模块目录下的 config.json 文件中进行查阅。

  • Compile SDK:请选择将要适配的目标 API 版本,支持选择 9。

  • Model:请选择 FA。

  • Language:选择与待适配工程使用的代码语言保持一致。

2.等待工程 ohpm install 执行完成后,删除 entry 下的 src 目录,请注意,其它配置文件不要删除。



3.将待适配工程 entry 模块下的 src 目录,拷贝到上述工程的 entry 文件夹下。如果待适配工程存在多个模块,可拷贝上述整个 entry 模块文件夹并修改模块名,然后将待适配模块中的源码和资源文件夹,替换到该模块下即可。

4.检查模块下 src\main\resources\base 目录是否存在 layout graphic 文件夹,如果有请删除;没有请跳过该操作。

5.打开模块下的 build-profile.json5 文件,删除“ohosTest” Target。

6.如果是 ArkTS 工程,请修改 ArkTS 源码文件中的引用包的后缀名,由 import xx from‘xx.ets’修改为 import xx from‘xx’,去掉.ets 后缀名。

7.单击 File > Sync and Refresh Project 进行同步,等待工程同步完成。

至此,OpenHarmony 历史工程便适配完成,您可以通过单击 Build > Build Hap(s)/App(s) > Build Hap(s)验证是否可以正常编译构建 HAP。

适配方法二

1.进入 OpenHarmony 工程所在文件夹

在本地电脑中,进入 OpenHarmony 工程所在文件夹。

2.在工程根目录下,修改相关配置文件。

1.删除 Gradle 相关的文件及缓存文件,如下图蓝色框所示的文件及文件夹。



2.打开工程根目录下 local.properties 文件,并根据实际路径进行修改。

#OpenHarmony SDK路径sdk.dir=D:/OpenHarmony/Sdk#Node.js路径nodejs.dir=D:/nodejs
复制代码

3.新建一个文本文件,命名修改为“hvigorfile.ts”。

4.打开 hvigorfile.ts 文件,写入如下脚本信息。写入后,保存并关闭文件即可。

export { legacyAppTasks } from '@ohos/hvigor-ohos-plugin';
复制代码

5.新建 oh-package.json5 文件,写入如下脚本信息,其中:name 和 version 字段,请根据实际进行填写,其余字段保持不变。写入后,保存并关闭文件即可。

{"name": "myapplication",  "version": "1.0.0",  "description": "Please describe the basic information.",  "main": "",  "author": "",  "license": "",  "dependencies": {},  "devDependencies": {    "@ohos/hypium": "1.0.6"  }}
复制代码

6.新建一个文本文件,命名修改为“build-profile.json5”。

7.打开 build-profile.json5 文件,写入如下脚本信息,其中 compileSdkVersion 和 compatibleSdkVersion 请修改为 9,

{  "app": {    "signingConfigs": [],    "compileSdkVersion": 9,    "compatibleSdkVersion": 9,    "products": [      {        "name": "default",        "signingConfig": "default",      }    ]  },  "modules": [    {      "name": "entry",      "srcPath": "./entry",      "targets": [        {          "name": "default",          "applyToProducts": [            "default"          ]        }      ]    }  ]}
复制代码

8.工程需要添加 ohpm 编译构建四件套 hvigorw、hvigorw.bat、hvigor-config.json5、hvigor-wrapper.js。可新建一个 API 9 的新工程,拷贝新工程中 hvigorw、hvigorw.bat、hvigor-config.json5、hvigor-wrapper.js 四项配置文件,粘贴到历史工程文件夹对应位置。



3.进入模块目录下,修改相关配置文件

进入模块目录下,修改相关配置文件。如有多个模块,请逐一修改。

1.删除 build 文件夹、build.gradle 和 progurad-rules.pro 文件。



2.检查模块下 src\main\resources\base 目录是否存在 layout graphic 文件夹,如果有请删除;没有请跳过该操作。

3.新建一个文本文件,命名修改为“oh-package.json5”。

4.打开 oh-package.json5 文件,写入如下脚本信息。

{  "name": "entry",  "version": "1.0.0",  "description": "Please describe the basic information.",  "main": "",  "author": "",  "license": "",  "dependencies": {}}
复制代码

5.新建一个文本文件,命名修改为“hvigorfile.ts”。

6.打开 hvigorfile.ts 文件,写入如下脚本信息。写入后,保存并关闭文件即可。

export { legacyHapTasks } from '@ohos/hvigor-ohos-plugin'; 
复制代码

7.新建一个文本文件,命名修改为“build-profile.json5”。

8.打开 build-profile.json5 文件,写入如下脚本信息。写入后,保存并关闭文件即可。

{  "apiType": 'faMode',  "buildOption": {  },  "targets": [    {      "name": "default"    }  ]}
复制代码

4.修改 ArkTS 源码文件中的引用包的后缀名

如果是 ArkTS 工程,请修改 ArkTS 源码文件中的引用包的后缀名,由 import xx from‘xx.ets’修改为 import xx from‘xx’,去掉.ets 后缀名。

至此,OpenHarmony 历史工程便适配完成,您可以通过单击 Build > Build Hap(s)/App(s) > Build Hap(s)验证是否可以正常编译构建 HAP。

发布于: 刚刚阅读数: 5
用户头像

坚果

关注

此间若无火炬,我便是唯一的光 2020-10-25 加入

公众号:“大前端之旅”,OpenHarmony布道师,润和软件鸿蒙KOL,InfoQ签约作者,电子发烧友鸿蒙KOL

评论

发布
暂无评论
Gradle工程适配为Hvigor工程_OpenHarmony_坚果_InfoQ写作社区