harmonyos-best-practices-mcp 0.1.0

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 (460) hide show
  1. package/README.md +121 -0
  2. package/data/docs/bpta-2in1-window-shape.md +296 -0
  3. package/data/docs/bpta-abckitts-implements-instrumentation.md +1279 -0
  4. package/data/docs/bpta-add-watermark.md +379 -0
  5. package/data/docs/bpta-ads-jump.md +67 -0
  6. package/data/docs/bpta-agent.md +472 -0
  7. package/data/docs/bpta-always-on-market-watch.md +703 -0
  8. package/data/docs/bpta-analysis-of-image-blurring.md +231 -0
  9. package/data/docs/bpta-analyze-memory-problem.md +17 -0
  10. package/data/docs/bpta-animation-frame.md +28 -0
  11. package/data/docs/bpta-antipeep-protection.md +291 -0
  12. package/data/docs/bpta-app-architecture-overview.md +25 -0
  13. package/data/docs/bpta-app-asset-protection-design.md +277 -0
  14. package/data/docs/bpta-app-code-ob.md +180 -0
  15. package/data/docs/bpta-app-concurrency-design.md +1189 -0
  16. package/data/docs/bpta-app-data-security.md +397 -0
  17. package/data/docs/bpta-app-icon-configuration.md +226 -0
  18. package/data/docs/bpta-app-privacy-protection.md +295 -0
  19. package/data/docs/bpta-application-aspect-programming-design.md +675 -0
  20. package/data/docs/bpta-application-cold-start-optimization.md +1397 -0
  21. package/data/docs/bpta-application-continue-progess.md +285 -0
  22. package/data/docs/bpta-application-gesture-share.md +468 -0
  23. package/data/docs/bpta-application-knock-file-share.md +263 -0
  24. package/data/docs/bpta-application-knock-video-share.md +552 -0
  25. package/data/docs/bpta-application-latency-optimization-cases.md +615 -0
  26. package/data/docs/bpta-application-power-analysis.md +15 -0
  27. package/data/docs/bpta-application-power-optimization.md +12 -0
  28. package/data/docs/bpta-application-power-test.md +52 -0
  29. package/data/docs/bpta-application-track-practice.md +595 -0
  30. package/data/docs/bpta-arkts-high-performance.md +464 -0
  31. package/data/docs/bpta-arkts-js-memory-analysis.md +111 -0
  32. package/data/docs/bpta-arkts-language.md +18 -0
  33. package/data/docs/bpta-arkweb-component-security.md +1134 -0
  34. package/data/docs/bpta-arkweb_rendering_framework.md +412 -0
  35. package/data/docs/bpta-aspect-implements-aop.md +505 -0
  36. package/data/docs/bpta-audio-and-video.md +30 -0
  37. package/data/docs/bpta-audio-cast.md +460 -0
  38. package/data/docs/bpta-audio-focus-management.md +862 -0
  39. package/data/docs/bpta-audio-in-ear-monitor.md +803 -0
  40. package/data/docs/bpta-audio-playback-series.md +16 -0
  41. package/data/docs/bpta-audio-record-base-on-audiocapturer.md +188 -0
  42. package/data/docs/bpta-audio-record-base-on-avrecorder-arkts.md +179 -0
  43. package/data/docs/bpta-audio-record-base-on-avrecorder.md +207 -0
  44. package/data/docs/bpta-audio-record-base-on-avscreencapture.md +165 -0
  45. package/data/docs/bpta-audio-record-base-on-ohaudio.md +162 -0
  46. package/data/docs/bpta-audio-record-overview.md +34 -0
  47. package/data/docs/bpta-audio-record.md +16 -0
  48. package/data/docs/bpta-audio-ripple-animation.md +198 -0
  49. package/data/docs/bpta-audio-video-synchronization.md +508 -0
  50. package/data/docs/bpta-audio-video.md +15 -0
  51. package/data/docs/bpta-automated-testing-frameworks.md +481 -0
  52. package/data/docs/bpta-avplayer-basic-control.md +533 -0
  53. package/data/docs/bpta-avplayer-embeded-network-video.md +486 -0
  54. package/data/docs/bpta-avplayer-embeded-short-video.md +512 -0
  55. package/data/docs/bpta-avplayer-long-video.md +907 -0
  56. package/data/docs/bpta-avplayer-short-video.md +158 -0
  57. package/data/docs/bpta-avplayer-video-practices.md +15 -0
  58. package/data/docs/bpta-avscreencapture-for-screen-recording.md +1121 -0
  59. package/data/docs/bpta-back-task-implement.md +317 -0
  60. package/data/docs/bpta-background-blur.md +316 -0
  61. package/data/docs/bpta-background-sensors-baned-analysis.md +93 -0
  62. package/data/docs/bpta-best-practices-long-list.md +891 -0
  63. package/data/docs/bpta-best-practices-overview.md +48 -0
  64. package/data/docs/bpta-bluetooth-low-energy.md +905 -0
  65. package/data/docs/bpta-buffer-mode-transcoding.md +728 -0
  66. package/data/docs/bpta-buffer-power-optimization.md +224 -0
  67. package/data/docs/bpta-camera-shot2see.md +368 -0
  68. package/data/docs/bpta-card-update-and-data-interaction.md +670 -0
  69. package/data/docs/bpta-carousel-graphic-works.md +379 -0
  70. package/data/docs/bpta-cell-phone.md +13 -0
  71. package/data/docs/bpta-click-to-click-response-optimization.md +264 -0
  72. package/data/docs/bpta-click-to-complete-delay-analysis.md +637 -0
  73. package/data/docs/bpta-collaboration-office.md +1178 -0
  74. package/data/docs/bpta-comment-reply-pop-up-window.md +523 -0
  75. package/data/docs/bpta-common-list-flows.md +688 -0
  76. package/data/docs/bpta-common-list-operations.md +828 -0
  77. package/data/docs/bpta-common-network-query.md +784 -0
  78. package/data/docs/bpta-comparative_practice_of_taskpool_and_worker.md +381 -0
  79. package/data/docs/bpta-compatible-scheme.md +11 -0
  80. package/data/docs/bpta-complex-type-pass.md +868 -0
  81. package/data/docs/bpta-component-nesting-optimization.md +421 -0
  82. package/data/docs/bpta-component-reuse-issue-diagnosis-and-analysis.md +637 -0
  83. package/data/docs/bpta-component-reuse.md +1258 -0
  84. package/data/docs/bpta-concurrency-capability.md +23 -0
  85. package/data/docs/bpta-concurrent-optimization.md +369 -0
  86. package/data/docs/bpta-content-creation.md +646 -0
  87. package/data/docs/bpta-continue-cast.md +702 -0
  88. package/data/docs/bpta-continue-data.md +335 -0
  89. package/data/docs/bpta-continue.md +1323 -0
  90. package/data/docs/bpta-control-rendering-range.md +29 -0
  91. package/data/docs/bpta-controlling-background-process-cpu.md +31 -0
  92. package/data/docs/bpta-crash-monitor-practice.md +116 -0
  93. package/data/docs/bpta-cross-domain-solutions-for-web-pages.md +308 -0
  94. package/data/docs/bpta-cross-end-migration.md +13 -0
  95. package/data/docs/bpta-cross-module-reference.md +406 -0
  96. package/data/docs/bpta-cross-platform-compatibility.md +321 -0
  97. package/data/docs/bpta-custom-camera-photo.md +454 -0
  98. package/data/docs/bpta-custom-camera-preview.md +1170 -0
  99. package/data/docs/bpta-custom-camera-video.md +322 -0
  100. package/data/docs/bpta-custom-font-settings.md +354 -0
  101. package/data/docs/bpta-custom-hvigor-plugin.md +159 -0
  102. package/data/docs/bpta-custom-keyboard.md +519 -0
  103. package/data/docs/bpta-customdialog-selection-and-development.md +406 -0
  104. package/data/docs/bpta-dark-mode-adaptation.md +321 -0
  105. package/data/docs/bpta-deal-stride-solution.md +261 -0
  106. package/data/docs/bpta-decrease_pakage_size.md +126 -0
  107. package/data/docs/bpta-delayed-trigger-operation.md +215 -0
  108. package/data/docs/bpta-desktop-shortcuts.md +180 -0
  109. package/data/docs/bpta-detection.md +12 -0
  110. package/data/docs/bpta-developing-high-performance-ui.md +19 -0
  111. package/data/docs/bpta-development-scenarios-for-tabs.md +934 -0
  112. package/data/docs/bpta-dialog-encapsulation.md +201 -0
  113. package/data/docs/bpta-dispose-highly-loaded-component-render.md +352 -0
  114. package/data/docs/bpta-distribute-drag-cast.md +60 -0
  115. package/data/docs/bpta-distributed-pasteboard-cast.md +88 -0
  116. package/data/docs/bpta-distributed-pasteboard.md +314 -0
  117. package/data/docs/bpta-drawing-capability-improve-performance.md +436 -0
  118. package/data/docs/bpta-dynamic-link-library.md +272 -0
  119. package/data/docs/bpta-easygo-parallel.md +402 -0
  120. package/data/docs/bpta-fair-use-animation.md +1693 -0
  121. package/data/docs/bpta-file-transmission-based-on-sfft.md +265 -0
  122. package/data/docs/bpta-file-upload-and-download-performance.md +484 -0
  123. package/data/docs/bpta-foldable-guide.md +205 -0
  124. package/data/docs/bpta-folded-hover.md +202 -0
  125. package/data/docs/bpta-form-kit.md +12 -0
  126. package/data/docs/bpta-frontend-invisible-animation-analysis.md +187 -0
  127. package/data/docs/bpta-full-scenario-collaborative-development.md +13 -0
  128. package/data/docs/bpta-fuzzy-scene-performance-optimization.md +256 -0
  129. package/data/docs/bpta-game-prelaunch-practice.md +175 -0
  130. package/data/docs/bpta-general-comments.md +17 -0
  131. package/data/docs/bpta-gestures-practice.md +619 -0
  132. package/data/docs/bpta-global-state-management-state-store.md +472 -0
  133. package/data/docs/bpta-gpu-acceleration-practices.md +11 -0
  134. package/data/docs/bpta-graphic-drawing-practices.md +13 -0
  135. package/data/docs/bpta-grid-based-on-scrollcomponents.md +1112 -0
  136. package/data/docs/bpta-grid-drag-swap.md +725 -0
  137. package/data/docs/bpta-hadss_dialoghub.md +786 -0
  138. package/data/docs/bpta-harmony-application-security.md +1253 -0
  139. package/data/docs/bpta-hdrtosdr.md +439 -0
  140. package/data/docs/bpta-hdrvivid.md +700 -0
  141. package/data/docs/bpta-high-cpu-load-analysis.md +113 -0
  142. package/data/docs/bpta-high-performance-json-parsing.md +263 -0
  143. package/data/docs/bpta-high-performance-protobuf-parsing.md +259 -0
  144. package/data/docs/bpta-hmos-live-stream-audio-call.md +140 -0
  145. package/data/docs/bpta-hmos-live-stream-solution.md +495 -0
  146. package/data/docs/bpta-hmrouter.md +659 -0
  147. package/data/docs/bpta-hopping.md +60 -0
  148. package/data/docs/bpta-hwc-self-rendering-layer-analysis.md +77 -0
  149. package/data/docs/bpta-image-processing-practices.md +13 -0
  150. package/data/docs/bpta-image-to-video-synthesis.md +459 -0
  151. package/data/docs/bpta-image-white-lump-solution.md +282 -0
  152. package/data/docs/bpta-image_get_and_save.md +120 -0
  153. package/data/docs/bpta-implement-timeline-based-on-canvas.md +493 -0
  154. package/data/docs/bpta-implementing-image-filters.md +406 -0
  155. package/data/docs/bpta-implementing-image-resizable.md +270 -0
  156. package/data/docs/bpta-improve-layout-performance.md +547 -0
  157. package/data/docs/bpta-improve-running-efficiency.md +187 -0
  158. package/data/docs/bpta-improve_grid_performance.md +268 -0
  159. package/data/docs/bpta-input-method-framework.md +12 -0
  160. package/data/docs/bpta-intent-recommend-practice.md +313 -0
  161. package/data/docs/bpta-js-leak-watcher.md +153 -0
  162. package/data/docs/bpta-kernel-memory-analysis.md +38 -0
  163. package/data/docs/bpta-keyboard-layout-adapt.md +725 -0
  164. package/data/docs/bpta-landscape-and-portrait-development.md +947 -0
  165. package/data/docs/bpta-layered-architecture-design.md +82 -0
  166. package/data/docs/bpta-lazyforeach-optimization.md +217 -0
  167. package/data/docs/bpta-link-between-apps-overview.md +99 -0
  168. package/data/docs/bpta-list-based-on-scrollcomponents.md +1643 -0
  169. package/data/docs/bpta-lite-wearable-guide.md +1899 -0
  170. package/data/docs/bpta-live-form-development-practice.md +544 -0
  171. package/data/docs/bpta-live-streaming-optimization.md +397 -0
  172. package/data/docs/bpta-local-file-and-data-multithreaded-io.md +367 -0
  173. package/data/docs/bpta-local-file.md +11 -0
  174. package/data/docs/bpta-lock-screen-immersive-live-window.md +473 -0
  175. package/data/docs/bpta-long-snapshot-practice.md +1046 -0
  176. package/data/docs/bpta-low-power-consumption-of-background-tasks.md +14 -0
  177. package/data/docs/bpta-low-power-consumption-of-foreground-tasks.md +14 -0
  178. package/data/docs/bpta-low-power-design-in-dark-mode.md +418 -0
  179. package/data/docs/bpta-ltpo-description.md +323 -0
  180. package/data/docs/bpta-maleoon-gpu-best-practices.md +1297 -0
  181. package/data/docs/bpta-malloc-dispatch-table.md +144 -0
  182. package/data/docs/bpta-managing-audio-input-devices.md +350 -0
  183. package/data/docs/bpta-managing-audio-output-devices.md +399 -0
  184. package/data/docs/bpta-mate-book-fold.md +229 -0
  185. package/data/docs/bpta-matetv-guide.md +223 -0
  186. package/data/docs/bpta-matext-guide.md +269 -0
  187. package/data/docs/bpta-memory-basic-knowledge.md +71 -0
  188. package/data/docs/bpta-memory-optimization.md +545 -0
  189. package/data/docs/bpta-modular-design.md +282 -0
  190. package/data/docs/bpta-multi-device-adaptive-layout.md +775 -0
  191. package/data/docs/bpta-multi-device-adaptive.md +11 -0
  192. package/data/docs/bpta-multi-device-camera.md +584 -0
  193. package/data/docs/bpta-multi-device-collaboration.md +19 -0
  194. package/data/docs/bpta-multi-device-component-layout.md +190 -0
  195. package/data/docs/bpta-multi-device-design-principles.md +26 -0
  196. package/data/docs/bpta-multi-device-function.md +99 -0
  197. package/data/docs/bpta-multi-device-hardware.md +12 -0
  198. package/data/docs/bpta-multi-device-ide.md +124 -0
  199. package/data/docs/bpta-multi-device-interaction.md +11 -0
  200. package/data/docs/bpta-multi-device-layout-overview.md +47 -0
  201. package/data/docs/bpta-multi-device-overview.md +340 -0
  202. package/data/docs/bpta-multi-device-page-layout.md +699 -0
  203. package/data/docs/bpta-multi-device-page.md +19 -0
  204. package/data/docs/bpta-multi-device-resource.md +122 -0
  205. package/data/docs/bpta-multi-device-responsive-layout.md +1274 -0
  206. package/data/docs/bpta-multi-device-responsive.md +14 -0
  207. package/data/docs/bpta-multi-device-screen-diff.md +197 -0
  208. package/data/docs/bpta-multi-device-screen-layout.md +834 -0
  209. package/data/docs/bpta-multi-device-start.md +376 -0
  210. package/data/docs/bpta-multi-device-ui-development.md +27 -0
  211. package/data/docs/bpta-multi-device-window-direction.md +1322 -0
  212. package/data/docs/bpta-multi-device-window-immersive.md +364 -0
  213. package/data/docs/bpta-multi-device-window-mode.md +1293 -0
  214. package/data/docs/bpta-multi-device-window.md +13 -0
  215. package/data/docs/bpta-multi-device.md +13 -0
  216. package/data/docs/bpta-multi-interaction.md +368 -0
  217. package/data/docs/bpta-multi-mobile-payment.md +282 -0
  218. package/data/docs/bpta-multi-music-app-overview.md +365 -0
  219. package/data/docs/bpta-multi-settings-application-page.md +163 -0
  220. package/data/docs/bpta-multi-tab-practice.md +750 -0
  221. package/data/docs/bpta-multi-target.md +490 -0
  222. package/data/docs/bpta-multi-window-practice.md +795 -0
  223. package/data/docs/bpta-multi_game.md +472 -0
  224. package/data/docs/bpta-music-card.md +1916 -0
  225. package/data/docs/bpta-music-playback-scenarios.md +120 -0
  226. package/data/docs/bpta-native-memory-analysis.md +101 -0
  227. package/data/docs/bpta-native-sub-main-comm.md +323 -0
  228. package/data/docs/bpta-navigation-scenarios.md +69 -0
  229. package/data/docs/bpta-network-ca-security.md +241 -0
  230. package/data/docs/bpta-network-reconnection.md +327 -0
  231. package/data/docs/bpta-network-resources.md +24 -0
  232. package/data/docs/bpta-news-reading.md +12 -0
  233. package/data/docs/bpta-news_homepage.md +449 -0
  234. package/data/docs/bpta-object-serialization-performance.md +12 -0
  235. package/data/docs/bpta-one-shot-to-the-end.md +932 -0
  236. package/data/docs/bpta-online-video-playback-lags-practice.md +298 -0
  237. package/data/docs/bpta-optimization-overview.md +227 -0
  238. package/data/docs/bpta-optimization-tool-practice.md +20 -0
  239. package/data/docs/bpta-package-structure.md +13 -0
  240. package/data/docs/bpta-pad-guide.md +268 -0
  241. package/data/docs/bpta-page-brightness-settings.md +256 -0
  242. package/data/docs/bpta-page-transition.md +583 -0
  243. package/data/docs/bpta-pc-guide.md +438 -0
  244. package/data/docs/bpta-pc.md +12 -0
  245. package/data/docs/bpta-perceived-smoothness.md +49 -0
  246. package/data/docs/bpta-performance-detection.md +160 -0
  247. package/data/docs/bpta-performance-guide-reading.md +50 -0
  248. package/data/docs/bpta-performance-mainthread-consumption-detection.md +11 -0
  249. package/data/docs/bpta-performance-optimization.md +23 -0
  250. package/data/docs/bpta-performance-runtime-detection.md +13 -0
  251. package/data/docs/bpta-performance-sliding-frame-drop-detection.md +19 -0
  252. package/data/docs/bpta-performance-startup-time-detection.md +13 -0
  253. package/data/docs/bpta-permission-application.md +318 -0
  254. package/data/docs/bpta-permission-timeout-analysis.md +51 -0
  255. package/data/docs/bpta-photo.md +15 -0
  256. package/data/docs/bpta-picture-preview.md +464 -0
  257. package/data/docs/bpta-picture.md +12 -0
  258. package/data/docs/bpta-playing-formatted-audio-based-avplayer-arkts.md +481 -0
  259. package/data/docs/bpta-playing-formatted-audio-based-avplayer-cpp.md +593 -0
  260. package/data/docs/bpta-playing-pcm-audio-based-audiorenderer.md +959 -0
  261. package/data/docs/bpta-playing-pcm-audio-based-ohaudio.md +599 -0
  262. package/data/docs/bpta-playing-short-audio-based-soundpool.md +182 -0
  263. package/data/docs/bpta-positioning.md +364 -0
  264. package/data/docs/bpta-power-basic-quality-test.md +35 -0
  265. package/data/docs/bpta-power-consumption-analysis.md +12 -0
  266. package/data/docs/bpta-power-consumption-develop-analysis.md +12 -0
  267. package/data/docs/bpta-power-consumption-experience.md +119 -0
  268. package/data/docs/bpta-power-consumption-runtime-analysis.md +15 -0
  269. package/data/docs/bpta-power_overview.md +26 -0
  270. package/data/docs/bpta-pptimized-component-drawing.md +27 -0
  271. package/data/docs/bpta-pre-connect.md +133 -0
  272. package/data/docs/bpta-preloading-resources.md +21 -0
  273. package/data/docs/bpta-program-framework.md +15 -0
  274. package/data/docs/bpta-properly-use-foreground-resources.md +22 -0
  275. package/data/docs/bpta-purax-guide.md +215 -0
  276. package/data/docs/bpta-quality-overview.md +79 -0
  277. package/data/docs/bpta-reader-page-flip.md +890 -0
  278. package/data/docs/bpta-reasonable-audio-playback-use.md +42 -0
  279. package/data/docs/bpta-reasonable-audio-use.md +163 -0
  280. package/data/docs/bpta-reasonable-bluetooth-use.md +52 -0
  281. package/data/docs/bpta-reasonable-gps-use.md +59 -0
  282. package/data/docs/bpta-reasonable-network-use.md +105 -0
  283. package/data/docs/bpta-reasonable-position-navigation-use.md +47 -0
  284. package/data/docs/bpta-reasonable-request-use.md +77 -0
  285. package/data/docs/bpta-reasonable-sensor-use.md +53 -0
  286. package/data/docs/bpta-reasonable-system-use.md +67 -0
  287. package/data/docs/bpta-recommended-use-of-device-id.md +79 -0
  288. package/data/docs/bpta-reduce-layout-nodes.md +30 -0
  289. package/data/docs/bpta-reduce-time-consuming.md +36 -0
  290. package/data/docs/bpta-redundancy-refresh-guide.md +409 -0
  291. package/data/docs/bpta-render-web-using-same-layer-render.md +601 -0
  292. package/data/docs/bpta-resource-and-storage-optimization.md +14 -0
  293. package/data/docs/bpta-retrieve-process-memory-info.md +49 -0
  294. package/data/docs/bpta-rich-text-display.md +475 -0
  295. package/data/docs/bpta-rich-text-editor.md +426 -0
  296. package/data/docs/bpta-risk-control-engine.md +146 -0
  297. package/data/docs/bpta-scenario-performance-optimization.md +17 -0
  298. package/data/docs/bpta-scenario-power-optimization.md +12 -0
  299. package/data/docs/bpta-scenario-stability-address-sanitizer.md +210 -0
  300. package/data/docs/bpta-scenario-stability-app-freeze.md +615 -0
  301. package/data/docs/bpta-scenario-stability-cppcrash.md +516 -0
  302. package/data/docs/bpta-scenario-stability-exception-exit.md +12 -0
  303. package/data/docs/bpta-scenario-stability-jscrash.md +922 -0
  304. package/data/docs/bpta-scenario-stability-leak.md +276 -0
  305. package/data/docs/bpta-scenario-stability.md +14 -0
  306. package/data/docs/bpta-screen-flicker-solution.md +480 -0
  307. package/data/docs/bpta-shared-bicycle.md +509 -0
  308. package/data/docs/bpta-short-video-base-adaptivevideo.md +403 -0
  309. package/data/docs/bpta-smart-reach.md +306 -0
  310. package/data/docs/bpta-smartwatch.md +755 -0
  311. package/data/docs/bpta-smartwatchnavigation.md +384 -0
  312. package/data/docs/bpta-smooth-application-design.md +225 -0
  313. package/data/docs/bpta-smooth-switching.md +294 -0
  314. package/data/docs/bpta-social-communications.md +11 -0
  315. package/data/docs/bpta-social-share.md +637 -0
  316. package/data/docs/bpta-solutions-to-special-issues.md +12 -0
  317. package/data/docs/bpta-sound-quality-switching.md +422 -0
  318. package/data/docs/bpta-spatiality-immersive.md +531 -0
  319. package/data/docs/bpta-special-text-recognition.md +137 -0
  320. package/data/docs/bpta-stability-address-illegal-way.md +190 -0
  321. package/data/docs/bpta-stability-address-sanitizer-catagory.md +212 -0
  322. package/data/docs/bpta-stability-address-sanitizer-faq.md +32 -0
  323. package/data/docs/bpta-stability-address-sanitizer-opt.md +170 -0
  324. package/data/docs/bpta-stability-address-sanitizer-overview.md +23 -0
  325. package/data/docs/bpta-stability-address-sanitizer-principle.md +179 -0
  326. package/data/docs/bpta-stability-analysis.md +17 -0
  327. package/data/docs/bpta-stability-app-analyzer.md +11 -0
  328. package/data/docs/bpta-stability-app-crash-cpp-way.md +200 -0
  329. package/data/docs/bpta-stability-app-crash-js-way.md +148 -0
  330. package/data/docs/bpta-stability-app-crash.md +13 -0
  331. package/data/docs/bpta-stability-app-freeze-ark-runtime.md +339 -0
  332. package/data/docs/bpta-stability-app-freeze-opt.md +80 -0
  333. package/data/docs/bpta-stability-app-freeze-way.md +410 -0
  334. package/data/docs/bpta-stability-app-freeze.md +12 -0
  335. package/data/docs/bpta-stability-app-killed-way.md +49 -0
  336. package/data/docs/bpta-stability-ark-detection.md +12 -0
  337. package/data/docs/bpta-stability-ark-exception-detection.md +38 -0
  338. package/data/docs/bpta-stability-ark-runtime-detection.md +134 -0
  339. package/data/docs/bpta-stability-asan-detection.md +450 -0
  340. package/data/docs/bpta-stability-coding-standard-api.md +2054 -0
  341. package/data/docs/bpta-stability-coding-standard-cpp.md +91 -0
  342. package/data/docs/bpta-stability-coding-standard-libuv.md +772 -0
  343. package/data/docs/bpta-stability-coding-standard-ndk-arkts.md +189 -0
  344. package/data/docs/bpta-stability-coding-standard-node.md +478 -0
  345. package/data/docs/bpta-stability-coding-standard.md +16 -0
  346. package/data/docs/bpta-stability-cpp-crash-opt.md +346 -0
  347. package/data/docs/bpta-stability-detection.md +14 -0
  348. package/data/docs/bpta-stability-deveco-testing.md +73 -0
  349. package/data/docs/bpta-stability-develop-detection.md +17 -0
  350. package/data/docs/bpta-stability-exception-exit-opt.md +12 -0
  351. package/data/docs/bpta-stability-fault-log.md +14 -0
  352. package/data/docs/bpta-stability-fault-type.md +31 -0
  353. package/data/docs/bpta-stability-file-handle-detection.md +96 -0
  354. package/data/docs/bpta-stability-gwpasan-detection.md +588 -0
  355. package/data/docs/bpta-stability-hwasan-detection.md +360 -0
  356. package/data/docs/bpta-stability-ide-static-detection.md +343 -0
  357. package/data/docs/bpta-stability-js-crash-opt.md +21 -0
  358. package/data/docs/bpta-stability-js-memleak-detection.md +214 -0
  359. package/data/docs/bpta-stability-leak-detection.md +15 -0
  360. package/data/docs/bpta-stability-leak-opt.md +251 -0
  361. package/data/docs/bpta-stability-leak-way.md +459 -0
  362. package/data/docs/bpta-stability-log-specs.md +31 -0
  363. package/data/docs/bpta-stability-log-standard-hilog.md +191 -0
  364. package/data/docs/bpta-stability-log-standard.md +11 -0
  365. package/data/docs/bpta-stability-memleak-detection-overview.md +109 -0
  366. package/data/docs/bpta-stability-native-memleak-detection.md +204 -0
  367. package/data/docs/bpta-stability-operate-apm.md +113 -0
  368. package/data/docs/bpta-stability-operate-app-event.md +320 -0
  369. package/data/docs/bpta-stability-operate-event.md +11 -0
  370. package/data/docs/bpta-stability-operate.md +15 -0
  371. package/data/docs/bpta-stability-opt.md +18 -0
  372. package/data/docs/bpta-stability-overview.md +17 -0
  373. package/data/docs/bpta-stability-ram-detection.md +17 -0
  374. package/data/docs/bpta-stability-runtime-address-sanitizer-detection.md +21 -0
  375. package/data/docs/bpta-stability-runtime-appkilled-detection.md +44 -0
  376. package/data/docs/bpta-stability-runtime-crash-detection.md +14 -0
  377. package/data/docs/bpta-stability-runtime-detection.md +14 -0
  378. package/data/docs/bpta-stability-runtime-exception-exit-detection.md +12 -0
  379. package/data/docs/bpta-stability-runtime-freeze-detection.md +21 -0
  380. package/data/docs/bpta-stability-runtime-leak-detection.md +31 -0
  381. package/data/docs/bpta-stability-testing.md +11 -0
  382. package/data/docs/bpta-stability-thread-detection.md +11 -0
  383. package/data/docs/bpta-stability-thread-leak-detection.md +35 -0
  384. package/data/docs/bpta-stability-tsan-detection.md +477 -0
  385. package/data/docs/bpta-stability-ubsan-detection.md +350 -0
  386. package/data/docs/bpta-startup-response-optimization.md +12 -0
  387. package/data/docs/bpta-state-refresh.md +48 -0
  388. package/data/docs/bpta-static-scenarios.md +63 -0
  389. package/data/docs/bpta-status-management.md +872 -0
  390. package/data/docs/bpta-surface-encoder.md +427 -0
  391. package/data/docs/bpta-swiper_high_performance_development_guide.md +357 -0
  392. package/data/docs/bpta-tablet-pc.md +11 -0
  393. package/data/docs/bpta-taskpool_usage_specifications_and_faqs.md +625 -0
  394. package/data/docs/bpta-text-expand-collapse.md +274 -0
  395. package/data/docs/bpta-texture-compression-improve-performance.md +336 -0
  396. package/data/docs/bpta-thread-priority-setting.md +233 -0
  397. package/data/docs/bpta-threads-serialization-timeout-analysis.md +169 -0
  398. package/data/docs/bpta-time-optimization-of-the-main-thread.md +1239 -0
  399. package/data/docs/bpta-travel-navigation.md +11 -0
  400. package/data/docs/bpta-tv.md +11 -0
  401. package/data/docs/bpta-ui-component-encapsulation.md +585 -0
  402. package/data/docs/bpta-ui-component-performance-optimization.md +597 -0
  403. package/data/docs/bpta-ui-dynamic-operations.md +618 -0
  404. package/data/docs/bpta-ui-skip-analysis.md +191 -0
  405. package/data/docs/bpta-unified-drag-and-drop.md +1189 -0
  406. package/data/docs/bpta-use-of-background-hardware-resources.md +16 -0
  407. package/data/docs/bpta-use-of-background-software-resources.md +14 -0
  408. package/data/docs/bpta-use-of-background-tasks.md +23 -0
  409. package/data/docs/bpta-utilize-hwc-efficiently.md +461 -0
  410. package/data/docs/bpta-vdeocast.md +558 -0
  411. package/data/docs/bpta-video-adaptation-based-web.md +462 -0
  412. package/data/docs/bpta-video-barrage.md +68 -0
  413. package/data/docs/bpta-video-codec.md +42 -0
  414. package/data/docs/bpta-video-component-long-video.md +659 -0
  415. package/data/docs/bpta-video-component-short-video.md +337 -0
  416. package/data/docs/bpta-video-layer.md +32 -0
  417. package/data/docs/bpta-video-practices.md +12 -0
  418. package/data/docs/bpta-video-render.md +1225 -0
  419. package/data/docs/bpta-video-rom.md +37 -0
  420. package/data/docs/bpta-video-thumbnail.md +179 -0
  421. package/data/docs/bpta-video-wifi.md +40 -0
  422. package/data/docs/bpta-vsync-power-optimization.md +116 -0
  423. package/data/docs/bpta-waterflow-based-on-scrollcomponents.md +989 -0
  424. package/data/docs/bpta-waterflow-operations.md +991 -0
  425. package/data/docs/bpta-waterflow-performance-optimization.md +191 -0
  426. package/data/docs/bpta-wavewheel-for-image-editor.md +421 -0
  427. package/data/docs/bpta-wear.md +12 -0
  428. package/data/docs/bpta-web-adaptation.md +451 -0
  429. package/data/docs/bpta-web-app-jump-and-pull-up.md +310 -0
  430. package/data/docs/bpta-web-click-response-delay-analysis.md +164 -0
  431. package/data/docs/bpta-web-completion-delay-analysis.md +209 -0
  432. package/data/docs/bpta-web-develop-optimization.md +2596 -0
  433. package/data/docs/bpta-web-development.md +15 -0
  434. package/data/docs/bpta-web-frame-rate-performance-analysis.md +252 -0
  435. package/data/docs/bpta-web-interceptor.md +724 -0
  436. package/data/docs/bpta-web-performance-optimization.md +11 -0
  437. package/data/docs/bpta-window-and-screen-management.md +12 -0
  438. package/data/docs/bpta-zhenlv.md +559 -0
  439. package/data/docs/changelog.md +1410 -0
  440. package/data/docs/low-power-consumption-suggestions.md +246 -0
  441. package/data/docs/multi-business-office.md +275 -0
  442. package/data/docs/multi-communication-app.md +240 -0
  443. package/data/docs/multi-community-app.md +257 -0
  444. package/data/docs/multi-convenient-life.md +501 -0
  445. package/data/docs/multi-financial-app.md +288 -0
  446. package/data/docs/multi-news-read.md +286 -0
  447. package/data/docs/multi-picture-app.md +219 -0
  448. package/data/docs/multi-shopping-price-comparison.md +254 -0
  449. package/data/docs/multi-short-video-app.md +315 -0
  450. package/data/docs/multi-ticket-class.md +458 -0
  451. package/data/docs/multi-travel-accommodation.md +361 -0
  452. package/data/docs/multi-travel-navigation.md +449 -0
  453. package/data/docs/multi-video-app.md +492 -0
  454. package/data/index.md +2886 -0
  455. package/dist/data.js +180 -0
  456. package/dist/index.js +203 -0
  457. package/dist/search.js +102 -0
  458. package/package.json +57 -0
  459. package/scripts/trim-code-extra.mjs +78 -0
  460. package/scripts/trim-code.mjs +106 -0
