DevEco Studio生成app适配HarmonyOS鸿蒙Next系统版本问题
DevEco Studio生成app适配HarmonyOS鸿蒙Next系统版本问题 之前是在DevECO5.1上写的app,记得可以选择适配鸿蒙系统的最低版本做一定的版本兼容。
后面突然间不能用了,升级到了DevECO6,好像就没地方选择编辑兼容的版本了。
如果想写的app可以兼容鸿蒙一定范围的版本,比如5.00以后的,要怎么做才可以?
开发者你好,关于新版本的变更兼容可以参考compileSdkVersion、targetSdkVersion、compatibleSdkVersion三个属性。
- 开发应用时使用的SDK版本决定了API能力范围以及具体的API行为。在应用开发过程中,三个SDK版本属性之间的大小关系为:compatibleSdkVersion值≤targetSdkVersion值≤compileSdkVersion值,如果配置不符合这个规则,会有报错提示。
| SDK版本属性 | 源码工程中配置项(build-profile.json5文件中) | 应用打包后的对应字段(module.json5文件中) | 说明 |
|---|---|---|---|
| 编译应用的SDK版本 | compileSdkVersion | compileSdkVersion | 编译应用工程的SDK版本,该字段决定了应用开发过程中联想的API范围和使用的工具链版本。取值默认为DevEco Studio自带的SDK版本,如需显示配置,只能配置为当前DevEco Studio自带的SDK版本。 |
| 应用运行的目标SDK版本 | targetSdkVersion | targetAPIVersion | 应用运行的目标SDK版本。针对系统侧进行API版本隔离的变更,应用在终端设备上运行时会呈现以targetSdkVersion版本为目标版本的行为。例如当前设备API版本为5.0.2(14),而运行在该设备上的某应用targetSdkVersion配置为5.0.1(13),则经过API版本隔离的变更会以5.0.1(13)版本的API行为呈现。在5.0.2(14)发生的API变更不会影响该应用在当前设备的实际表现。如果应用工程中未填写该字段,则在应用包中该字段默认填写为编译该应用的SDK版本号。强烈建议开发者在应用工程build-profile.json5中配置targetSdkVersion字段,如果开发者未配置该字段,则该字段取值默认为compileSdkVersion的值。 |
| 应用运行的最低SDK版本 | compatibleSdkVersion | minAPIVersion | 应用运行要求的最低SDK版本。运行该应用的终端设备系统搭载的API版本不能低于该字段的值,低于则无法安装。该字段版本值不能高于目标SDK版本。可将compatibleSdkVersion的值设置为较小值,从而可在更低版本的系统上安装该应用,但应用是否能在compatibleSdkVersion对应系统版本上面正常运行,需要开发者针对无法在compatibleSdkVersion版本使用的API进行兼容性判断保护。 |
- 对compileSdkVersion、targetSdkVersion、compatibleSdkVersion通俗化理解:
- compileSdkVersion:应用编译版本。
- targetSdkVersion:需要考虑该字段的场景:应用使用的某API在不同版本行为发生变更(如返回类型发生变化),且系统对该变更做了版本隔离(一种对应用的保护机制),该字段就会起作用。如果使用的API都没有发生过行为变更,则该字段完全不起作用。如果使用的API发生了行为变更,且系统做了版本隔离,该字段设置的目标SDK就会体现设置的目标SDK的具体行为(即变更前或变更后的行为)。
- compatibleSdkVersion:应用可运行的最低版本。
- 系统对API行为变更做API版本隔离:API实施行为变更时进行版本隔离是一种对应用的保护机制,应用开发者可以通过在应用源码工程中配置targetSdkVersion字段来告诉系统该应用运行的目标版本,从而决定使用什么样的API行为。如果API在行为变更时已进行版本隔离,在低于变更发生的API版本设备上将保留变更前的API行为,仅在变更发生的版本及其后续版本中按照新的API行为执行。
更多关于DevEco Studio生成app适配HarmonyOS鸿蒙Next系统版本问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
项目结构里面,那个选版本的,就是兼容版本号…鸿蒙开发这个设计是有点奇怪,目标版本和编译版本又是在 json 文件里自己写,不是UI填写。
项目结构里面的那个设置我也找到了也在用,但这个DevECO6只有Compatible SDK一个选项,不像5.1可以选x.xx-x.xx一个范围内共有的特性进行编译,感觉退步了很多。 你提到的json文件是不是build-profile.json5?是不是这个文件中的 “targetSdkVersion”、"compatibleSdkVersion"是什么意思?能控制使用版本范围吗?
项目结构那选最低兼容版本,在 build-xxx.json(忘了) 中补全 targetSdkVersion 和 compileSdkVersion. 你搜一下官方指导。这个要自己输进去,
提单问一下,
DevEco Studio生成的应用适配鸿蒙Next,需使用API 10及以上版本进行开发。在项目配置文件module.json5中,需将compileSdkVersion和compatibleSdkVersion均设置为10或更高。同时,确保应用的bundleName在AppGallery Connect中已完成HarmonyOS Next的适配登记。
在DevEco Studio 6中,项目配置方式已更新,版本兼容性设置依然存在,但位置和形式有所变化。
对于HarmonyOS Next应用,版本兼容性主要通过项目级配置文件build-profile.json5进行管理。具体操作如下:
-
核心配置位置:打开您的工程,在
AppScope > resources > base > profile目录下找到build-profile.json5文件。这是定义应用构建配置的核心文件。 -
配置API版本与目标版本:在该文件的
"app"字段下,您会看到"apiVersion"和"compileSdkVersion"等关键配置项。"compileSdkVersion":这定义了您编译应用时所使用的SDK版本,应设置为您的开发目标版本(例如您希望兼容的较高版本)。"compatibleSdkVersion":这个字段直接定义了应用可以兼容运行的最低系统API版本。将其设置为您希望支持的最低版本(例如5.0.0)。"targetSdkVersion":这定义了应用优化所面向的API版本,通常与compileSdkVersion保持一致。
-
配置示例:
{ "app": { "signingConfigs": [], "products": [], "apiVersion": { "compatibleSdkVersion": "5.0.0", // 应用兼容的最低版本 "compileSdkVersion": "6.0.0", // 编译时使用的SDK版本 "targetSdkVersion": "6.0.0" // 应用目标版本 } } }此配置意味着应用最低可运行在API 5.0.0(HarmonyOS 5.0.0)的系统上,但使用了6.0.0的SDK进行编译和优化。
-
模块级配置:如果您的应用包含多个HAP包(模块),每个模块的
build-profile.json5文件中也有类似的apiVersion配置,需要与AppScope中的配置协调一致。
总结:在DevEco Studio 6中,您无需在UI界面上寻找旧版的兼容版本选择框。直接编辑AppScope/resources/base/profile/build-profile.json5文件,通过设置"compatibleSdkVersion"的值即可精确控制应用所能兼容的最低HarmonyOS Next版本。请确保在开发过程中,对使用的API进行版本条件判断,以保障在低版本系统上的兼容性。

