@hmos-library-adapter/fast 0.0.17-beta.0 → 0.0.17-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/node_modules/@hmos-library-adapter/executer/README.md +2 -2
  2. package/node_modules/@hmos-library-adapter/executer/shared/skill-map.json +5 -1
  3. package/node_modules/@hmos-library-adapter/executer/shared/skills/arkts-rules/SKILL.md +400 -0
  4. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/CHANGELOG.md +1391 -0
  5. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/COMPATIBILITY.md +53 -0
  6. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/README.md +123 -0
  7. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/SKILL.md +48 -0
  8. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/agents/upgrade-assess-change.md +37 -0
  9. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/agents/upgrade-fix-file.md +23 -0
  10. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/package.json +19 -0
  11. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/26.0.0/beta1-changes-for-all-apps.md +1793 -0
  12. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/26.0.0/beta1-ux-style-and-effect-changes.md +288 -0
  13. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/26.0.0/beta2-changes-for-all-apps.md +148 -0
  14. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/26.0.0/release-changes-for-all-apps.md +662 -0
  15. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.1(13)/beta3-os-api-behavior-changes.md +652 -0
  16. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.1(13)/beta3-ux-style-and-effect-changes.md +222 -0
  17. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.1(13)/release-os-api-behavior-changes.md +444 -0
  18. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.1(13)/release-ux-style-and-effect-changes.md +221 -0
  19. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.2(14)/os-api-behavior-changes.md +1767 -0
  20. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.2(14)/ux-style-and-effect-changes.md +134 -0
  21. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.3(15)/beta1-os-api-behavior-changes.md +430 -0
  22. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.3(15)/beta1-ux-style-and-effect-changes.md +49 -0
  23. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.3(15)/beta2-os-api-behavior-changes.md +240 -0
  24. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.3(15)/beta2-ux-style-and-effect-changes.md +90 -0
  25. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.0.3(15)/release-os-api-behavior-changes.md +69 -0
  26. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.1.0(18)/os-api-behavior-changes.md +1294 -0
  27. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/5.1.0(18)/ux-style-and-effect-changes.md +147 -0
  28. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta1-os-api-behavior-changes.md +1019 -0
  29. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta1-ux-style-and-effect-changes.md +153 -0
  30. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta2-os-api-behavior-changes.md +662 -0
  31. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta2-ux-style-and-effect-changes.md +78 -0
  32. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta3-os-api-behavior-changes.md +167 -0
  33. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.0.0(20)/beta5-os-api-behavior-changes.md +52 -0
  34. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs/6.1.0(23)/changes-for-all-apps.md +397 -0
  35. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/changelogs-index.json +883 -0
  36. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/arkts-coding-standards.md +53 -0
  37. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/compatibility.md +207 -0
  38. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/native-adaptation.md +21 -0
  39. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/runtime-functional-tests.md +62 -0
  40. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/sdk-versions.md +77 -0
  41. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/troubleshooting.md +54 -0
  42. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/verification.md +79 -0
  43. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/common/workflow-scan.md +41 -0
  44. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/deprecated/context-migration.md +274 -0
  45. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/deprecated/deprecated-api-adaptation.md +157 -0
  46. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/deprecated/deprecated-api-examples.md +219 -0
  47. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/toolchain/hvigor.md +50 -0
  48. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/upgrade/har-upgrade.md +60 -0
  49. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/upgrade/scanner-missed-cases.md +171 -0
  50. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/upgrade/upgrade-compatibility.md +112 -0
  51. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/upgrade/upgrade-examples.md +289 -0
  52. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/references/upgrade/upgrade-workflow.md +122 -0
  53. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/references/generate-behavior-policy.mjs +96 -0
  54. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/references/references.mjs +9 -0
  55. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/regression/compare-deprecated.mjs +57 -0
  56. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/regression/compare-golden.mjs +130 -0
  57. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/regression/regress-deprecated.mjs +120 -0
  58. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/behavior-catalog-generation.test.mjs +59 -0
  59. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/behavior-local-sources.test.mjs +44 -0
  60. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/changelog-index.test.mjs +66 -0
  61. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/compare-golden.test.mjs +103 -0
  62. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/fixtures/behavior/local-sources.csv +5 -0
  63. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/references.test.mjs +16 -0
  64. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/skill-content.test.mjs +139 -0
  65. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/skill-frontmatter.test.mjs +11 -0
  66. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/test/test-suite.test.mjs +65 -0
  67. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/validation/skill-content.mjs +125 -0
  68. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/validation/skill-frontmatter.mjs +6 -0
  69. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/maintenance/validation/validate-skill.mjs +57 -0
  70. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/CHANGELOG.md +506 -0
  71. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/GOLDEN_VALIDATION.md +42 -0
  72. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/README.md +137 -0
  73. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/behavior/behavior-policy.mjs +117 -0
  74. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/behavior/upgrade-coverage.mjs +29 -0
  75. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/bin/deveco-worker-compat.cjs +21 -0
  76. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/bin/harmony-api-scan.mjs +17 -0
  77. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/cli.mjs +416 -0
  78. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/deveco.mjs +348 -0
  79. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/project.mjs +81 -0
  80. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/rules.mjs +425 -0
  81. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/runtime-identity.mjs +23 -0
  82. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/scan-runner.mjs +521 -0
  83. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/core/sdk-deprecations.mjs +204 -0
  84. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/data/behavior-change-policy.json +4378 -0
  85. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/deprecated/arkts-deprecations.mjs +363 -0
  86. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/deprecated/build-log.mjs +72 -0
  87. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/native/native.mjs +95 -0
  88. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/package.json +16 -0
  89. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/batch-layout.test.mjs +94 -0
  90. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/behavior-policy.test.mjs +75 -0
  91. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/build-log.test.mjs +69 -0
  92. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/cli.test.mjs +102 -0
  93. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/csv.test.mjs +35 -0
  94. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/deprecations.test.mjs +283 -0
  95. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/deveco.test.mjs +262 -0
  96. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/helpers/scan-batch.mjs +10 -0
  97. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/native.test.mjs +108 -0
  98. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/project.test.mjs +42 -0
  99. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/rules.test.mjs +190 -0
  100. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/runtime-identity.test.mjs +53 -0
  101. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/scan-mode.test.mjs +38 -0
  102. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/scan-runner.test.mjs +481 -0
  103. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/scan-scope.test.mjs +110 -0
  104. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/source-inputs.test.mjs +64 -0
  105. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/scanner/test/upgrade.test.mjs +164 -0
  106. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/format/args.mjs +66 -0
  107. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/format/csv.mjs +85 -0
  108. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/format/json5.mjs +92 -0
  109. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/format/upgrade-results.mjs +45 -0
  110. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/format/zip.mjs +87 -0
  111. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/io/fs-utils.mjs +60 -0
  112. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/artifact-layout.mjs +74 -0
  113. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/changelog-index.mjs +29 -0
  114. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/deveco-version.mjs +40 -0
  115. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/document-links.mjs +30 -0
  116. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/errors.mjs +41 -0
  117. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/fs.mjs +72 -0
  118. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/paths.mjs +34 -0
  119. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/process.mjs +154 -0
  120. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/scan-mode.mjs +7 -0
  121. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/scan-statistics.mjs +7 -0
  122. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/scan-version-catalog.json +43 -0
  123. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/scan-versions.mjs +51 -0
  124. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/sdk-layout.mjs +27 -0
  125. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/source-scope.mjs +108 -0
  126. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/source-types.mjs +7 -0
  127. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/platform/version.mjs +76 -0
  128. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/deveco-version.test.mjs +50 -0
  129. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/document-links.test.mjs +13 -0
  130. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/errors.test.mjs +40 -0
  131. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/fs-utils.test.mjs +31 -0
  132. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/platform-paths.test.mjs +19 -0
  133. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/process-utils.test.mjs +68 -0
  134. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/scan-versions.test.mjs +26 -0
  135. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/sdk-version.test.mjs +17 -0
  136. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/shared/test/upgrade-results.test.mjs +140 -0
  137. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/scripts/test-suite.mjs +29 -0
  138. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/deprecated-report.md +86 -0
  139. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/progress.md +150 -0
  140. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/results.md +110 -0
  141. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/upgrade-report.md +105 -0
  142. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/upgrade-spec.md +58 -0
  143. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-api-upgrade-adapter/templates/upgrade-test-report.md +47 -0
  144. package/node_modules/@hmos-library-adapter/executer/shared/skills/harmonyos-knowledge/SKILL.md +70 -0
  145. package/node_modules/@hmos-library-adapter/executer/src/config.js +3 -4
  146. package/node_modules/@hmos-library-adapter/executer/src/doctor.js +1 -1
  147. package/node_modules/@hmos-library-adapter/executer/src/install.js +1 -1
  148. package/node_modules/@hmos-library-adapter/executer/src/paths.js +4 -4
  149. package/package.json +1 -1