@@ -0,0 +1,277 @@
1
+ # 应用资产保护设计
2
+
3
+ > 来源: https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-app-asset-protection-design
4
+ > 文档标识(fileName): bpta-app-asset-protection-design
5
+ > 目录(catalogName): best-practices
6
+ > 语言: cn
7
+ > 更新时间: 2026-06-23 03:39:21
8
+ > 导航地址: /hmos/hmos-dp1
9
+
10
+ ---
11
+ #### 概述
12
+
13
+ 本文档面向HarmonyOS应用的设计人员,介绍应用在资产保护方案设计中可能遇到的典型场景及推荐设计方案,并提供方案的关键点和参考案例。
14
+
15
+ #### 典型业务场景
16
+
17
+ HarmonyOS应用资产包括代码、用户数据、安全密钥。数据库资产在服务器侧,由应用自行保护。HarmonyOS系统提供保护机制。
18
+
19
+ 在当前APP开发过程中遇到的实际资产保护业务场景中,总结出以下典型场景,可供更多APP参考,设计资产保护业务方案:
20
+
21
+ | | | |
22
+ | --- | --- | --- |
23
+ | **场景编号** | **资产保护场景** | **简述** |
24
+ | 1 | 保护应用代码 | 保护应用代码是为了防止恶意攻击者进行反向工程和盗用。未受保护的代码可能被攻击者获取、修改、复制或分发,导致知识产权被侵犯或应用程序被用于恶意目的,如盗取用户个人信息或进行其他违法活动。 |
25
+ | 2 | 保护用户数据 | 用户数据包括个人信息、账户信息、交易记录、位置信息等。若未妥善保护,攻击者可能获取并恶意使用这些数据,如盗取身份信息、银行账户信息等。此外,用户数据保护是监管要求的重点,不当保护会损害应用及HarmonyOS系统的用户口碑。 |
26
+ | 3 | 保护应用密钥 | 密钥用于加密和解密数据。密钥泄露导致数据泄露和安全问题。 |
27
+
28
+ #### HarmonyOS安全能力整体架构
29
+
30
+ ## HarmonyOS安全能力概述
31
+
32
+ HarmonyOS安全能力全景图如下:
33
+
34
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1b/v3/ekI8tXUcSc2cUyM9ejS4DA/zh-cn_image_0000002194010336.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=E2E7026C7F0A7F792F6423E6507348BE7E67FBF67AA674320057601299A402BF "点击放大")
35
+
36
+ **系统安全:**
37
+
38
+ 系统安全基于硬件构建安全可信根。多种技术从底层构建HarmonyOS系统安全底座。这些技术包括访问控制、漏洞防利用、系统完整性保护和网络安全保护。
39
+
40
+ **应用安全生态:**
41
+
42
+ HarmonyOS系统在系统安全底座之上,提供多种安全保护能力。这些能力覆盖应用资产保护的各种场景。HarmonyOS应用可以使用这些能力,保护应用全生命周期内的资产。
43
+
44
+ **HarmonyOS应用:**
45
+
46
+ HarmonyOS应用是自身应用资产的责任方。应用需要按需使用HarmonyOS系统提供的安全能力,并按照推荐的资产保护设计进行保护。
47
+
48
+ ## HarmonyOS资产保护关键技术介绍
49
+
50
+ **代码混淆**
51
+
52
+ 移动应用的代码安全非常重要。DevEco Studio默认提供代码混淆能力。混淆后的JS、TS、ArkTS代码难以逆向分析。混淆功能支持对类、方法等名称进行混淆。
53
+
54
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1d/v3/4MpA6rIXS8SvFy_RodIDgQ/zh-cn_image_0000002193850752.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=112BFC2760BCC8DD9A840BEE09FFD92955B05DEC1B5605E8EA6DAA2782D0E672 "点击放大")
55
+
56
+ 代码混淆方案基于源码混淆。源码转换为抽象语法树(AST),在AST上进行作用域和符号分析。混淆名称和属性,移除日志打印代码,合并语句,压缩代码体积。这些操作在保证运行时性能不变的前提下,有效保护开发者核心知识产权。
57
+
58
+ 混淆前:
59
+
60
+ ```
61
+ function getAgeInfo() {
62
+ let age = 20;
63
+ let name = 'jack';
64
+ if (name) {
65
+ return age;
66
+ } else {
67
+ return -1;
68
+ }
69
+ }
70
+
71
+ console.log('' + getAgeInfo());
72
+ ```
73
+
74
+ 混淆后:
75
+
76
+ ```
77
+ function getAgeInfo() {
78
+ let c = 0x14;
79
+ let b = 'jack';
80
+ if (b) {
81
+ return c;
82
+ } else {
83
+ return -0x1;
84
+ }
85
+ }
86
+
87
+ console['log']('' + getAgeInfo());
88
+ ```
89
+
90
+ **应用加密**
91
+
92
+ HarmonyOS系统提供端到端的应用代码保护机制。该机制以系统安全为基础,构建内核级应用生命周期内的代码安全保护能力。
93
+
94
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/0c/v3/jPC91h2IT3KwGBXYBajgBA/zh-cn_image_0000002193850744.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=19572F79C699C9BB6A94C40F8CF78094BBC5051E5AA7AB666037254E11A31874 "点击放大")
95
+
96
+ 开发者向应用市场提交上架申请。应用市场审核后,对上架应用进行代码加密。应用在设备上安装时,安装文件仍处于加密状态,有效保护应用程序。应用程序启动时,内核加载的文件按页解密执行。应用加密采用标准AES加密算法,提高应用程序的安全性。
97
+
98
+ **应用包签名**
99
+
100
+ 开发者对应用安装包签名后,上架应用市场。应用市场进行上架检测和质量审核。满足上架要求的应用,由应用市场重签名。只有重签名的应用才允许在设备上安装。
101
+
102
+ HarmonyOS系统对所有安装应用进行签名校验,确保来源可信和完整性。签名校验在应用安装时进行,签名校验失败则禁止安装。HarmonyOS系统使用根CA对应用安装包进行签名校验。签名证书采用证书链方式签署,从根CA开始。
103
+
104
+ HarmonyOS系统使用根CA对应用程序安装包进行签名校验,应用安装包的签名证书都需要从根CA开始采用证书链的方式签署。
105
+
106
+ 对于调试应用的安装,HarmonyOS系统在校验安装包签名基础上,匹配应用调试Profile中的设备ID与当前设备ID。不匹配则禁止安装。
107
+
108
+ 对于发布应用的安装,HarmonyOS系统仅允许经过应用市场审核并通过重签名的安装包进行安装。
109
+
110
+ **关键资产存储**
111
+
112
+ 关键资产存储(Asset Store)提供关键敏感隐私数据的本地加密存储。应用可以将高安全敏感的关键资产短数据(如APP账号密码、银行卡号等)在本地加密存储。加密密钥存储在安全的隔离区,只有合法应用才能访问并解密这些数据。具体的架构如下:
113
+
114
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/c6/v3/re1TdSoBR2qef5--F6U1bA/zh-cn_image_0000002193850760.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=A64C9A80FC2851A3C7AD25A38F465DADFF62B490C43A95A1D2F83BECA13FF929 "点击放大")
115
+
116
+ 除此之外,关键资产存储还支持以下安全措施:
117
+
118
+ - 基于属主的访问控制: 所有的关键资产都受属主访问控制保护,业务无需设置。
119
+ - 基于锁屏状态的访问控制:分为三种保护等级(安全性依次递增),开机后可访问、首次解锁后可访问、解锁时可访问,业务可根据实际情况设置任意一种,若不设置,则默认保护等级为“首次解锁后可访问”。
120
+ - 基于锁屏密码设置状态的访问控制:在用户设置了锁屏密码后,关键资产才被允许访问。
121
+ - 基于用户认证的访问控制:任意一种认证方式(指纹、人脸、PIN码)通过,均可授权本次关键资产的访问。
122
+
123
+ **密钥管理**
124
+
125
+ HarmonyOS通用密钥库系统(HarmonyOS Universal KeyStore,HUKS)是HarmonyOS提供的系统级密钥管理服务,支持密钥的全生命周期管理,包括密钥生成、存储、使用和销毁,同时提供密钥的合法性证明。HUKS基于系统安全能力,确保业务密钥的安全,业务无需自行实现相关功能。
126
+
127
+ HUKS的核心安全设计如下。
128
+
129
+ 密钥不出安全环境:HUKS的核心特点是密钥全生命周期明文不出HUKS Core。在有硬件条件的设备上,如具备TEE(Trusted Execution Environment)或安全芯片的设备,HUKS Core运行在硬件安全环境中,确保即使REE(Rich Execution Environment)环境被攻破,密钥明文也不会泄露。
130
+
131
+ 系统级安全加密存储:基于设备根密钥加密业务密钥。有条件设备叠加用户口令加密。
132
+
133
+ 严格的访问控制:只有合法业务有权访问密钥,支持用户身份认证以满足高安全敏感场景下的密钥访问需求。
134
+
135
+ 密钥的合法性证明:为业务提供硬件厂商级别的证明,确保密钥未被篡改,确保存储在有硬件保护的HUKS Core中,并具备正确的密钥属性。
136
+
137
+ 密钥会话是HUKS中承载密钥使用的基础,主要用于初始化密钥信息和缓存业务数据。数据的密码学运算和密钥密文的加解密都在HUKS Core中进行,以确保密钥明文和运算过程的安全。
138
+
139
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/cb/v3/g69NVfr2Sm-XFnzRvdrjuA/zh-cn_image_0000002229336137.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=5790C9BC4555E8785888B79832BD3FBFA6EDEEAA0EF6487C8B0E63556847E359 "点击放大")
140
+
141
+ #### 应用资产保护设计
142
+
143
+ ## 概述
144
+
145
+ 不同的资产保护场景需要的HarmonyOS系统安全能力各不相同,本章将按照常见场景设计相应的HarmonyOS安全保护方案。
146
+
147
+ ## 保护应用代码场景
148
+
149
+ **场景描述**
150
+
151
+ 在HarmonyOS应用业务实现过程中,应用代码是最重要的资产和核心。保护不当可能导致严重的知识产权损失和安全攻击。
152
+
153
+ 在HarmonyOS开发中,应用代码分为C/C++实现的代码和JS、TS、ArkTS实现的代码,最终编译产物主要包括.so文件和.abc文件。.so文件反编译难度大,代码逆向困难,应用可按需决定是否进一步保护。.abc文件为ArkTS编译后的字节码,反编译难度小,容易逆向分析出核心代码,建议根据业务情况做一定保护。
154
+
155
+ **HarmonyOS开发实现方案介绍**
156
+
157
+ HarmonyOS系统整体代码资产保护策略:
158
+
159
+ (1)开发阶段默认启用基础混淆,并支持与第三方商用混淆工具对接。
160
+
161
+ (2)上架阶段对应用进行加密。
162
+
163
+ (3)设备运行时对应用进行解密处理。
164
+
165
+ 其中代码混淆和应用加密方案的介绍在**[混淆加固](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-build-obfuscation)**和**[应用加密](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/code-protect)**章节。
166
+
167
+ **业务实现中的关键点**
168
+
169
+ **DevEco Studio默认开启基础代码混淆**
170
+
171
+ 为保护代码资产,编译器默认开启代码混淆功能,混淆参数名和局部变量名。建议保持混淆开启,除非有特殊情况。若需关闭代码混淆,可在模块级的build-profile.json5配置文件中进行设置。
172
+
173
+ **官方提供的自定义混淆选项**
174
+
175
+ DevEco Studio提供高阶混淆能力,开发者可通过以下步骤配置:
176
+
177
+ 1. 打开Stage模型的ArkTS工程。
178
+
179
+ 2. 打开模块级build-profile.json5文件,在obfuscation字段下配置混淆规则。
180
+
181
+ 3. 在混淆规则文件中,files字段配置混淆规则文件路径,高级混淆能力通过将混淆规则写入混淆规则文件实现。
182
+
183
+ 在混淆规则文件中,开发者可以写混淆选项和保留选项,具体的混淆选项参考[混淆配置](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-app-code-ob#section171089239254),使用第三方安全加固厂商加固请参考[使用第三方加固](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-app-code-ob#section4564113173012)。
184
+
185
+ **HarmonyOS提供应用加密机制**
186
+
187
+ 开发者向应用市场提交上架申请、选择加密并通过审核后,应用市场会对所有上架的应用做代码加密,具体加密的对象为应用包中的.abc文件,并在应用运行加载进内存时,在系统内核进行解密。目标是保护应用程序二进制代码安全,保护开发者知识产权,并避免应用脱离设备后仍能运行。
188
+
189
+ 应用加密主要通过以下三个关键能力实现:
190
+
191
+ 代码加密能力:基于abc文件的加密,兼容快速补丁修复,并采用代码签名机制。
192
+
193
+ 基于动态加载按页解密能力:在内核中按应用加载文件的内存页进行解密,提升解密效率。
194
+
195
+ 密钥分发:通过平台账号的访问控制和设备TEE的设备认证进行密钥分发。
196
+
197
+ 整套方案作为HarmonyOS系统应用安全的基础能力,由应用市场、HarmonyOS内核和终端设备实现,开发者无需进行任何配置和开发。
198
+
199
+ 第三方提供的应用安全加固保护
200
+
201
+ HarmonyOS在系统提供的应用代码保护机制之外,同时也兼容三方提供的安全加固保护机制,在应用代码资产保护述求较高的场景下,建议在开启系统保护机制情况下,同时使能三方的加固保护,增强代码资产保护的纵深防御能力。部分[三方安全厂商](https://developer.huawei.com/consumer/cn/market/prod-list/a97c5f2de7df49f49c139a32125fa4c8/categoryL2_202404220005?categoryIdL3=categoryL3_202403120002)已支持HarmonyOS系统,具体方法请参考[使用第三方加固](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-app-code-ob#section4564113173012)。
202
+
203
+ **案例参考**
204
+
205
+ 应用代码保护是系统应用安全的基本能力。不同垂类的应用对应用安全加固的要求和实现方式存在差异。以安全性要求最高的金融类应用为例,可以参考以下HarmonyOS应用的实际保护案例:
206
+
207
+ | | | |
208
+ | --- | --- | --- |
209
+ | **混淆** | 基础混淆 | 使用HarmonyOS官方Arkguard默认配置 |
210
+ | 增强混淆 | 第三方提供,建议在安全要求较高的场景中选择开启,提高应用代码资产保护的纵深防御能力 |
211
+ | **加密(应用市场)** | 代码加密 | 默认支持,需要上架时选择开启 |
212
+ | **加壳** | 加壳 | **禁止** |
213
+ | **其他加固** | 防调试 | 在HarmonyOS系统的基础上,第三方提供增强 |
214
+ | 防篡改 | 在HarmonyOS系统基础上,三方提供增强 |
215
+
216
+ **与业界方案特殊差异说明**
217
+
218
+ 平台的应用安全机制和生态情况不同,因此应用加固方案也有所不同。具体区别如下:
219
+
220
+ | | |
221
+ | --- | --- |
222
+ | **操作系统** | **应用自保护策略** |
223
+ | HarmonyOS | 应用加密(建议) + 基础混淆 + 高级混淆(三方提供商业源码级别的混淆工具,安全要求高的场景建议,但需要满足上架审核要求) |
224
+ | 其他 | 加壳(主要)/应用加密(主要)+ 普通混淆/高级混淆(商业源码级别的混淆工具,但需要满足上架审核要求) |
225
+
226
+ ## 保护用户数据
227
+
228
+ **场景描述**
229
+
230
+ 应用在用户使用过程中会产生用户数据,包括个人信息如姓名、地址、电话号码、电子邮件地址,以及使用过程中的行为数据,如使用时长、功能使用次数。这些数据需根据类型进行保护,以符合监管和隐私要求。本设计文档将用户数据分为普通用户数据和敏感个人数据两类,提供HarmonyOS开发中的保护能力和方案。应用可依据《个人信息保护法》或其他分类方法对数据进行分类。
231
+
232
+ **HarmonyOS开发实现方案介绍**
233
+
234
+ 在HarmonyOS系统中,普通用户数据通过每个应用独立的应用沙箱进行隔离。应用沙箱保护机制确保应用无法访问除自身文件目录之外的其他应用或用户的数据。此外,所有应用的目录可见范围均经过权限隔离,仅自身和部分系统进程有权限访问,未授权的第三方应用无法访问。
235
+
236
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/9a/v3/b5WQjJgFRBu0-9W-OiVSGQ/zh-cn_image_0000002194010332.png?HW-CC-KV=V1&HW-CC-Date=20260623T075630Z&HW-CC-Expire=86400&HW-CC-Sign=FB2FF2D8899B5176486643A3C1E4B3D01873D3AC5BDC4C3BD47EB6A1F1B35B5B "点击放大")
237
+
238
+ 除此之外,对于一些更加敏感的用户数据,如用户口令、身份证号、银行卡号等,HarmonyOS系统还提供关键资产存储服务,关键资产的安全存储,依赖底层的TEE可信执行环境。具体来说,关键资产的加/解密操作以及访问控制校验,都在安全环境中完成,即使系统被攻破,也能保证用户敏感数据不发生泄露。详细方案可以参考[Asset Store Kit简介](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/asset-store-kit-overview)。
239
+
240
+ **业务实现中的关键点**
241
+
242
+ **应用沙箱隔离及应用文件路径**
243
+
244
+ 应用沙箱限定了应用可访问的数据范围。在“应用沙箱目录”中,应用仅能访问自己的文件和必需的系统文件。因此,本应用的文件不会被其他应用访问,从而确保了应用文件的安全。
245
+
246
+ 开发指导可以参考[应用沙箱目录](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-sandbox-directory)。
247
+
248
+ **关键资产存储服务使用**
249
+
250
+ HarmonyOS系统通过Asset Store Kit为应用开发者提供关键资产的安全存储与管理服务。
251
+
252
+ 开发指导及相关案例可参考[Asset Store Kit(关键资产存储服务)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/asset-store-kit)。
253
+
254
+ **与业界方案特殊差异说明**
255
+
256
+ 应用开发者可以参考业界的类似方案来设计和使用本能力。
257
+
258
+ ## 保护应用密钥
259
+
260
+ **场景描述**
261
+
262
+ 在HarmonyOS中用于加密和解密数据的密钥是其非常重要且需要保护的资产之一。密钥的主要使用场景包括:
263
+
264
+ - 数据加密: 应用密钥可以用于加解密重要数据;
265
+ - 应用安全: 应用密钥可以用于保护应用免受恶意攻击;
266
+ - 数据完整性验证: 应用密钥可以用于验证数据的完整性,确保数据在传输或存储过程中没有被篡改;
267
+ - 应用身份验证: 应用密钥可以用于验证应用或服务器身份。
268
+
269
+ 开发指导及相关案例可参考[Universal Keystore Kit简介](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-overview)。
270
+
271
+ **与业界方案特殊差异说明**
272
+
273
+ 本方案的核心层运行在硬件安全环境中,除此之外,与行业标准方案没有显著差异。
274
+
275
+ #### 参考
276
+
277
+ [鸿蒙生态应用安全技术白皮书](https://developer.huawei.com/consumer/cn/doc/guidebook/harmonyecoappsecurity-guidebook-0000001808819033)
@@ -0,0 +1,180 @@
1
+ # 应用代码混淆
2
+
3
+ > 来源: https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-app-code-ob
4
+ > 文档标识(fileName): bpta-app-code-ob
5
+ > 目录(catalogName): best-practices
6
+ > 语言: cn
7
+ > 更新时间: 2026-06-23 03:39:21
8
+ > 导航地址: /hmos/hmos-dp1
9
+
10
+ ---
11
+ #### 概述
12
+
13
+ 代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。代码混淆有以下几个方面的作用:
14
+
15
+ 1. 保护知识产权:代码混淆防止他人轻易复制和窃取软件代码,增加逆向工程难度。
16
+ 2. 防止逆向工程:逆向工程是分析软件以了解其工作原理和实现细节的过程。代码混淆可增加逆向工程的难度,保护应用程序免受恶意修改或破坏。
17
+ 3. 提高安全性:代码混淆减少漏洞和安全风险,增加攻击者利用漏洞的难度。
18
+ 4. 降低反盗版和欺诈风险:混淆代码可增加攻击者破解软件许可验证系统或修改代码绕过付费机制的难度,从而减少盗版和欺诈。
19
+
20
+ 针对工程源码的混淆提高破解难度,缩短类和成员名称,减小应用大小。
21
+
22
+ #### 混淆开启
23
+
24
+ 从DevEco Studio版本4.0 Beta1开始,hvigor插件提供代码混淆功能。开启混淆的条件如下:
25
+
26
+ - 工程为Stage模型
27
+ - 在Release编译模式下
28
+ - 模块build-profile.json5文件中开启混淆配置
29
+
30
+ ```
31
+ "arkOptions": {
32
+ "obfuscation": {
33
+ "ruleOptions": {
34
+ "enable": true,
35
+ // ...
36
+ }
37
+ }
38
+ },
39
+ ```
40
+
41
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ce/v3/qsCZR9WST9O2C_5mmK2L9w/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=6B0BC20A935A1E078797FF2193C44FBB3CB7E079EC71E77B9552AB212139B76D)
42
+
43
+ enable默认为false,默认不开启代码混淆功能。
44
+
45
+ 满足开启混淆的条件后,选择目标模块,点击Build -> Make Module开始编译。
46
+
47
+ 如果工程或模块是Static Library,则该工程或模块是一个HAR。
48
+
49
+ 构建[字节码HAR](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section16598338112415)时有以下三种方式:
50
+
51
+ 1. 以Debug模式构建HAR,会直接打包源码,不进行代码混淆。
52
+ 2. 以Release模式构建HAR,会编译、混淆并压缩代码。
53
+ 3. 构建字节码格式的HAR。开启混淆时,编译器会先对源码中间文件进行混淆,再生成abc字节码。
54
+
55
+ **图1** DevEco Studio选择release编译模式
56
+
57
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/61/v3/RMFZ4M5_TJqB9RHPIwUz-A/zh-cn_image_0000002194010408.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=274B5B39FB49357A6DA1CCBB44594E368A725536C935E9D22F69D4CEA9A3F877 "点击放大")
58
+
59
+ **图2** DevEco Studio指定模块编译
60
+
61
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/c/v3/cWFq9Yc6Rry49pDdwCrLeg/zh-cn_image_0000002229336225.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=D672EF13D711231111CD922E035B75F632D4486A84063278A2354545CA4812C9 "点击放大")
62
+
63
+ #### 混淆配置能力
64
+
65
+ ## 编译选项
66
+
67
+ 若按照上述编译流程开启代码混淆,在DevEco Studio 5.0.3.600之前的版本,默认仅混淆参数名和局部变量名。从DevEco Studio 5.0.3.600版本起,默认启用四项推荐的混淆选项:-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-filename-obfuscation和-enable-export-obfuscation。开发者可以根据需要进一步修改混淆配置。
68
+
69
+ 如果在流水线开启混淆并使用release构建模式,在编译参数加上 -p buildMode=release -p debuggable=false。
70
+
71
+ ## 混淆配置
72
+
73
+ 在每个模块下都能找到build-profile.json5文件,如下图所示。可以在此文件中配置是否开启混淆及混淆配置文件。
74
+
75
+ **图3** 编译配置文件
76
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/42/v3/Vm0tAGNhQzS1NKLjNXnzHw/zh-cn_image_0000002229336217.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=F77A8E574428E06DC612D64057FA161394340902764DBAF4AF74720BD1AE7174 "点击放大")
77
+
78
+ 新建工程时,每个模块下都有obfuscation-rules.txt文件,用于配置混淆。
79
+
80
+ **图4** 混淆配置文件
81
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/73/v3/lOQR2_cnSM25LA2roA-mDw/zh-cn_image_0000002229336209.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=29BA79E3B654BABC2771174F628E520C8B71C0DD4EA6EF0CCEF4DE295CA81045 "点击放大")
82
+
83
+ 在上图中,obfuscation-rules.txt文件中添加了-enable-property-obfuscation和-enable-toplevel-obfuscation开关,表示已启用属性混淆和顶层作用域名称混淆。
84
+
85
+ DevEco Studio混淆现有选项及功能描述如下:
86
+
87
+ | | | |
88
+ | --- | --- | --- |
89
+ | | 混淆自定义选项名称 | 功能简述 |
90
+ | 混淆选项 | -disable-obfuscation | 关闭混淆 |
91
+ | -enable-property-obfuscation | 属性混淆 |
92
+ | -enable-toplevel-obfuscation | 顶层作用域名称混淆 |
93
+ | -enable-filename-obfuscation | 文件名混淆 |
94
+ | -enable-export-obfuscation | export导出名称与属性混淆 |
95
+ | -compact | 代码压缩 |
96
+ | -remove-log | 删除console.*方法 |
97
+ | -print-namecache filepath | 指定路径输出namecache.json文件及内容 |
98
+ | -apply-namecache filepath | 复用指定的名称缓存文件 |
99
+ | -remove-comments | 删除注释 |
100
+ | 保留选项 | -keep-property-name | 保留属性名 |
101
+ | -keep-global-name | 保留顶层作用域和导出元素的名称 |
102
+ | -keep-file-name | 保留指定的文件/文件夹的名称 |
103
+ | -keep-dts | 读取指定.d.ts文件中的名称作为白名单 |
104
+ | -keep-comments | 保留编译生成的声明文件中class, function, namespace, enum, struct, interface, module, type及属性上方的JsDoc注释 |
105
+ | -keep | 保留指定相对路径中的所有名称(例如变量名、类名、属性名等) |
106
+ | 通配符 | 名称类和路径类的保留选项支持通配符 |
107
+
108
+ 混淆选项具体的使用方法和样例代码可以参考[代码混淆](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation)。
109
+
110
+ **混淆优化建议**
111
+
112
+ 开发人员混淆工程时,发现缓存文件或SDK中的文件中存在大量未混淆的源码名称。原因包括以下两类:
113
+
114
+ - - 混淆选项开启较少;开启-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-export-obfuscation、-enable-filename-obfuscation选项。
115
+ - - 源码名称与系统白名单、语言白名单重名;添加后缀避开白名单。
116
+
117
+ ## 混淆规则合并策略
118
+
119
+ 在编译一个模块时,生效的混淆规则是当前编译模块混淆规则和依赖模块混淆规则的合并结果。具体规则请参考:[混淆规则合并策略](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#混淆规则合并策略)。
120
+
121
+ #### 查看混淆结果
122
+
123
+ 开发人员在编译模块的build目录中可找到编译和混淆生成的缓存文件、名称映射表及系统API白名单文件。
124
+
125
+ - 源码编译及混淆缓存文件目录:build/[…]/release/模块名
126
+ - 混淆名称映射表及系统API白名单目录:build/[…]/release/obfuscation
127
+ - - 名称映射表文件:nameCache.json,记录源码名称映射。
128
+ - - 系统API白名单文件:systemApiCache.json,记录SDK接口与属性名称。
129
+
130
+ **图5** DevEco Studio编译产物与缓存文件
131
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/54/v3/hcGm5OsFTfq-RkcrFqGy4g/zh-cn_image_0000002194010432.png?HW-CC-KV=V1&HW-CC-Date=20260623T075631Z&HW-CC-Expire=86400&HW-CC-Sign=08D781449627DCD651F82F44EAA879ED5E39503F309EC1C337CD81EFF364BEDE)
132
+
133
+ #### 调试
134
+
135
+ 代码经过混淆工具处理后,名称会发生更改,这可能导致运行时崩溃堆栈日志难以理解,因为堆栈与源代码不完全一致。如果未保留调试信息,行号及名称更改将导致无法准确定位问题。此外,启用-enable-property-obfuscation、-enable-toplevel-obfuscation等选项后,代码混淆可能会引发运行时崩溃或功能性错误。开发人员需要还原报错堆栈,排查并配置白名单以确保功能正常。
136
+
137
+ ## 函数调用栈还原
138
+
139
+ 经过混淆的应用程序中代码名称会发生更改,因此报错栈与源码不完全一致,crash时打印的报错栈会难以理解,如何处理请参考[报错栈还原](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation-guide#报错栈还原)。
140
+
141
+ ## 反混淆工具hstack
142
+
143
+ hstack需要将Node.js配置到环境变量中,详细使用说明请参考[堆栈解析工具(hstack)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-command-line-hstack)。
144
+
145
+ ## 常见报错案例
146
+
147
+ 请参考[ArkGuard混淆常见问题](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation-questions)。
148
+
149
+ #### 使用第三方加固
150
+
151
+ 在HarmonyOS提供的代码混淆能力之外,开发者还可以使用第三方安全厂商提供的高级混淆和加固能力。多家安全加固厂商已经启动了HarmonyOS开发,开发者可以根据需求选择这些安全厂商的服务。开发者需要与第三方安全厂商自行沟通合作方式和范围,本文档不做详细说明。具体的官方与第三方代码混淆能力的关系如下:
152
+
153
+ | | | | |
154
+ | --- | --- | --- | --- |
155
+ | **特性** | **特性描述** | **HarmonyOS** | **三方** |
156
+ | **名称混淆** | 混淆类、字段、属性、方法和文件名。 | √ | √ |
157
+ | **控制混淆** | 混淆方法内的控制流以防御自动或手动代码分析,包括虚假控制流和控制流扁平化。 | × | √ |
158
+ | **指令替换** | 通过将简单的算术和逻辑表达式转换为难以分析的代码来保护专有公式。 | × | √ |
159
+ | **数据混淆** | 加密敏感字符串,以防止通过尝试搜索的黑客攻击,也用来加密类、asset文件、资源文件和Native库。 | × | √ |
160
+ | **代码虚拟化** | 转换方法实现为随机生成虚拟机的指令序列。 | × | √ |
161
+ | **调用隐藏** | 为访问敏感的APIs添加反射,比如用于签名校验和密码操作的标准APIs。 | × | √ |
162
+ | **移除日志代码** | 移除logging、调试和测试代码,以阻止任何利用此信息的企图。 | × | √ |
163
+
164
+ 由于HarmonyOS代码签名、应用加密等安全机制的限制,以及应用市场上架审核的纯净安全要求,三方加固厂商提供的安全加固内容必须满足以下六点要求:
165
+
166
+ 1、不允许隐藏敏感系统API的调用,审核人员必须能够清晰地看到应用的特性。
167
+
168
+ 2、不允许混淆非自研的SDK。SDK应由SDK厂商自行进行混淆保护。如果非自研SDK被混淆,将会影响应用市场审核相关SDK的指纹信息。
169
+
170
+ 3、通过第三方安全加固的应用程序,必须确保不包含恶意行为,以免对生态系统造成影响。此要求为约束性条款,不遵守可能导致应用被下架。
171
+
172
+ 4、不允许使用第三方虚拟机,HarmonyOS系统通过代码签名等机制限制动态加载代码,这可能导致应用无法正常运行。
173
+
174
+ 5、不允许对方舟字节码文件进行篡改,此方法可能让应用无法正常运行,以及影响应用市场对应用的纯净安全进行审核。
175
+
176
+ 6、不允许对系统库使用hook技术,此方法影响应用市场对应用的纯净安全进行审核。
177
+
178
+ #### 示例代码
179
+
180
+ - [应用安全示例代码](https://gitcode.com/harmonyos_samples/BestPracticeSnippets/tree/master/Privacy)