HarmonyOS Developer DevEco Studio常见问题-编译构建

丶龙八夷
发布于 2023-4-6 13:50
浏览
0收藏

C++工程编译导致电脑卡顿的处理建议

问题现象

在执行代码规模较大的C++工程的编译时,由于C++编译时的CPU占用率较高,可能出现电脑卡顿、反应迟缓等现象。

处理措施

如果出现类似问题,可尝试通过如下方式进行解决:

打开模块下的build-profile.json5文件,在arguments参数中添加如下配置。并根据电脑CPU配置,修改compile和link的值。建议compile和link的值之和,设置为CPU核数的一半,如CPU为8核,则complie和link分别设置为2。

"arguments": "-DCMAKE_JOB_POOL_COMPILE:STRING=compile -DCMAKE_JOB_POOL_LINK:STRING=link -DCMAKE_JOB_POOLS:STRING=compile=2;link=2",

需要说明的是,修改了compile和link的值,可能会导致编译时长增加,请耐心等待。

工程同步或构建失败,提示“Unknown argument -v”

问题现象:

在工程同步或者编译构建时出现错误,提示“Unknown argument -v”。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

决措施:

该问题是由于Native SDK升级后, CMake工具不再支持“-v”参数导致,请在模块下的build.gradle文件中,删除“arguments”中的“-v”参数。

工程同步或构建失败,提示“Can not find the sdk type toolchains of API9”

问题现象:

打开已有工程,提示“Can not find the sdk type toolchains of API9”,但经检查OpenHarmony SDK中已经下载API Version 9的Toolchains。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施:

该问题的原因是使用了版本较旧的DevEco Studio打开了最新版本的DevEco Studio创建的工程,导致Toolchains无法识别。请根据以下方法进行解决:

  1. 请安装​​最新版本的DevEco Studio​​(或通过Help > Update进行升级)。
  2. 打开DevEco Studio,在欢迎页单击Configure > Settings > OpenHarmony SDK,勾选API Version 9的“Toolchians”,然后单击Apply进行下载。
  3. 单击Open Project,打开工程,等待同步完成即可。

JDK版本不匹配导致的编译失败问题处理指导

问题现象

通过命令行方式构建HarmonyOS应用或原子化服务过程中出现构建失败,现象如下图所示。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施

该问题是由于JDK版本不匹配导致,当前配套的版本为JDK 11。因此,请根据如下方法进行修正:

  1. 下载并安装JDK 11版本。
  2. 修改JAVA_HOME环境变量,取值修改为JDK 11。如果是Linux系统,可参考使用命令行方式构建服务或应用的​​安装JDK章节​​。

LABEL_VALUE_ERROR处理指导

问题现象

在工程同步、编译构建过程中,提示LABEL_VALUE_ERROR错误信息。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施

该问题是由于config.json文件的资源引用规则变更导致,需要将“label”字段的取值,修改为资源引用方式。

  1. resources > base > element中的string.json中添加对应的字符串信息。
  2. 然后在config.json中重新引用该字符串资源。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

HarmonyOS library引用本地har包错误

问题现象

在HarmonyOS library模块中,引用了本地的har包,编译时提示“HAR_DEPENDENCY_ERROR”错误信息,如下图所示。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施

HarmonyOS library引用本地的har包的引用方式需要进行改造,具体步骤为:

  1. 在工程根目录下创建一个libs文件夹,并将需要引用的本地har包放到该文件夹下。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. 打开工程根目录下的build.gradle文件,在allprojects闭包中增加如下配置信息。

allprojects {
    repositories {
        ...
        repositories {
            flatDir {
                dir '../libs'
            }
        }

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. 打开HarmonyOS library模块下的build.gradle文件,修改har包的依赖方式。

修改前:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    ...
}

修改后(其中ailifeability请修改为实际需要引用的har包名称):

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'ailifeability', ext: 'har')
    ...
}

Maven仓不支持非安全协议的处理办法

问题现象

在工程同步、编译构建过程中,提示“Using insecure protocols with repositories, without explicit opt-in, is unsupported”,如下图所示。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

问题原因

Gradle版本升级,不再支持没有显式声明的不安全协议的Maven仓。

解决措施

打开工程根目录下的build.gradle文件,将引用的Maven仓地址修改为HTTPS协议的地址,或在引用的Maven仓地址后,添加“ allowInsecureProtocol = true”,如下所示:

maven {
    url 'http://maven-urlpath/'   
    allowInsecureProtocol = true
}

UNSUPPORT_GRADLE_PARAM_ERROR处理指导

问题现象

使用DevEco Studio或命令行方式打包APP时出现错误,提示“UNSUPPORT_GRADLE_PARAM_ERROR”错误信息。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施