@@ -0,0 +1,1294 @@
1
+ ---
2
+ title: OS平台API行为的变更
3
+ source: https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/changelogs-for-all-apps-5101
4
+ category: harmonyos-releases
5
+ downloaded_at: 2026-09-03
6
+ ---
7
+
8
+ # OS平台API行为的变更
9
+
10
+ ## ArkTS
11
+
12
+ ### 默认不合并依赖混淆规则变更说明
13
+
14
+ **变更原因**
15
+
16
+ 混淆默认合并依赖混淆规则,由于部分开发者不了解混淆机制,在发布的三方库中的obfuscation.txt文件中引入了混淆开关选项,其它应用依赖这些三方库后出现应用启动崩溃,且开发者无法直接感知这些三方库引入了混淆开关。
17
+
18
+ **变更影响**
19
+
20
+ 此变更涉及应用适配。
21
+
22
+ 变更前:
23
+
24
+ 编译一个模块时,生效的混淆规则为当前模块所有混淆配置与依赖模块及三方库**所有混淆配置**合并后的结果:
25
+
26
+ 即如果当前模块、依赖的HAR模块、依赖的三方库中混淆配置如下:
27
+
28
+ ```
29
+ // current-obfuscation-rules.txt
30
+ -enable-toplevel-obfuscation
31
+ -keep-global-name
32
+ currentVar
33
+
34
+ // dependencyHar-consumer-rule.txt
35
+ -enable-property-obfuscation
36
+ -keep-global-name
37
+ harVar
38
+ -keep-property-name
39
+ harProp
40
+
41
+ // dependencyThirdParty-obfuscation.txt
42
+ -compact
43
+ -keep-property-name
44
+ thirdPartyProp
45
+ ```
46
+
47
+ 那么编译当前模块时生效的混淆规则为:
48
+
49
+ ```
50
+ -enable-toplevel-obfuscation
51
+ -enable-property-obfuscation
52
+ -compact
53
+ -keep-global-name
54
+ currentVar
55
+ harVar
56
+ -keep-property-name
57
+ harProp
58
+ thirdPartyProp
59
+ ```
60
+
61
+ 变更后:
62
+
63
+ 编译一个模块时,生效的混淆规则为当前模块所有混淆配置与依赖模块及三方库的**混淆保留选项**合并后的结果:
64
+
65
+ 即对于上面的例子,编译当前模块时生效的混淆规则为:
66
+
67
+ ```
68
+ -enable-toplevel-obfuscation
69
+ -keep-global-name
70
+ currentVar
71
+ harVar
72
+ -keep-property-name
73
+ harProp
74
+ thirdPartyProp
75
+ ```
76
+
77
+ **起始API Level**
78
+
79
+ 10
80
+
81
+ **变更的接口/组件**
82
+
83
+ 不涉及
84
+
85
+ **适配指导**
86
+
87
+ 在当前编译模块的混淆配置文件obfuscation-rules.txt中配置混淆开关选项-enable-lib-obfuscation-options,可实现编译当前模块时合并依赖模块及三方库中所有的混淆配置,即规则合并功能与变更前一致。
88
+
89
+ ## ArkUI
90
+
91
+ ### getKeyboardAvoidMode接口返回值变更
92
+
93
+ **变更原因**
94
+
95
+ getKeyboardAvoidMode接口实际返回值为字符串,与文档描述返回值为KeyboardAvoidMode枚举值类型不符。
96
+
97
+ **变更影响**
98
+
99
+ 此变更涉及应用适配。
100
+
101
+ **说明**
102
+
103
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
104
+
105
+ - 变更前:getKeyboardAvoidMode接口返回字符串类型。
106
+
107
+ - 变更后:getKeyboardAvoidMode接口返回KeyboardAvoidMode枚举值,为整数类型。
108
+
109
+
110
+ **起始API Level**
111
+
112
+ 11
113
+
114
+ **变更的接口/组件**
115
+
116
+ getKeyboardAvoidMode
117
+
118
+ **适配指导**
119
+
120
+ 如下代码实现:
121
+
122
+ ```typescript
123
+ //EntryAbility.ets
124
+ import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
125
+ import { hilog } from '@kit.PerformanceAnalysisKit';
126
+ import { window } from '@kit.ArkUI';
127
+ import { KeyboardAvoidMode } from '@kit.ArkUI';
128
+
129
+ const DOMAIN = 0x0000;
130
+
131
+ export default class EntryAbility extends UIAbility {
132
+ onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
133
+ this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
134
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
135
+ }
136
+
137
+ onDestroy(): void {
138
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
139
+ }
140
+
141
+ onWindowStageCreate(windowStage: window.WindowStage): void {
142
+ // Main window is created, set main page for this ability
143
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
144
+
145
+ windowStage.loadContent('pages/Index', (err) => {
146
+ let keyboardAvoidMode = windowStage.getMainWindowSync().getUIContext().getKeyboardAvoidMode();
147
+ hilog.info(0x0000, '========keyboardAvoidMode========: %{public}s', JSON.stringify(keyboardAvoidMode));
148
+ if (keyboardAvoidMode === KeyboardAvoidMode.OFFSET) {
149
+ windowStage.getMainWindowSync().getUIContext().setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE)
150
+ }
151
+ let keyboardAvoidMode1 = windowStage.getMainWindowSync().getUIContext().getKeyboardAvoidMode();
152
+ hilog.info(0x0000, '========keyboardAvoidMode========: %{public}s', JSON.stringify(keyboardAvoidMode1));
153
+ if (err.code) {
154
+ hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
155
+ return;
156
+ }
157
+ hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');
158
+ });
159
+ }
160
+
161
+ onWindowStageDestroy(): void {
162
+ // Main window is destroyed, release UI related resources
163
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
164
+ }
165
+
166
+ onForeground(): void {
167
+ // Ability has brought to foreground
168
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground');
169
+ }
170
+
171
+ onBackground(): void {
172
+ // Ability has back to background
173
+ hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground');
174
+ }
175
+ }
176
+ ```
177
+ ```
178
+ //Index.ets
179
+ @Entry
180
+ @Component
181
+ struct KeyboardAvoidExample1 {
182
+ build() {
183
+ Column() {
184
+ Row().height("30%").width("100%").backgroundColor(Color.Gray)
185
+ TextArea().width("100%").borderWidth(1)
186
+ Text("I can see the bottom of the page").width("100%").textAlign(TextAlign.Center).backgroundColor('rgb(179,217,235)').layoutWeight(1)
187
+ }.width('100%').height("100%")
188
+ }
189
+ }
190
+ ```
191
+
192
+ ### XComponent组件上使用renderFit接口显示效果变更
193
+
194
+ **变更原因**
195
+
196
+ 优化XComponent组件上使用renderFit接口显示效果的正确性。
197
+
198
+ **变更影响**
199
+
200
+ 此变更要求涉及XComponent组件上使用renderFit接口的应用进行适配。
201
+
202
+ **说明**
203
+
204
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
205
+
206
+ - 变更前:在XComponent组件上使用renderFit接口,使用部分fit模式的显示效果不符合预期。
207
+
208
+ - 变更后:XComponent组件上使用renderFit接口后,可以正确显示。
209
+
210
+
211
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/79/v3/BnI6mJPmSYSouV0mPug54g/zh-cn_image_0000002295394565.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=F655B062B4F0D4BCC05E5B8396D324CA6F84CC98C5A6BDD8BD3181E6F726382E)
212
+
213
+ **起始API Level**
214
+
215
+ 10
216
+
217
+ **变更的接口/组件**
218
+
219
+ 涉及接口: renderFit。
220
+
221
+ 涉及组件: XComponent组件。
222
+
223
+ **适配指导**
224
+
225
+ 默认行为变更,涉及XComponent组件上使用renderFit接口的应用进行适配,若出现显示效果变更,则需要按照正确效果进行布局。
226
+
227
+ ### 当使用自定义组件名和内置属性重名时编译报错变更
228
+
229
+ **变更原因**
230
+
231
+ 当使用自定义组件名和内置属性重名时,编译会根据指定的白名单进行拦截报错,如果白名单中不存在,编译就拦截不到,导致编译转换后的产物出现问题。
232
+
233
+ **变更影响**
234
+
235
+ 该变更涉及应用适配。
236
+
237
+ 举例说明,执行以下用例:
238
+
239
+ ```
240
+ @Entry
241
+ @Component
242
+ struct enableAnalyzer {
243
+ build() {
244
+ Canvas()
245
+ .enableAnalyzer(true)
246
+ }
247
+ }
248
+ ```
249
+
250
+ 变更前:
251
+
252
+ 不在白名单的内置组件属性与自定义组件重名时,编译没有拦截报错,导致运行时crash。
253
+
254
+ 变更后:
255
+
256
+ 在白名单的内置组件属性与自定义组件重名时,编译拦截报错。
257
+
258
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/08/v3/G-3HBGkHREOOKlFqTe3Gpw/zh-cn_image_0000002260714460.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=8277FAB8F44CD018D80907C1657BA2ADC528D58096329709CF82D1F49187744D)
259
+
260
+ **起始API Level**
261
+
262
+ 10
263
+
264
+ **变更的接口/组件**
265
+
266
+ ArkUI 内置组件属性API。
267
+
268
+ **适配指导**
269
+
270
+ 自定义组件名和内置组件属性重名时,编译报错,修改自定义组件名为其他非内置组件属性名即可解决。
271
+
272
+ 修改前:
273
+
274
+ 自定义组件enableAnalyzer和Canvas的enableAnalyzer重名。
275
+
276
+ ```
277
+ @Entry
278
+ @Component
279
+ struct enableAnalyzer {
280
+ build() {
281
+ Canvas()
282
+ .enableAnalyzer(true)
283
+ }
284
+ }
285
+ ```
286
+
287
+ 修改后:
288
+
289
+ 将自定义组件名改为任意不和内置组件重名的名称,如EnableAnalyzerComp。
290
+
291
+ ```
292
+ @Entry
293
+ @Component
294
+ struct EnableAnalyzerComp {
295
+ build() {
296
+ Canvas()
297
+ .enableAnalyzer(true)
298
+ }
299
+ }
300
+ ```
301
+
302
+ ### CanvasRenderingContext2D方法传NaN和Infinity值后执行的其他绘制方法由不绘制变更为正常绘制
303
+
304
+ **变更原因**
305
+
306
+ CanvasRenderingContext2D绘制路径时,若存在方法的number类型参数传入NaN或Infinity值,部分内容无法绘制或绘制异常,与Html5的行为不一致。
307
+
308
+ **变更影响**
309
+
310
+ 此变更不涉及应用适配。
311
+
312
+ **说明**
313
+
314
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
315
+
316
+ 变更前:绘制路径时,若存在路径方法的number类型参数传入NaN或Infinity值,整个路径无法绘制;对画布进行缩放、旋转、移动或使用变换矩阵进行图形变化时,number类型参数传入NaN或Infinity值,后面执行的方法无法绘制。
317
+
318
+ 变更后:绘制路径时,传入NaN或Infinity值的方法不做处理,根据有效的路径参数进行绘制;对画布进行缩放、旋转、移动或使用变换矩阵进行图形变化时,number类型参数传入NaN或Infinity值,其他传入有效参数的方法正常绘制。
319
+
320
+ 具体接口的差异如下:
321
+
322
+ | 方法 | 变更前 | 变更后 |
323
+ | --- | --- | --- |
324
+ | moveTo | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
325
+ | lineTo | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
326
+ | bezierCurveTo | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
327
+ | quadraticCurveTo | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
328
+ | arc | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
329
+ | ellipse | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
330
+ | rect | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
331
+ | arcTo | 任一路径绘制方法的number类型参数传入NaN或Infinity值时,整个路径无法绘制。 | 路径绘制方法的number类型参数传入NaN或Infinity值时,该方法不生效。其他传入有效参数的路径绘制方法正常绘制。 |
332
+ | globalAlpha | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
333
+ | rotate | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
334
+ | scale | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
335
+ | transform | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
336
+ | setTransform | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
337
+ | translate | 绘制方法的number类型参数传入NaN或Infinity值,在该方法后执行的绘制方法无法绘制。 | number类型参数传入NaN或Infinity值参数时该方法不生效。其他传入有效参数的绘制方法正常绘制。 |
338
+ | lineDashOffset | 设置了虚线样式的线条绘制出来是实线。 | 设置了虚线样式的线条绘制出来是虚线。 |
339
+
340
+ | 示例 | 变更前 | 变更后 |
341
+ | --- | --- | --- |
342
+ | context.moveTo(100, 100)context.lineTo(NaN, 100)context.lineTo(200, 200)context.stroke() | 无绘制内容 | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/fb/v3/iEy_D8KPTkmNx4Uf3HhG0w/zh-cn_image_0000002260817538.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=93E37C6BC02E16FEB777B7A758475B238B717550F9676E6DA7C533D83F5744AD) |
343
+
344
+ **起始API Level**
345
+
346
+ 9
347
+
348
+ **变更的接口/组件**
349
+
350
+ CanvasRenderingContext2D
351
+
352
+ OffscreenCanvasRenderingContext2D
353
+
354
+ Path2D
355
+
356
+ **适配指导**
357
+
358
+ 默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。
359
+
360
+ ### CanvasRenderingContext2D的drawImage接口默认单位变更
361
+
362
+ **变更原因**
363
+
364
+ 当drawImage传入9个参数时,若首个参数(image)为PixelMap类型,则第2至第5个参数(sx、sy、sw和sh)以px为单位进行解析。与文档描述不一致,且绘制得到的图片大小存在问题。
365
+
366
+ **变更影响**
367
+
368
+ 此变更涉及应用适配。
369
+
370
+ **说明**
371
+
372
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
373
+
374
+ 当drawImage传入9个参数时,且首个参数为PixelMap类型时:
375
+
376
+ - 变更前:第2至第5个参数都会以px为单位进行解析。
377
+ - 变更后:第2至第5个参数会以vp为单位进行解析。
378
+
379
+ | | 变更前 | 变更后 |
380
+ | --- | --- | --- |
381
+ | 第2至第5个参数以vp为单位传入 | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/74/v3/TOOlwKcGT8aoyhUaeGUHeg/zh-cn_image_0000002295507621.jpeg?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=77CA44BFBBE4859B5E846D71F181FC5DEC87A3D46ACCCB87474C62CF1EAB00BB) | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/40/v3/gFoupHkpSpOHNOjjkdApbA/zh-cn_image_0000002295394569.jpeg?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=BDA294A5BF968E0CC109452220968BF16E91E7B097044324AE2E25762F144ADA) |
382
+ | 第2至第5个参数以px为单位传入 | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/76/v3/eVgyzXvySL-kyl-KTqEaFw/zh-cn_image_0000002260714464.jpeg?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=3099E5F71172623433F5BD54FAC5B522CD32A8707C8F3BCBE83B23125D222A86) | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/e8/v3/5TGVcGDfQKyL_0QZabc1CA/zh-cn_image_0000002260817542.jpeg?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=694C476FC5BB8C3AE07FA7DC450309955FA03ADFCBEFB74864F979855A81513A) |
383
+
384
+ **起始API Level**
385
+
386
+ 9
387
+
388
+ **变更的接口/组件**
389
+
390
+ CanvasRenderingContext2D的drawImage接口
391
+
392
+ **适配指导**
393
+
394
+ 变更后,使用drawImage接口时,若传入9个参数,且首个参数为PixelMap类型时,要注意第2至第5个参数会以vp为单位进行解析。
395
+
396
+ 示例:
397
+
398
+ ```typescript
399
+ import { image } from '@kit.ImageKit'
400
+
401
+ @Entry
402
+ @Component
403
+ struct Demo {
404
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
405
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
406
+
407
+ build() {
408
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
409
+ Canvas(this.context)
410
+ .width('100%')
411
+ .height('100%')
412
+ .onReady(() => {
413
+ let context = getContext(this)
414
+ let imageSourceApi = image.createImageSource(context.filesDir + "/view.jpg")
415
+ let pixelmap = imageSourceApi.createPixelMapSync();
416
+ let imageInfo = pixelmap.getImageInfoSync()
417
+ let width = px2vp(imageInfo.size.width)
418
+ let height = px2vp(imageInfo.size.height)
419
+ this.context.drawImage(pixelmap, 0, 0, width, height, 50, 50, 250, 200)
420
+ this.context.drawImage(pixelmap, 0, 0, imageInfo.size.width, imageInfo.size.height, 50, 300, 250, 200)
421
+ })
422
+ }
423
+ .width('100%')
424
+ .height('100%')
425
+ }
426
+ }
427
+ ```
428
+
429
+ ### 修复blendMode接口离屏模式会影响组件设置的不透明度的问题
430
+
431
+ **变更原因**
432
+
433
+ blendMode离屏模式与不透明度属性(opacity)同时使用时,组件的不透明度并不等于设置的不透明度,效果异常。
434
+
435
+ **变更影响**
436
+
437
+ 此变更涉及应用适配,仅针对组件设置了blendMode离屏模式且具有不透明度的场景。
438
+
439
+ **说明**
440
+
441
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
442
+
443
+ 变更前:组件设置了blendMode离屏模式,同时设置了opacity不透明度 A,则组件实际不透明度为 A \* A
444
+
445
+ 变更后:组件设置了blendMode离屏模式,同时设置了opacity不透明度 A,则组件实际不透明度为 A
446
+
447
+ 变更前后效果如下:
448
+
449
+ | 变更前 | 变更后 |
450
+ | --- | --- |
451
+ | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ee/v3/MS5nSIpzQmq7X0-pQDEspA/zh-cn_image_0000002295507625.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=4CE72AC85C34F13A14BADFC080E3B32D49FAFC498D9C2306F2665DDEF807B5B6) | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/df/v3/yXmZWDRCR9Gvyqh_SKpjIg/zh-cn_image_0000002295394573.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=C63221819D90F38E0DDF9A84419087A8B166462F5E9152A6EFCC30EA2A11E5A0) |
452
+
453
+ **起始API Level**
454
+
455
+ 11
456
+
457
+ **变更的接口/组件**
458
+
459
+ blendMode
460
+
461
+ **适配指导**
462
+
463
+ 如果开发者希望在同时使用blendMode离屏模式和opacity接口时保持组件的不透明度不变,则需要手动调整原本设定的不透明度。例如,在下方示例代码中,在 Stack()上额外设置.opacity(0.5),以确保实际的透明度为 0.5 \* 0.5。
464
+
465
+ ```
466
+ @Entry
467
+ @Component
468
+ struct Index {
469
+ build() {
470
+ Column() {
471
+ Stack() {
472
+ }
473
+ .height('50%')
474
+ .width('50%')
475
+ .backgroundColor(0x0A59F7)
476
+ .blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
477
+ .opacity(0.5) // 变更后需要额外设置0.5的不透明度保证实际透明度为 0.5*0.5
478
+ }
479
+ .height('100%')
480
+ .width('100%')
481
+ .backgroundColor(0xFFFFFF)
482
+ .opacity(0.5)
483
+ }
484
+ }
485
+ ```
486
+
487
+ ### XComponent设置为Texture模式使用blendMode接口的行为由不生效变更为正常生效
488
+
489
+ **变更原因**
490
+
491
+ 用户使用XComponent组件并设置为Texture模式时,使用blendMode接口没有效果,不符合接口正常规格,需要变更为blendMode接口正常生效。
492
+
493
+ **变更影响**
494
+
495
+ 此变更涉及应用适配。
496
+
497
+ **说明**
498
+
499
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
500
+
501
+ 变更前:XComponent组件设置为Texture模式,使用blendMode接口不生效。
502
+
503
+ 变更后:XComponent组件设置为Texture模式,使用blendMode接口正常生效。
504
+
505
+ **起始API Level**
506
+
507
+ 11
508
+
509
+ **变更的接口/组件**
510
+
511
+ common.d.ts文件的blendMode接口。
512
+
513
+ **适配指导**
514
+
515
+ 需适配场景:
516
+
517
+ 当应用使用XComponent组件并设置为Texture模式(type设置为XComponentType.TEXTURE)时,使用blendMode接口,可能会出现显示效果变更前后不一致的情况,以下是使用场景示意:
518
+
519
+ ```
520
+ @Entry
521
+ @Component
522
+ struct Index {
523
+ private contextOne: Record<string, () => void> = {};
524
+ private contextTwo: Record<string, () => void> = {};
525
+
526
+ build() {
527
+ Column() {
528
+ Stack() {
529
+ XComponent({
530
+ id: 'circle',
531
+ type: XComponentType.TEXTURE,
532
+ libraryname: 'nativerender'
533
+ }).height(50)
534
+ .backgroundColor(Color.Transparent)
535
+ .onLoad((contextOne?: object | Record<string, () => void>) => {
536
+ if (contextOne) {
537
+ this.contextOne = contextOne as Record<string, () => void>;
538
+ }
539
+ })
540
+
541
+ XComponent({
542
+ id: 'rect',
543
+ type: XComponentType.TEXTURE,
544
+ libraryname: 'nativerender'
545
+ }).height(50)
546
+ .backgroundColor(Color.Transparent)
547
+ .onLoad((contextTwo?: object | Record<string, () => void>) => {
548
+ if (contextTwo) {
549
+ this.contextTwo = contextTwo as Record<string, () => void>;
550
+ }
551
+ })
552
+ .blendMode(BlendMode.XOR) // 变更后生效,若需保持变更前行为,可使用BlendMode.None入参
553
+ }
554
+ .height(50)
555
+ .onClick(() => {
556
+ if (this.contextOne) {
557
+ this.contextOne.drawCircle();
558
+ }
559
+ if (this.contextTwo) {
560
+ this.contextTwo.drawRectangle();
561
+ }
562
+ })
563
+ }
564
+ .blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
565
+ .width('100%')
566
+ .height('100%')
567
+ }
568
+ }
569
+ ```
570
+
571
+ | 混合类型 | 变更前 | 变更后 |
572
+ | --- | --- | --- |
573
+ | BlendMode.XOR | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4f/v3/x3fM_tQDR3CfidJmO1d6bQ/zh-cn_image_0000002260714468.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=0866BE48D470F4AEF1D7FFC6B6EB9164F277F048E7BCEE0FAD0C681F1835B2F3) | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/9a/v3/HkgN9dEsSP20k5bhdbd87Q/zh-cn_image_0000002260817546.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=BBB193EDBD348ABC5FEDEB64BE90516A4955E49688A626DD59CC4FB8CFB7EA60) |
574
+ | BlendMode.NONE | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3a/v3/GmU6lRCrQrmw-zyTQeZ8Ng/zh-cn_image_0000002260714468.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=CFEA4160F17EB4AA5AFC44EB0AAD72B908BD7896FAFA3B2150DA1EAAB6BE489C) | ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d8/v3/l_b56j7_TwaqtjneQGIQYQ/zh-cn_image_0000002260714468.png?HW-CC-KV=V1&HW-CC-Date=20260903T083915Z&HW-CC-Expire=86400&HW-CC-Sign=B9F4BA90517FF894FFA2FEC13F118858802EF1E147BB4CF0994E5C302BA4B72C) |
575
+
576
+ 应用若需保持变更前行为,XComponent组件上的blendMode接口使用BlendMode.None入参即可。
577
+
578
+ ### setSpecificSystemBarEnabled接口在横屏的行为变更
579
+
580
+ **变更原因**
581
+
582
+ 修正接口规格,保证接口调用在不同场景下均可正常控制状态栏显隐。
583
+
584
+ **变更影响**
585
+
586
+ 此变更涉及应用适配。
587
+
588
+ 变更前:应用窗口处于横屏状态时,应用使用该接口设置状态栏显隐不生效,状态栏始终处于隐藏状态。
589
+
590
+ 变更后:应用启动之后,若使用该接口设置过状态栏的显隐,状态栏的显隐状态则以应用的设置(多次设置,以最后一次设置状态为准)为准来生效。
591
+
592
+ **起始API Level**
593
+
594
+ 12
595
+
596
+ **变更的接口/组件**
597
+
598
+ Window#setSpecificSystemBarEnabled(name: SpecificSystemBar, enable: boolean, enableAnimation?: boolean): Promise<void>
599
+
600
+ **适配指导**
601
+
602
+ 针对应用预期在横屏时隐藏状态栏的场景,需确认应用自启动之后是否使用该接口主动设置过状态栏显示,若应用设置过状态栏显示,需再次设置状态栏隐藏,才能实现应用横屏时隐藏状态栏。
603
+
604
+ ### 滚动组件通用接口backToTop属性默认值变更
605
+
606
+ **变更原因**
607
+
608
+ List、Grid、Scroll和WaterFlow组件默认不支持点击状态栏回到顶部,为了推广点击状态栏回到顶部特性,提升应用体验,List、Grid、Scroll和WaterFlow组件修改为默认支持点击状态栏回到顶部。
609
+
610
+ **变更影响**
611
+
612
+ 此变更涉及应用适配。
613
+
614
+ **说明**
615
+
616
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
617
+
618
+ - 变更前:List、Grid、Scroll和WaterFlow组件backToTop属性默认值为false,默认不支持点击状态栏回到顶部。
619
+
620
+ - 变更后:API 18及以后版本,List、Grid、Scroll和WaterFlow组件滚动方向为垂直方向时,backToTop属性默认值为true,默认支持点击状态栏回到顶部。
621
+
622
+
623
+ **起始API Level**
624
+
625
+ 15
626
+
627
+ **变更的接口/组件**
628
+
629
+ 涉及接口:backToTop属性。
630
+
631
+ 涉及组件:List、Grid、Scroll和WaterFlow组件。
632
+
633
+ **适配指导**
634
+
635
+ 默认行为变更,涉及List、Grid、Scroll和WaterFlow组件的应用需进行适配,若期望不支持点击状态栏回到顶部功能,则需要设置backToTop属性为false。
636
+
637
+ ### 页面退出场景自定义组件删除前移
638
+
639
+ **变更原因**
640
+
641
+ 在页面退出动画的过程中,UI处于空闲状态。动画结束后,由于释放大量组件导致页面卡顿。可以将页面中自定义组件的释放提前,显著减轻卡顿并优化性能。
642
+
643
+ **变更影响**
644
+
645
+ 此变更涉及应用适配(仅针对Router和Navigation页面默认的退出动画场景)。
646
+
647
+ **说明**
648
+
649
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
650
+
651
+ - 变更前:页面退出动画结束后,依次执行自定义组件生命周期aboutToDisappear、onDisappear。
652
+
653
+ - 变更后:页面退出动画过程中,执行自定义组件生命周期aboutToDisappear。退出动画执行结束后,执行生命周期onDisappear。
654
+
655
+
656
+ **起始API Level**
657
+
658
+ 7
659
+
660
+ **变更的接口/组件**
661
+
662
+ 自定义组件的onDisappear生命周期回调。
663
+
664
+ **适配指导**
665
+
666
+ 在全局复用场景中,当复用的自定义组件的aboutToDisappear生命周期回调中涉及节点移除操作时,应将节点移除操作安排在页面退出完成后,例如onDetach生命周期。
667
+
668
+ ### V1和V2组件冻结能力增强
669
+
670
+ **变更原因**
671
+
672
+ 开发者使用组件冻结功能后,以下场景冻结功能实际未生效:支持冻结的组件嵌套使用的解冻场景、V2自定义组件的解冻场景、Repeat VirtualScroll的复用场景。
673
+
674
+ **变更影响**
675
+
676
+ 此变更涉及应用适配。
677
+
678
+ **说明**
679
+
680
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
681
+
682
+ 变更前:启用组件冻结,组件冻结实际功能未生效,因此在组件嵌套使用的解冻场景、V2自定义组件的冻结场景、Repeat VirtualScroll的复用场景,其相关的状态变量能够刷新、@Watch/@Monitor方法会执行。
683
+
684
+ 变更后:启用组件冻结,组件冻结实际功能会生效,在组件嵌套使用的解冻场景、V2自定义组件的冻结场景、Repeat VirtualScroll的复用场景,其相关的状态变量不再刷新、@Watch/@Monitor方法不会执行。
685
+
686
+ 举例说明,执行以下用例:
687
+
688
+ ```
689
+ @Entry
690
+ @ComponentV2
691
+ struct RepeatVirtualScrollDemo {
692
+ @Local simpleList: Array<string> = [];
693
+ @Local bgColor: Color = Color.Pink;
694
+
695
+ aboutToAppear(): void {
696
+ for (let i = 0; i < 7; i++) {
697
+ this.simpleList.push(`item${i}`);
698
+ }
699
+ }
700
+
701
+ build() {
702
+ Column() {
703
+ Row() {
704
+ Button(`Reduce length to 5`)
705
+ .onClick(() => {
706
+ this.simpleList = this.simpleList.slice(0, 5);
707
+ })
708
+ Button(`Change bgColor`)
709
+ .onClick(() => {
710
+ this.bgColor = this.bgColor == Color.Pink ? Color.Blue : Color.Pink;
711
+ })
712
+ }
713
+
714
+ List() {
715
+ Repeat(this.simpleList)
716
+ .each((obj: RepeatItem<string>) => {
717
+ })
718
+ .key((item: string, index: number) => item)
719
+ .virtualScroll({ totalCount: this.simpleList.length })
720
+ .templateId(() => `a`)
721
+ .template(`a`, (ri) => {
722
+ ChildComponent({
723
+ message: ri.item,
724
+ bgColor: this.bgColor
725
+ })
726
+ }, { cachedCount: 2 })
727
+ }
728
+ .cachedCount(0)
729
+ .height(500)
730
+ }
731
+ .height(`100%`)
732
+ }
733
+ }
734
+
735
+ @ComponentV2({ freezeWhenInactive: true })
736
+ struct ChildComponent {
737
+ @Param @Require message: string;
738
+ @Param @Require bgColor: Color;
739
+ // 支持后二级缓存中的组件不刷新,不会打印相应日志
740
+ @Monitor(`bgColor`)
741
+ onMessageChange(monitor: IMonitor) {
742
+ monitor.dirty.forEach((path: string) => {
743
+ console.log(`repeat---${path} change from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
744
+ })
745
+ }
746
+
747
+ build() {
748
+ Text(`[a]: ${this.message}`)
749
+ .fontSize(50)
750
+ .backgroundColor(this.bgColor)
751
+ }
752
+ }
753
+ ```
754
+
755
+ **起始API Level**
756
+
757
+ 12
758
+
759
+ **变更的接口/组件**
760
+
761
+ freezeWhenInactive。
762
+
763
+ **适配指导**
764
+
765
+ 展示效果不变,组件冻结生效后,@Monitor/@Watch将不再执行。如果需要刷新缓存中的数据,可以关闭组件冻结。
766
+
767
+ ```
768
+ // 关闭组件冻结,freezeWhenInactive设置为false
769
+ @ComponentV2({ freezeWhenInactive: false })
770
+ struct ChildComponent {
771
+ @Param @Require message: string;
772
+ @Param @Require bgColor: Color;
773
+ // 关闭冻结后,二级缓存中的组件会刷新,并打印相应日志
774
+ @Monitor(`bgColor`)
775
+ onMessageChange(monitor: IMonitor) {
776
+ monitor.dirty.forEach((path: string) => {
777
+ console.log(`repeat---${path} change from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
778
+ })
779
+ }
780
+
781
+ build() {
782
+ Text(`[a]: ${this.message}`)
783
+ .fontSize(50)
784
+ .backgroundColor(this.bgColor)
785
+ }
786
+ }
787
+ ```
788
+
789
+ 示例中仅展示了Repeat VirtualScroll的复用场景,其他场景如下:
790
+
791
+ - 组件嵌套使用的解冻场景:在组件冻结开启之后,明确了节点解冻的范围,子组件的非屏上节点不会再被父组件解冻,例子可见[Navigation和TabContent的混用](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-custom-components-freeze#组件混用)。
792
+
793
+ - V2自定义组件的冻结场景:在状态管理V2组件冻结从父组件激活冻结状态的场景中,如果仅子组件开启了冻结,父组件未开启冻结,子组件也能冻结。例子可见[仅子组件开启组件冻结](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-custom-components-freezev2#仅子组件开启组件冻结)。
794
+
795
+
796
+ ### ArkUI双指长按行为变更
797
+
798
+ **变更原因**
799
+
800
+ 在手机、平板设备上,优先响应系统双指操作,默认禁用应用内双指长按。
801
+
802
+ **变更影响**
803
+
804
+ 此变更涉及应用适配。变更后双指长按手势事件默认为系统事件。如果应用需使用双指长按,可通过[IssueReporter平台](https://issuereporter.developer.huawei.com/my-created)向华为申请白名单例外处理。
805
+
806
+ 变更前:应用可通过LongPressGesture长按手势的fingers参数指定触发长按的最少手指数,手指数大于等于1时,即可触发长按手势事件。不指定触发长按的最小手指数时,默认为1。
807
+
808
+ 变更后:使用两根手指长按组件时,不会触发长按手势。使用一根及多根手指长按组件时,长按手势事件触发不受影响。
809
+
810
+ **起始API Level**
811
+
812
+ 7
813
+
814
+ **变更的接口/组件**
815
+
816
+ 长按手势 LongPressGesture
817
+
818
+ ## Audio Kit
819
+
820
+ ### 音频框架识别USB音频设备类型行为变更
821
+
822
+ **变更原因**
823
+
824
+ 原有的USB音频设备在系统侧均识别为耳机输入/输出设备。为了提高识别的准确度,满足应用的UX显示需求,系统侧区分USB耳机和普通的USB音频设备(如音箱)。
825
+
826
+ **变更影响**
827
+
828
+ 此变更涉及应用适配。
829
+
830
+ **说明**
831
+
832
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
833
+
834
+ ArkTS API
835
+
836
+ | 平台 | 变更前 | 变更后 |
837
+ | --- | --- | --- |
838
+ | 通用 | 同USB地址下只有输入设备,识别为USB_HEADSET。 | 同USB地址下只有输入设备,识别为USB_DEVICE。 |
839
+ | PC/2in1 | 同USB地址下只有输出设备,识别为USB_HEADSET。 | 同USB地址下只有输出设备,识别为USB_DEVICE。 |
840
+
841
+ C API
842
+
843
+ | 平台 | 变更前 | 变更后 |
844
+ | --- | --- | --- |
845
+ | 通用 | 同USB地址下只有输入设备,识别为AUDIO_DEVICE_USB_HEADSET。 | 同USB地址下只有输入设备,识别为AUDIO_DEVICE_USB_DEVICE。 |
846
+ | PC/2in1 | 同USB地址下只有输出设备,识别为AUDIO_DEVICE_USB_HEADSET。 | 同USB地址下只有输出设备,识别为AUDIO_DEVICE_USB_DEVICE。 |
847
+
848
+ **起始API Level**
849
+
850
+ 9
851
+
852
+ **变更的接口/组件**
853
+
854
+ ArkTS:@ohos.multimedia.audio.d.ts中DeviceType的USB\_HEADSET接口。
855
+
856
+ C API: native\_audio\_device\_base.h中OH\_AudioDevice\_Type的AUDIO\_DEVICE\_USB\_HEADSET接口。
857
+
858
+ **适配指导**
859
+
860
+ ArkTS API
861
+
862
+ 如应用对USB音频设备有特殊处理需求,现在不仅需要处理USB\_HEADSET类型的音频设备,还需将USB\_DEVICE类型也纳入到处理范围内。
863
+
864
+ ```
865
+ // 针对usb音频设备做特殊处理
866
+ if (devicetype == DeviceType.USB_HEADSET) {
867
+ // do sth
868
+ }
869
+ ```
870
+
871
+ 变更后:如应用对USB音频设备有特殊处理需求,不仅要考虑USB\_HEADSET类型,也要考虑USB\_DEVICE类型的音频设备。
872
+
873
+ ```
874
+ // 针对usb音频设备做特殊处理
875
+ if (devicetype == DeviceType.USB_HEADSET || devicetype == DeviceType.USB_DEVICE) {
876
+ // do sth
877
+ }
878
+ ```
879
+
880
+ C API
881
+
882
+ 如应用对USB音频设备有特殊处理需求,现在不仅需要处理AUDIO\_DEVICE\_USB\_HEADSET类型的音频设备,还需将AUDIO\_DEVICE\_USB\_DEVICE类型也纳入到处理范围内。
883
+
884
+ 变更前:如应用对USB音频设备有特殊处理需求,仅处理AUDIO\_DEVICE\_USB\_HEADSET类型的音频设备即可。
885
+
886
+ ```
887
+ // 针对usb音频设备做特殊处理
888
+ if (devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_HEADSET) {
889
+ // do sth
890
+ }
891
+ ```
892
+
893
+ 变更后:如应用对USB音频设备有特殊处理需求,不仅要考虑AUDIO\_DEVICE\_USB\_HEADSET类型,也要考虑AUDIO\_DEVICE\_USB\_DEVICE类型的音频设备。
894
+
895
+ ```
896
+ // 针对usb音频设备做特殊处理
897
+ if (devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_HEADSET || devicetype == OH_AudioDevice_Type.AUDIO_DEVICE_USB_DEVICE) {
898
+ // do sth
899
+ }
900
+ ```
901
+
902
+ ## Basic Services Kit
903
+
904
+ ### osAccount.distributedAccount.DistributedAccountAbility.getOsAccountDistributedInfo接口返回值生成规则变更
905
+
906
+ **变更原因**
907
+
908
+ 原接口返回值生成规则与设计不符。
909
+
910
+ **变更影响**
911
+
912
+ 此变更不涉及应用适配。
913
+
914
+ 变更前:接口返回值中name、id、nickname、avatar 和 scalableData 生成规则与设计不符。
915
+
916
+ 变更后:修正相关属性的生成规则,较变更前,同一分布式账号信息查询结果有差异。
917
+
918
+ **起始API Level**
919
+
920
+ 9
921
+
922
+ **变更的接口/组件**
923
+
924
+ @ohos.account.distributedAccount.d.ts中如下接口:
925
+
926
+ - getOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): <void>
927
+ - getOsAccountDistributedInfo(): Promise<DistributedInfo>
928
+
929
+ **适配指导**
930
+
931
+ 默认行为变更,无需适配。
932
+
933
+ ## CANN Kit(原HiAI Foundation Kit)
934
+
935
+ ### 原hiai\_foundation目录下的头文件废弃,替换为CANNKit下的头文件
936
+
937
+ **变更原因**
938
+
939
+ 命名优化。
940
+
941
+ **变更影响**
942
+
943
+ 此变更涉及应用适配。
944
+
945
+ 在应用导入依赖时,强烈建议使用更名后的kit,即CANNKit目录下的文件。原hiai\_foundation目录将在短暂保留若干版本提供过度之后删除,建议应用择机完成适配。
946
+
947
+ | C API头文件变更前 | C API头文件变更后 |
948
+ | --- | --- |
949
+ | hiai_foundation/hiai_aipp_param.h | CANNKit/hiai_aipp_param.h |
950
+ | hiai_foundation/hiai_helper.h | CANNKit/hiai_helper.h |
951
+ | hiai_foundation/hiai_options.h | CANNKit/hiai_options.h |
952
+ | hiai_foundation/hiai_tensor.h | CANNKit/hiai_tensor.h |
953
+ | hiai_foundation/hiai_single_op.h | CANNKit/hiai_single_op.h |
954
+
955
+ **起始API Level**
956
+
957
+ 4.1.0(11)
958
+
959
+ **变更的接口/组件**
960
+
961
+ 不涉及
962
+
963
+ **适配指导**
964
+
965
+ C API:以导入hiai\_aipp\_param.h为例
966
+
967
+ 导入hiai\_aipp\_param.h时,需要使用新的kit路径,其他代码不需要修改:
968
+
969
+ 变更前:#include "hiai\_foundation/hiai\_aipp\_param.h"
970
+
971
+ 变更后:#include "CANNKit/hiai\_aipp\_param.h"
972
+
973
+ ## Device Security Kit
974
+
975
+ ### Device Security Kit优化错误码上报
976
+
977
+ **变更原因**
978
+
979
+ Device Security Kit优化错误码类型,新增更明细的错误码。
980
+
981
+ **变更影响**
982
+
983
+ 此变更涉及应用适配。
984
+
985
+ **说明**
986
+
987
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
988
+
989
+ | 变更前 | 变更后 |
990
+ | --- | --- |
991
+ | 已有错误码:201 权限校验失败401 参数检查失败1010800001 内部异常1010800002 设备网络异常1010800003 访问云端服务器异常 | 新增错误码:801 API不支持1010800005 调用数量超过并行阈值1010800006 调用频率超过阈值1010800007 操作超时1010800008 云服务流量超过阈值 |
992
+
993
+ **起始API Level**
994
+
995
+ 12
996
+
997
+ **变更的接口/组件**
998
+
999
+ - checkUrlThreat
1000
+ - checkSysIntegrity
1001
+
1002
+ **适配指导**
1003
+
1004
+ 调用接口需要try...catch捕获异常,获取到异常时可以判断对应错误码信息,做对应的处理。
1005
+
1006
+ ```
1007
+ const TAG = "SafetyDetectJsTest";
1008
+ try {
1009
+ // 调用URL检测接口或者系统完整性检测接口
1010
+ } catch (err) {
1011
+ let e: BusinessError = err as BusinessError;
1012
+ hilog.error(0x0000, TAG, 'CheckSysIntegrity failed: %{public}d %{public}s', e.code, e.message);
1013
+ // 对不同错误码做处理:
1014
+ // 如果返回801,则该设备不支持当前API,不应再次调用该接口。
1015
+ // 如果返回401,则检查参数规格是否与资料规格一致。
1016
+ // 如果返回1010800005,则当前请求超出请求次数,过一天可恢复使用,此时不应重试。
1017
+ // 如果返回1010800006 ,则可延迟1秒后重试
1018
+ // 如果返回1010800008 ,则延迟5秒重试,如果重试再次失败,则每次以指数递增间隔重试。
1019
+ // 如果返回1010800007,则可重试处理。
1020
+ }
1021
+ ```
1022
+
1023
+ ## Form Kit
1024
+
1025
+ ### 卡片支持的接口能力增加校验
1026
+
1027
+ **变更原因**
1028
+
1029
+ 针对支持卡片能力的接口,增加校验。
1030
+
1031
+ **变更影响**
1032
+
1033
+ 此变更不涉及应用适配。
1034
+
1035
+ 变更后针对未标识卡片能力的接口或模块,卡片UI侧代码会调用失败导致卡片加载显示失败。
1036
+
1037
+ **起始API Level**
1038
+
1039
+ 不涉及
1040
+
1041
+ **变更的接口/组件**
1042
+
1043
+ 不涉及
1044
+
1045
+ **适配指导**
1046
+
1047
+ 默认行为变更,无需适配。
1048
+
1049
+ ## Media Kit
1050
+
1051
+ ### 应用创建SoundPool时调用media.createSoundPool接口变更
1052
+
1053
+ **变更原因**
1054
+
1055
+ 原来的应用创建SoundPool实例,一个应用进程只能够创建一个SoundPool实例,为单实例模式,无法满足应用的使用场景。例如很多应用在使用SoundPool的能力的同时,还需要使用TimePicker组件(该组件中封装了SoundPool的能力),单实例模式会使得SoundPool对象之间互相干扰,影响应用的使用体验。
1056
+
1057
+ **变更影响**
1058
+
1059
+ 此变更不涉及应用适配。
1060
+
1061
+ 变更前:创建的SoundPool对象底层为单实例模式,一个应用进程只能够创建1个SoundPool实例。
1062
+
1063
+ 变更后:创建的SoundPool对象底层为多实例模式,一个应用进程最多能够创建128个SoundPool实例。
1064
+
1065
+ **起始API Level**
1066
+
1067
+ 18
1068
+
1069
+ **变更的接口/组件**
1070
+
1071
+ 无变更接口
1072
+
1073
+ **适配指导**
1074
+
1075
+ 默认行为变更,无需适配。
1076
+
1077
+ ## Performance Analysis Kit
1078
+
1079
+ ### 用户态trace打点格式变更
1080
+
1081
+ **变更原因**
1082
+
1083
+ 优化调整原有用户态trace打点格式,提高用户态trace打点格式的前向兼容性。
1084
+
1085
+ **变更影响**
1086
+
1087
+ 此变更不涉及应用适配。
1088
+
1089
+ 此变更涉及自研Trace解析工具适配,具体变更内容如表中所示。
1090
+
1091
+ 变更前:taskId和count字段前的分隔符为空格。
1092
+
1093
+ 变更后:各字段均使用竖线作为分隔符。
1094
+
1095
+ | 打点类型 | API_C接口 | API_JS接口 | 变更前打点格式 | 变更后打点格式 |
1096
+ | --- | --- | --- | --- | --- |
1097
+ | 开启异步Trace打点 | OH_HiTrace_StartAsyncTrace | startTrace | S|PID|H:name taskId | S|PID|H:name|taskId |
1098
+ | 结束异步Trace打点 | OH_HiTrace_FinshAsyncTrace | finishTrace | F|PID|H:name taskId | F|PID|H:name|taskId |
1099
+ | 整数Trace打点 | OH_HiTrace_CountTrace | traceByValue | C|PID|H:name count | C|PID|H:name|count |
1100
+
1101
+ **用户态trace格式拓展规则**
1102
+
1103
+ 对后续新增字段,将以**竖线+字段**的方式,追加在当前打点格式的末尾。
1104
+
1105
+ 假设 S|PID|H:name|taskId 新增字段args1和args2,用户态trace格式变化如下所示:
1106
+
1107
+ - 原格式
1108
+
1109
+ ```
1110
+ S|PID|H:name|taskId
1111
+ ```
1112
+
1113
+ - 新增args1和args2字段后格式
1114
+
1115
+ ```
1116
+ S|PID|H:name|taskId|args1|args2
1117
+ ```
1118
+
1119
+ **特殊场景说明** :因为后续新增字段并不是所有场景都会使用,所以实际字段值可能为空字符串,当有字段为空字符串时,trace格式变化如下所示:
1120
+
1121
+ - args1为空字符串,args2不为空字符串
1122
+
1123
+ ```
1124
+ S|PID|H:name|taskId||args2
1125
+ ```
1126
+
1127
+ - args1不为空字符串,args2为空字符串
1128
+
1129
+ ```
1130
+ S|PID|H:name|taskId|args1
1131
+ ```
1132
+
1133
+ - args1和args2均为空字符串
1134
+
1135
+ ```
1136
+ S|PID|H:name|taskId
1137
+ ```
1138
+
1139
+
1140
+ 详细的用户态trace格式说明参考文档[hitracemeter-view](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hitracemeter-view)。
1141
+
1142
+ **起始API Level**
1143
+
1144
+ - OH\_HiTrace\_StartAsyncTrace:10
1145
+ - OH\_HiTrace\_FinshAsyncTrace:10
1146
+ - OH\_HiTrace\_CountTrace:10
1147
+ - startTrace:12
1148
+ - finishTrace
1149
+ - traceByValue
1150
+
1151
+ **变更的接口/组件**
1152
+
1153
+ - OH\_HiTrace\_StartAsyncTrace
1154
+ - OH\_HiTrace\_FinshAsyncTrace
1155
+ - OH\_HiTrace\_CountTrace
1156
+ - startTrace
1157
+ - finishTrace
1158
+ - traceByValue
1159
+
1160
+ **适配指导**
1161
+
1162
+ 默认行为变更,无需适配。
1163
+
1164
+ 自研Trace解析工具可根据前述**变更影响**中对打点格式变更的介绍自行适配。
1165
+
1166
+ ## Remote Communication Kit
1167
+
1168
+ ### fetch接口新增错误码返回
1169
+
1170
+ **变更原因**
1171
+
1172
+ 系统决策使用蜂窝网络发送网络请求时,如果不满足拉起蜂窝网络的条件,返回1007900986错误码。
1173
+
1174
+ **变更影响**
1175
+
1176
+ 此变更涉及应用适配。
1177
+
1178
+ **说明**
1179
+
1180
+ 此变更已做版本隔离,变更仅在应用的targetSdkVersion设置为大于等于5.1.0(18)时生效。
1181
+
1182
+ API version 18以下不满足拉起蜂窝条件不会抛出1007900986错误码。
1183
+
1184
+ API version 18不满足拉起蜂窝条件抛出1007900986错误码。
1185
+
1186
+ **起始API Level**
1187
+
1188
+ 4.1.0(11)
1189
+
1190
+ **变更的接口/组件**
1191
+
1192
+ fetch接口
1193
+
1194
+ **适配指导**
1195
+
1196
+ 调用接口需要try ctach异常,获取到异常时可以判断对应错误码信息,如果是1007900986错误码,代表当前不满足拉起蜂窝条件(比如用户开启飞行模式、去激活SIM卡等场景)。
1197
+
1198
+ ```
1199
+ const session = rcp.createSession();
1200
+ let request = new rcp.Request("http://example.com/fetch"); // 请在使用中将其替换为实际的网址。
1201
+ request.configuration = {
1202
+ transfer: {
1203
+ pathPreference: 'cellular', // 系统自动决策是否使用蜂窝网络发送网络请求。
1204
+ }
1205
+ }
1206
+
1207
+ try {
1208
+ let response = await session.fetch(request);
1209
+ session.close();
1210
+ } catch (err) {
1211
+ let e: BusinessError = err as BusinessError;
1212
+ console.error("testRcpCellular err: " + JSON.stringify(e));
1213
+ session.close();
1214
+ // 对不同错误码做处理:
1215
+ // 如果返回201,可能是没有申请ohos.permission.GET_NETWORK_INFO权限。
1216
+ // 如果返回1007900986,代表该请求适合使用蜂窝网络,但未正确打开或配置蜂窝网络,可以提示用户进行检查。
1217
+ // 其他可能的网络错误。
1218
+ }
1219
+ ```
1220
+
1221
+ ## NDK开发
1222
+
1223
+ ### JIT功能默认关闭,需申请权限证书并通过审核后启用
1224
+
1225
+ **变更原因**
1226
+
1227
+ JIT(Just In Time)即时编译功能可能带来任意代码注入的风险。为了保护应用安全并维护鸿蒙系统的纯净生态,系统默认关闭JSVM的JIT功能,采用解释执行方式执行JS代码。
1228
+
1229
+ **变更影响**
1230
+
1231
+ 此变更涉及应用适配。
1232
+
1233
+ 变更前:
1234
+
1235
+ API 18以下版本,默认开启JIT。
1236
+
1237
+ 变更后:
1238
+
1239
+ API 18及以上版本,默认关闭JIT,需申请权限证书后启用。关闭后,依赖JIT的wasm接口将无法执行,且JIT与解释执行在特定场景下存在些许性能差异。
1240
+
1241
+ **起始API Level**
1242
+
1243
+ 11
1244
+
1245
+ **变更的接口/组件**
1246
+
1247
+ OH\_JSVM\_CompileWasmModule:无JIT权限会返回JIT\_MODE\_EXPECTED状态码
1248
+
1249
+ OH\_JSVM\_CompileWasmFunction:无JIT权限会返回JIT\_MODE\_EXPECTED状态码
1250
+
1251
+ OH\_JSVM\_CreateWasmCache:无JIT权限会返回JIT\_MODE\_EXPECTED状态码
1252
+
1253
+ OH\_JSVM\_RunScript:无JIT权限执行wasm相关脚本会失败,在特定场景下存在些许性能差异
1254
+
1255
+ **适配指导**
1256
+
1257
+ 新上架应用若期望使用JIT权限,需向应用市场(AppGallery Connect,简称AGC)提交ohos.permission.kernel.ALLOW\_EXECUTABLE\_FORT\_MEMORY受限ACL权限的申请, 并在附带材料中说明使用JSVM引擎JIT功能的具体场景。在权限审批通过后, 开发者可从AGC网站上更新profile证书, 并对应用重新打包上架。权限申请及适配流程可参考《[申请使用受限权限](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/declare-permissions-in-acl)》指导完成。
1258
+
1259
+ **说明**
1260
+
1261
+ 适配注意事项:
1262
+
1263
+ 1. 如果应用未申请相应的权限证书,却试图在配置文件中声明此权限,将会导致应用安装失败。
1264
+ 2. 若在编译时报以下错误日志The ohos.permission.kernel.ALLOW\_EXECUTABLE\_FORT\_MEMORY permission under requestPermissions must be a value that is predefined within the SDK or a custom one that you have included under definePermissions., 请将SDK更新到最新版本(大于等于5.0.3.130版本)。
1265
+
1266
+ ## 调试工具
1267
+
1268
+ ### hiperf命令行调试工具使用权限缩小
1269
+
1270
+ **变更原因**
1271
+
1272
+ 基于对应用的安全隐私保护,调试能力遵循以下原则进行调整:
1273
+
1274
+ 1.在开发者模式下,开发者只能调试自己的应用,无法调试其他三方APP。
1275
+
1276
+ 2.调试信息不包含开发者无权读取的信息。
1277
+
1278
+ **变更影响**
1279
+
1280
+ 此变更涉及应用适配。
1281
+
1282
+ 变更后仅支持对debug应用进行调试。
1283
+
1284
+ **起始API Level**
1285
+
1286
+ 不涉及
1287
+
1288
+ **变更的接口/组件**
1289
+
1290
+ hiperf命令行工具。
1291
+
1292
+ **适配指导**
1293
+
1294
+ 将release应用修改为debug应用,重新编译调试。