DevEco Studio生成app适配HarmonyOS鸿蒙Next系统版本问题

DevEco Studio生成app适配HarmonyOS鸿蒙Next系统版本问题 之前是在DevECO5.1上写的app,记得可以选择适配鸿蒙系统的最低版本做一定的版本兼容。

后面突然间不能用了,升级到了DevECO6,好像就没地方选择编辑兼容的版本了。

如果想写的app可以兼容鸿蒙一定范围的版本,比如5.00以后的,要怎么做才可以?

7 回复

开发者你好,关于新版本的变更兼容可以参考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中,需将compileSdkVersioncompatibleSdkVersion均设置为10或更高。同时,确保应用的bundleName在AppGallery Connect中已完成HarmonyOS Next的适配登记。

在DevEco Studio 6中,项目配置方式已更新,版本兼容性设置依然存在,但位置和形式有所变化。

对于HarmonyOS Next应用,版本兼容性主要通过项目级配置文件build-profile.json5进行管理。具体操作如下:

  1. 核心配置位置:打开您的工程,在AppScope > resources > base > profile目录下找到build-profile.json5文件。这是定义应用构建配置的核心文件。

  2. 配置API版本与目标版本:在该文件的"app"字段下,您会看到"apiVersion""compileSdkVersion"等关键配置项。

    • "compileSdkVersion":这定义了您编译应用时所使用的SDK版本,应设置为您的开发目标版本(例如您希望兼容的较高版本)。
    • "compatibleSdkVersion":这个字段直接定义了应用可以兼容运行的最低系统API版本。将其设置为您希望支持的最低版本(例如5.0.0)。
    • "targetSdkVersion":这定义了应用优化所面向的API版本,通常与compileSdkVersion保持一致。
  3. 配置示例

    {
      "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进行编译和优化。

  4. 模块级配置:如果您的应用包含多个HAP包(模块),每个模块的build-profile.json5文件中也有类似的apiVersion配置,需要与AppScope中的配置协调一致。

总结:在DevEco Studio 6中,您无需在UI界面上寻找旧版的兼容版本选择框。直接编辑AppScope/resources/base/profile/build-profile.json5文件,通过设置"compatibleSdkVersion"的值即可精确控制应用所能兼容的最低HarmonyOS Next版本。请确保在开发过程中,对使用的API进行版本条件判断,以保障在低版本系统上的兼容性。

回到顶部