该问题是由于Gradle提供的同步加速配置项org.gradle.configureondemand与HarmonyOS工程不适配导致,默认取值为false,如果配置为true,则会出现该错误。您可以通过如下方式进行处理:

  1. 检查如下配置文件中,是否开启了该配置项:
  • 检查工程根目录的gradle.properties文件。
  • 检查在Gradle缓存目录下(一般为C盘Users目录下的.gradle文件夹下)的gradle.properties文件。
  • 检查环境变量GRADLE_USER_HOME指定的gradle.properties文件。
  1. 执行Gradle命令编译APP时,编译命令不要携带--configure-on-demand参数。

执行npm install时出现“@types/liblibrary.so@latest' is not in the npm registry”

问题现象:

同步工程或执行npm install命令时出现执行失败的情况,提示“@types/liblibrary.so@latest' is not in the npm registry”,如下图所示。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

解决措施:

请删除模块根目录下的package-lock.json文件,然后重新执行npm install命令即可。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

如何配置应用/服务的启动界面信息

在开发应用/服务时,为了提升应用/服务冷启动的性能,您可以通过如下方式设置应用/服务的启动界面的图标及背景颜色。

  1. 在模块下的resources > base > element下,点击右键选择New > Element Resource File创建资源文件。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. 在弹出的对话框中,“File name”开发者可自定义,如color;“Root element”请选择color。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

创建完成后,color.json文件如下图所示:

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. 2创建的color.json文件拷贝至模块的ohosTest > resources > base > element目录下。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. 在模块的src > main > module.json5文件的abilities数组中,添加startWindowIcon和startWindowBackground字段(若缺少任一字段,将出现ERROR: Schema validate failed报错)。其中,startWindowIcon字段索引模块下resources > base > media中的图标资源,startWindowBackground字段索引resources > base > element > color.json中的color。

HarmonyOS Developer DevEco Studio常见问题-编译构建-鸿蒙开发者社区

  1. src > ohosTest > module.json5文件的abilities数组中,加startWindowIcon和startWindowBackground字段。其中,startWindowIcon字段索引模块ohosTest下resources > base > media中的图标资源, startWindowBackground字段索引resources > base > element > color.json中的color。

编译报错“No available entry module found”

问题现象

DevEco Studio编译时出现错误,提示“No available entry module found”错误信息。

解决措施

feature模块中需要配置依赖的entry模块,DevEco Studio在编译时会校验feature模块所依赖的entry模块是否存在,出现该问题的原因可能为以下情况:

  1. 在feature模块的build-profile.json5文件中,entryModules字段配置的名称与实际entry模块的名称不一致。请将entryModules字段的值修改为entry模块的名称;
  2. 在项目级build-profile.json5文件的modules字段中,feature模块位于entry模块之前。由于DevEco Studio在进行编译时会按照从前往后的顺序进行配置,当配置feature模块时,尚未读取和配置entry模块,则会报entry模块不存在的错误。请在modules字段中将feature模块置于所依赖的entry模块之后。

升级DevEco Studio或SDK后,工程模板与SDK不匹配导致报错

问题现象

升级DevEco Studio或者SDK后,编辑器中部分类提示错误,编辑构建报错示例如下:

报错示例一:Cannot find module '@ohos.app.ability.UIAbility' or its corresponding type declarations.

报错示例二:Module '"@ohos.wroker"' has no exported member 'ThreadWorkerGlobalScope'. Did you mean to use 'import ThreadWorkerGlobalScope from "@ohos.worker"' instead?

报错示例三:Property ‘workerPort’does not exist on type 'typeof worker'.

报错示例四:Module not found: Error: Can't resolve '@ohos.app.form.formBindingData' in ...

解决措施

出现该问题的原因是升级DevEco Studio或SDK后,最新版本的SDK及DevEco Studio工程模板中部分接口名称、接口命名空间等发生变更(OpenHarmony SDK接口详细变更请参见​​OpenHarmony SDK接口变更​​​,HarmonyOS SDK接口详细变更请参见​​HarmonyOS SDK接口变更​​),导致DevEco Studio的工程模板与SDK不匹配。不匹配的场景包括:

  • 场景一:升级了DevEco Studio 3.1Beta1后,使用了新工程模板代码(例如创建新工程、增加Worker等),但未升级SDK,仍使用了3.2.10.6版本以前的OpenHarmony SDK或3.2.2.6版本以前的HarmonyOS SDK,导致不匹配报错。该场景下建议您进入File > Settings > SDKs界面,将SDK更新到最新版本。
  • 场景二:在DevEco Stuido 3.1Beta1之前版本IDE创建的工程中,将OpenHarmony SDK版本升级到最新的3.2.10.6版本或将HarmonyOS SDK升级到最新的3.2.2.6版本,导致不匹配报错。该场景下建议您根据报错信息删除老旧的接口,使用最新的接口。



文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/faq-compiling-and-building-0000001240620261-V3​

分类
标签
已于2023-4-6 13:50:12修改
收藏
回复
举报
回复
    相关推荐