@harmonyos-arkts/d2h 0.1.19 → 0.1.21

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 (151) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +40 -0
  3. package/agents/android-to-hmos-00-orchestrator.md +3 -315
  4. package/agents/d2h.md +53 -38
  5. package/contracts/workflow/artifacts.md +22 -0
  6. package/contracts/workflow/delivery.md +54 -0
  7. package/contracts/workflow/dispatch.md +26 -0
  8. package/contracts/workflow/execution.md +125 -0
  9. package/contracts/workflow/generation.md +40 -0
  10. package/contracts/workflow/orchestration.md +49 -0
  11. package/contracts/workflow/overview.md +58 -0
  12. package/contracts/workflow/plan.md +119 -0
  13. package/contracts/workflow/scope.md +151 -0
  14. package/dist/bin/install-opencode.js +34 -15
  15. package/dist/src/install-codex.js +131 -0
  16. package/dist/src/install-opencode.js +5 -5
  17. package/dist/src/workflow.js +54 -0
  18. package/docs/architecture-plan-guide.zh-CN.md +70 -0
  19. package/docs/incremental-spec-evaluation-design.md +670 -0
  20. package/docs/spec-plan-guide.md +226 -0
  21. package/docs/workflow-decoupling.md +59 -0
  22. package/opencode/interactive-tools/advance-progress-demo.mjs +21 -0
  23. package/opencode/interactive-tools/browser-host.ts +110 -0
  24. package/opencode/interactive-tools/core.ts +242 -0
  25. package/opencode/interactive-tools/demo-workflow.ts +55 -0
  26. package/opencode/interactive-tools/demo.mjs +37 -0
  27. package/opencode/interactive-tools/package-lock.json +1876 -0
  28. package/opencode/interactive-tools/package.json +23 -0
  29. package/opencode/interactive-tools/panel.ts +40 -0
  30. package/opencode/interactive-tools/prepare-demo.mjs +17 -0
  31. package/opencode/interactive-tools/prepare-progress-demo.mjs +13 -0
  32. package/opencode/interactive-tools/progress.ts +118 -0
  33. package/opencode/interactive-tools/server-legacy.mjs +2 -0
  34. package/opencode/interactive-tools/server.mjs +40 -0
  35. package/opencode/interactive-tools/tui.tsx +230 -0
  36. package/package.json +9 -1
  37. package/schemas/native-libs-analysis-report.schema.json +695 -0
  38. package/schemas/native-libs-verify-report.schema.json +566 -0
  39. package/schemas/spec-native-libs-shard.schema.json +110 -0
  40. package/skills/arkts-icon-sizing/SKILL.md +0 -10
  41. package/skills/cpp/d2h-native-library-analyse/SKILL.md +91 -0
  42. package/skills/cpp/d2h-native-library-analyse/scripts/analyse-android-so.py +630 -0
  43. package/skills/cpp/d2h-native-library-build/SKILL.md +403 -0
  44. package/skills/cpp/d2h-native-library-build/references/build-config-mapping.md +180 -0
  45. package/skills/cpp/d2h-native-library-build/references/jni-to-napi-mapping.md +74 -0
  46. package/skills/cpp/d2h-native-library-build/scripts/check-android-so.py +580 -0
  47. package/skills/cpp/d2h-native-library-verify/SKILL.md +111 -0
  48. package/skills/cpp/d2h-native-library-verify/references/demo-build-sign-run.md +67 -0
  49. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/app.json5 +1 -0
  50. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/resources/base/element/string.json +1 -0
  51. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/README.md +25 -0
  52. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/build-profile.json5 +24 -0
  53. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/build-profile.json5 +1 -0
  54. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/hvigorfile.ts +2 -0
  55. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/oh-package.json5 +1 -0
  56. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/entryability/EntryAbility.ets +5 -0
  57. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/Index.ets +3 -0
  58. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/NativeVerifyDemo.ets +276 -0
  59. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/module.json5 +1 -0
  60. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/color.json +1 -0
  61. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/string.json +1 -0
  62. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/profile/main_pages.json +1 -0
  63. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/FFmpegVerify.test.ets +176 -0
  64. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/List.test.ets +2 -0
  65. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/module.json5 +1 -0
  66. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigor/hvigor-config.json5 +1 -0
  67. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigorfile.ts +2 -0
  68. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/oh-package.json5 +9 -0
  69. package/skills/cpp/d2h-native-library-verify/references/demo-template.md +176 -0
  70. package/skills/cpp/d2h-native-library-verify/references/hypium-test-template.md +163 -0
  71. package/skills/cpp/d2h-native-library-verify/scripts/__pycache__/native_common.cpython-313.pyc +0 -0
  72. package/skills/cpp/d2h-native-library-verify/scripts/device-verify.py +304 -0
  73. package/skills/cpp/d2h-native-library-verify/scripts/native_common.py +341 -0
  74. package/skills/cpp/d2h-native-library-verify/scripts/verify-ohos-native.py +1099 -0
  75. package/skills/d2h-app-solution/SKILL.md +198 -0
  76. package/skills/d2h-app-solution/agents/openai.yaml +4 -0
  77. package/skills/d2h-app-solution/references/framework-evidence.md +117 -0
  78. package/skills/d2h-app-solution/references/hierarchy-rules.md +88 -0
  79. package/skills/d2h-app-solution/references/inventory-schema.md +305 -0
  80. package/skills/d2h-app-solution/references/technical-analysis.md +101 -0
  81. package/skills/d2h-app-solution/scripts/scan_repositories.py +350 -0
  82. package/skills/d2h-app-solution/scripts/validate_inventory.py +337 -0
  83. package/skills/d2h-architecture-plan/SKILL.md +35 -0
  84. package/skills/d2h-architecture-plan/references/directory-creation.md +43 -0
  85. package/skills/d2h-architecture-plan/references/hybrid-design.md +84 -0
  86. package/skills/d2h-architecture-plan/references/layout-reference.md +83 -0
  87. package/skills/d2h-architecture-plan/references/plan-contract.md +51 -0
  88. package/skills/d2h-architecture-plan/references/source-review.md +50 -0
  89. package/skills/d2h-cloud-knowledge/SKILL.md +28 -7
  90. package/skills/d2h-cloud-knowledge/kb_query.mjs +8 -0
  91. package/skills/d2h-dashboard/SKILL.md +56 -0
  92. package/skills/d2h-product-family-migration/SKILL.md +103 -0
  93. package/skills/d2h-product-family-migration/agents/openai.yaml +3 -0
  94. package/skills/d2h-product-family-migration/assets/incremental-plan.template.md +55 -0
  95. package/skills/d2h-product-family-migration/references/advanced/behavioral-verification.md +59 -0
  96. package/skills/d2h-product-family-migration/references/advanced/existing-skill-integration.md +30 -0
  97. package/skills/d2h-product-family-migration/references/advanced/packaging-and-verification.md +43 -0
  98. package/skills/d2h-product-family-migration/references/advanced/platform-probes.md +26 -0
  99. package/skills/d2h-product-family-migration/references/advanced/product-line-design.md +40 -0
  100. package/skills/d2h-product-family-migration/references/baseline-and-delta.md +50 -0
  101. package/skills/d2h-product-family-migration/tests/markdown-cases.md +76 -0
  102. package/skills/{d2h-page-develop → d2h-spec-develop}/SKILL.md +143 -132
  103. package/skills/d2h-spec-develop/agents/openai.yaml +7 -0
  104. package/skills/d2h-spec-develop/references/worker-workflow.md +26 -0
  105. package/skills/{d2h-page-spec-generate → d2h-spec-generate}/SKILL.md +24 -13
  106. package/skills/d2h-spec-generate/assets/spec-template.md +109 -0
  107. package/skills/d2h-spec-generate/references/from-plan.md +19 -0
  108. package/skills/d2h-spec-generate/references/spec-content.md +34 -0
  109. package/skills/{d2h-page-spec-generate → d2h-spec-generate}/scripts/build_batch_report.py +35 -84
  110. package/skills/d2h-spec-plan/SKILL.md +38 -0
  111. package/skills/d2h-spec-plan/agents/openai.yaml +4 -0
  112. package/skills/d2h-spec-plan/references/architecture-handoff.md +9 -0
  113. package/skills/d2h-spec-plan/references/plan-contract.md +13 -0
  114. package/skills/d2h-spec-plan/references/planning-method.md +46 -0
  115. package/skills/d2h-spec-plan/references/round-scope-assessment.md +49 -0
  116. package/skills/d2h-spec-plan/references/work-packets.md +61 -0
  117. package/skills/d2h-utg-ai-generate/references/click-paths-schema.json +2 -2
  118. package/skills/d2h-utg-ai-generate/references/page-schema.json +2 -2
  119. package/skills/d2h-utg-ai-generate/references/utg-schema.json +2 -2
  120. package/skills/d2h-utg-static-generate/SKILL.md +2 -2
  121. package/skills/managing-d2h-toolchain/environment-requirements.json +1 -1
  122. package/skills/managing-d2h-toolchain/toolchain.json +1 -1
  123. package/skills/preparing-migration-workspace/SKILL.md +32 -2
  124. package/workflow/__pycache__/artifact_bindings.cpython-313.pyc +0 -0
  125. package/workflow/__pycache__/spec_runtime.cpython-313.pyc +0 -0
  126. package/workflow/artifact_bindings.py +224 -0
  127. package/workflow/assets/dashboard.html +88 -0
  128. package/workflow/build_batch_report.py +8 -0
  129. package/workflow/collect_code_metrics.py +75 -0
  130. package/workflow/dashboard_overview.py +109 -0
  131. package/workflow/delivery_view.py +82 -0
  132. package/workflow/feature_plan.py +234 -0
  133. package/workflow/page_batches.py +223 -0
  134. package/workflow/spec_generation.py +120 -0
  135. package/workflow/spec_runtime.py +890 -0
  136. package/workflow/work_packets.py +85 -0
  137. package/skills/d2h-page-develop/agents/openai.yaml +0 -7
  138. package/skills/harmonyos-migration-playbook/SKILL.md +0 -83
  139. package/skills/harmonyos-migration-playbook/agents/openai.yaml +0 -7
  140. package/skills/harmonyos-migration-playbook/references/arkts-compile.md +0 -24
  141. package/skills/harmonyos-migration-playbook/references/harmony-runtime.md +0 -53
  142. package/skills/harmonyos-migration-playbook/references/lesson-lifecycle.md +0 -45
  143. package/skills/harmonyos-migration-playbook/references/protocol-e2e.md +0 -23
  144. package/skills/harmonyos-migration-playbook/references/ui-automation.md +0 -53
  145. package/skills/harmonyos-migration-playbook/references/windows-environment.md +0 -38
  146. package/skills/native-library-substitution/SKILL.md +0 -385
  147. package/skills/native-library-substitution/references/native-library-substitution.json +0 -56906
  148. package/skills/native-library-substitution/references/native-library-substitution.md +0 -163
  149. package/skills/porting-cmake-native-libraries/SKILL.md +0 -57
  150. package/skills/porting-cmake-native-libraries/references/platform-adaptation.md +0 -49
  151. package/skills/porting-cmake-native-libraries/references/report-and-build.md +0 -60
@@ -1,163 +0,0 @@
1
- # Native Library Substitution 单一映射表
2
-
3
- **数据版本**: 3.0.0
4
- **更新日期**: 2026-04-22
5
-
6
- ## 数据概览
7
-
8
- | 统计项 | 数量 |
9
- |--------|------|
10
- | 总映射数 | 2678 |
11
- | 有安卓库的映射 | 1005 |
12
- | 鸿蒙原生库(无安卓库) | 1673 |
13
- | 唯一安卓库数 | 852 |
14
- | 唯一ohpm包数 | 2537 |
15
-
16
- ## source_availability 分布
17
-
18
- | 状态 | 数量 | 说明 |
19
- |------|------|------|
20
- | COMMERCIAL_PUBLIC | 175 | 闭源商业SDK(来自工作簿) |
21
- | open_source | 2503 | 开源库 |
22
- | not_set | 0 | 未设置 |
23
-
24
- ## source_type 分布
25
-
26
- | 来源类型 | 数量 | 说明 |
27
- |----------|------|------|
28
- | 鸿蒙原生库 | 1321 | 鸿蒙原生开发,无对应安卓库 |
29
- | TS/JS迁移库 | 790 | 从npm生态迁移 |
30
- | 安卓鸿蒙化库 | 432 | 直接从安卓库移植 |
31
- | C++/C鸿蒙化库 | 133 | 从C++生态迁移 |
32
-
33
- ## category 分布
34
-
35
- | Category | 数量 | 说明 |
36
- |----------|------|------|
37
- | other | 1527 | 其他 |
38
- | ui | 370 | UI组件 |
39
- | utils | 213 | 工具类 |
40
- | network | 209 | 网络请求 |
41
- | media | 89 | 音视频 |
42
- | auth | 61 | 登录认证 |
43
- | notification | 60 | 推送通知 |
44
- | storage | 60 | 存储文件 |
45
- | location | 50 | 地图定位 |
46
- | analytics | 17 | 统计分析 |
47
- | payment | 16 | 支付 |
48
- | security | 4 | 安全加密 |
49
- | im | 1 | 即时通讯 |
50
- | social | 1 | 社交分享 |
51
-
52
- ## 闭源库示例(COMMERCIAL_PUBLIC)
53
-
54
- | 安卓库 | 鸿蒙包 | install_command |
55
- |--------|--------|-----------------|
56
- | com.tencent.mm.opensdk:wechat-sdk-androi | @tencent/wechat_open_sdk | `ohpm install @tencent/wechat_open_sdk` |
57
- | com.sensorsdata.analytics.abtesting:Sens | @sensorsdata/analytics | `ohpm install @sensorsdata/analytics` |
58
- | cn.admobiletop.adsuyi.ad.adapter:tianmu | @admobile/tianmu | `ohpm install @admobile/tianmu` |
59
- | cn.admobiletop.adsuyi.ad:core | @admobile/tianmu | `ohpm install @admobile/tianmu` |
60
- | io.hyphenate:hyphenate-chat | @easemob/chatsdk | `ohpm install @easemob/chatsdk` |
61
- | com.aliyun.auikits.android:ARTCAICallKit | @aliyun_video_cloud/alivcsdk_artc | `ohpm install @aliyun_video_cloud/alivcsdk_artc` |
62
- | com.aliyun.iot.aep.sdk:push | @aliyun/push | `ohpm install @aliyun/push` |
63
- | com.aliyun.rum:alibabacloud-android-rum- | @alibabacloud_rum/harmony_sdk | `ohpm install @alibabacloud_rum/harmony_sdk` |
64
- | com.alibaba.mtl:app-monitor-sdk | @alibabacloud_rum/harmony_sdk | `ohpm install @alibabacloud_rum/harmony_sdk` |
65
- | com.aliyun.ams:alicloud-apm-crash-analys | @aliyun/apm | `ohpm install @aliyun/apm` |
66
- | com.aliyun.dpa:oss-android-sdk | @aliyun/oss | `ohpm install @aliyun/oss` |
67
- | afservicesdk | @cashier_alipay/cashiersdk | `ohpm install @cashier_alipay/cashiersdk` |
68
- | com.alipay.sdk:alipaysdk-android | @cashier_alipay/cashiersdk | `ohpm install @cashier_alipay/cashiersdk` |
69
- | io.github.yidun:livedetect | @yidun/alive | `ohpm install @yidun/alive` |
70
- | io.github.aliyun-sls:aliyun-log-android- | @aliyun/logger | `ohpm install @aliyun/logger` |
71
- | com.aliyun.ams:alicloud-android-push | @aliyun/push | `ohpm install @aliyun/push` |
72
- | com.aliyun.ams:alicloud-android-third-pu | @aliyun/push | `ohpm install @aliyun/push` |
73
- | com.aliyun.ams:alicloud-android-third-pu | @aliyun/push | `ohpm install @aliyun/push` |
74
- | com.amap.api:3dmap | @amap/amap_lbs_map3d | `ohpm install @amap/amap_lbs_map3d` |
75
- | com.amap.api:location | @amap/amap_lbs_location | `ohpm install @amap/amap_lbs_location` |
76
- | com.amap.api:search | @amap/amap_lbs_search | `ohpm install @amap/amap_lbs_search` |
77
- | com.amap.api:3dmap-location-search | @amap/amap_lbs_map3d | `ohpm install @amap/amap_lbs_map3d` |
78
- | com.amap.api:navi-3dmap | @amap/amap_lbs_map3d | `ohpm install @amap/amap_lbs_map3d` |
79
- | com.umeng.umsdk:analytics | @umeng/analytics | `ohpm install @umeng/analytics` |
80
- | com.umeng.umsdk:common | @umeng/common | `ohpm install @umeng/common` |
81
- | BaiduLBS_Android | @bdmap/navi_map | `ohpm install @bdmap/navi_map` |
82
- | com.baidubce.mediasdk:brtc | @baiduplayer/baidurtcsdk | `ohpm install @baiduplayer/baidurtcsdk` |
83
- | com.getui:gtsdk | @getui/push | `ohpm install @getui/push` |
84
- | com.bonree.sdk.jar | @bonree/agent | `ohpm install @bonree/agent` |
85
- | com.tencent.bugly:crashreport | bugly | `ohpm install bugly` |
86
-
87
- *共 175 条闭源库映射*
88
-
89
- ## 高置信度映射示例(安卓鸿蒙化库)
90
-
91
- | 安卓库 | 鸿蒙包 | category | install_command |
92
- |--------|--------|----------|-----------------|
93
- | AJCaptcha 安卓实现版本 | @scca/verification | other | `ohpm install @scca/verification` |
94
- | ARouter | @ohos/arouteronactivityresult | other | `ohpm install @ohos/arouteronactivityresult` |
95
- | ARouter | hrouter | other | `ohpm install hrouter` |
96
- | Android Beacon Library (AltBea | @ohos/beacon-library | other | `ohpm install @ohos/beacon-library` |
97
- | Android BottomSheet | @hld/bottomsheet | other | `ohpm install @hld/bottomsheet` |
98
- | Android Jetpack Paging3 | @jackiehou/experimental-paging | other | `ohpm install @jackiehou/experimental-paging` |
99
- | Android Room | @hzzmkjyxgs/zmwlthmosdb | other | `ohpm install @hzzmkjyxgs/zmwlthmosdb` |
100
- | Android TabLayout(com.google.a | @zyc/tablayout | other | `ohpm install @zyc/tablayout` |
101
- | Android XLog | @ohos-port/xlog-ts | other | `ohpm install @ohos-port/xlog-ts` |
102
- | Android-Debug-Database | @hadss/debug-db | other | `ohpm install @hadss/debug-db` |
103
- | AndroidImageEditor | @zhongjh/image_edit | other | `ohpm install @zhongjh/image_edit` |
104
- | AndroidUtilCode | @android_x/utilcode | other | `ohpm install @android_x/utilcode` |
105
- | AndroidUtilCode | @ilye/utilcode | other | `ohpm install @ilye/utilcode` |
106
- | AndroidUtilCode | @ranran/utilcode | other | `ohpm install @ranran/utilcode` |
107
- | AndroidVideoCache | @changjing/drm | media | `ohpm install @changjing/drm` |
108
- | AndroidVideoCache (com.danikul | @ohos/video-cache | media | `ohpm install @ohos/video-cache` |
109
- | Apache Batik | @ohos/xmlgraphicsbatik | other | `ohpm install @ohos/xmlgraphicsbatik` |
110
- | Apache Cordova Android | @boc/cordova | other | `ohpm install @boc/cordova` |
111
- | AppCan Android Engine | @appcan/engine | other | `ohpm install @appcan/engine` |
112
- | DBFlow | @ohos/dataorm | other | `ohpm install @ohos/dataorm` |
113
-
114
- *共 340 条高置信度安卓鸿蒙化库映射*
115
-
116
- ## 鸿蒙原生库示例(无安卓库)
117
-
118
- | 鸿蒙包 | 组织 | category | install_command |
119
- |--------|------|----------|-----------------|
120
- | @pura/harmony-utils | pura | notification | `ohpm install @pura/harmony-utils` |
121
- | @pura/harmony-dialog | pura | ui | `ohpm install @pura/harmony-dialog` |
122
- | @ibestservices/ibest-ui | ibestservices | ui | `ohpm install @ibestservices/ibest-ui` |
123
- | @abner/refresh | abner | ui | `ohpm install @abner/refresh` |
124
- | @hzw/zrouter | hzw | other | `ohpm install @hzw/zrouter` |
125
- | cjcalendar | | ui | `ohpm install cjcalendar` |
126
- | @hadss/hmrouter | hadss | other | `ohpm install @hadss/hmrouter` |
127
- | @esky/barrage | esky | media | `ohpm install @esky/barrage` |
128
- | @ibestservices/ibest-ui-v2 | ibestservices | ui | `ohpm install @ibestservices/ibest-ui-v2` |
129
- | @ohos/pulltorefresh | ohos | ui | `ohpm install @ohos/pulltorefresh` |
130
- | @mcui/mccharts | mcui | utils | `ohpm install @mcui/mccharts` |
131
- | @maple/navigationbarview | maple | location | `ohpm install @maple/navigationbarview` |
132
- | @abner/dialog | abner | ui | `ohpm install @abner/dialog` |
133
- | @zyl/wxcommonlibhar | zyl | payment | `ohpm install @zyl/wxcommonlibhar` |
134
- | @ibestservices/ibest-orm | ibestservices | storage | `ohpm install @ibestservices/ibest-orm` |
135
- | @ohasasugar/hp-richtext | ohasasugar | ui | `ohpm install @ohasasugar/hp-richtext` |
136
- | @zyl/commonlibhar | zyl | media | `ohpm install @zyl/commonlibhar` |
137
- | @abner/datastore | abner | storage | `ohpm install @abner/datastore` |
138
- | @visactor/harmony-vchart | visactor | other | `ohpm install @visactor/harmony-vchart` |
139
- | @liushengyi/smartdb | liushengyi | storage | `ohpm install @liushengyi/smartdb` |
140
-
141
- *共 1673 条鸿蒙原生库*
142
-
143
- ## 数据结构
144
-
145
- 每条映射记录包含15个字段:
146
-
147
- | 字段 | 类型 | 说明 |
148
- |------|------|------|
149
- | android_lib | string/null | 安卓库标识符(鸿蒙原生库为null) |
150
- | android_platform | string | android / ios / ohos_native |
151
- | android_description | string/null | 安卓库功能描述 |
152
- | ohpm_package | string | 鸿蒙包名 |
153
- | ohpm_org | string | ohpm组织名 |
154
- | ohpm_description | string | 鸿蒙包功能描述 |
155
- | ohpm_keywords | array | 鸿蒙包关键词 |
156
- | ohpm_repo_url | string | 鸿蒙包源码仓库 |
157
- | ohpm_homepage | string | 鸿蒙包文档主页 |
158
- | source_type | string | 安卓鸿蒙化库/TS迁移库/鸿蒙原生库 |
159
- | source_availability | string | COMMERCIAL_PUBLIC/open_source |
160
- | confidence | string | high/medium/low |
161
- | install_command | string | ohpm install命令 |
162
- | category | string | media/network/notification等 |
163
- | inference_reason | string | 映射关系说明 |
@@ -1,57 +0,0 @@
1
- ---
2
- name: porting-cmake-native-libraries
3
- description: 将 Android 工程中基于 CMakeLists.txt 的 C/C++ 库模块迁移并交叉编译为 HarmonyOS 的 .so/.a;分析平台条件分支和 Android Native API,输出报告,适配宏、Native 实现与 CMake,并验证产物。适用于有源码的原生库移植;不负责 N-API/JNI 绑定层重写或仅查询 ohpm 替代包。
4
- ---
5
-
6
- # CMake 原生库迁移
7
-
8
- 交付可追溯的分析报告、源码与 CMake 修改、可复现的交叉编译命令及验证过的库文件。保持 Android 构建路径可用,优先复用平台无关核心。
9
-
10
- 本技能可独立处理库项目。由迁移主 Agent 调用时,消费其提供的项目路径、工作区和任务边界,将结果返回主 Agent;不修改 AppGraph facts、Kernel 状态或自行推进应用迁移阶段。
11
-
12
- ## 1. 确定编译范围
13
-
14
- 读取项目及父目录适用的 `AGENTS.md`,检查现有改动。定位顶层及子目录 `CMakeLists.txt`、`.cmake`、Gradle `externalNativeBuild`、源文件、生成头文件、依赖库和导出头文件,梳理目标及传递依赖。
15
-
16
- 从用户输入和项目配置确认:源码目录、目标库名、输出类型(SHARED/STATIC)、目标 ABI、SDK native 目录及版本、最低 API、构建配置、产物和报告目录。已有配置优先;无法推断的目标参数先询问,同时继续静态分析。`.so/.a` 表示按所需类型构建,不意味着擅自将所有目标同时生成两种类型。缺少 SDK 时仍交付分析与可执行的构建准备,明确记录未编译。
17
-
18
- 构建目录按平台、ABI、配置隔离,不能复用 Android/宿主机 CMake cache。报告放在用户指定目录;否则放在源码外的专用迁移输出目录。已有迁移工作区时使用主 Agent 提供的产物位置,不自建 Kernel 状态文件。
19
-
20
- ## 2. 分析并先输出报告
21
-
22
- 按 [平台扫描与能力适配](references/platform-adaptation.md) 检查平台宏、CMake 条件、头文件、符号、链接库、预编译依赖及运行时平台假设。文本搜索只产生候选,结合条件上下文、目标依赖和实际编译命令判定;不能把未命中 `__ANDROID__` 当作无 Android 依赖。
23
-
24
- 按 [报告与验收](references/report-and-build.md) 输出初始报告,再修改代码。每项记录文件和行号、所属目标、条件表达式、实际用途、处理方式、证据及未解决项。区分核心、平台适配层、JNI/N-API 绑定层。
25
-
26
- **N-API 层 C++ 代码暂不适配,标记为需要重写。** JNI/Java 桥接也不能通过改宏变成鸿蒙绑定。记录绑定接口、参数/所有权、线程与生命周期约束,留给独立重写任务。可将混合文件中的平台无关算法抽为核心,但不在本技能中实现新绑定。
27
-
28
- 若绑定目标能与核心分离,仅在鸿蒙构建中排除绑定目标/源文件,并明确核心库的能力边界;若核心仍依赖绑定符号或 Java 服务,将相关目标标为阻塞。禁止用空函数、伪成功返回或忽略链接错误掩盖缺失功能。
29
-
30
- ## 3. 适配宏与 Native 能力
31
-
32
- 用实际 SDK 编译器和目标参数探测预定义宏,并检查 toolchain 设置的 CMake 平台变量。不要假设 `__OHOS__` 在所有 SDK 中都存在;不要手动定义 `__ANDROID__` 或把 `ANDROID` 设置为真来复用 Android 路径。
33
-
34
- 对每个条件分支分别决策:纯 C/C++/可验证的 POSIX 逻辑可共享;Android 特有实现保留,另加鸿蒙实现;不支持的能力明确阻塞。注意 `__linux__` 等宽泛分支可能先命中,不能只在末尾追加鸿蒙分支。需要项目宏时,通过目标级 `target_compile_definitions` 定义,并与编译器保留宏区分。
35
-
36
- Native 替换以实际 SDK 头文件、库、官方文档及最小编译/链接验证为依据。记录最低 API、SysCap/设备约束、权限、线程、资源所有权、错误语义和行为差异。ArkTS API 或 ohpm 包不能直接当成 C/C++ 链接接口;只有 ArkTS 方案的能力留作上层/绑定重写依赖。
37
-
38
- ## 4. 修改 CMake 并交叉编译
39
-
40
- 按 [构建与验证流程](references/report-and-build.md) 操作:
41
-
42
- - 使用目标 SDK 提供的 `ohos.toolchain.cmake`,不手工拼接一套猜测的 sysroot/compiler 配置。
43
- - 以平台条件选择源文件、头文件和链接库;使用目标级配置,保留已有 Android 路径。只有确认配置有效时才用 `CMAKE_SYSTEM_NAME STREQUAL "OHOS"` 分流。
44
- - 清理鸿蒙路径中的 NDK、Gradle、Android sysroot、`log/android/jnigraphics` 等链接项,按已验证的能力映射替换。不能全局删除其他平台所需依赖。
45
- - 所有参与链接的第三方库必须具有匹配的鸿蒙 ABI、API 与 C++ 运行时;Android ELF 即使 CPU 相同也不能直接复用。无源码或无兼容二进制则记录阻塞。
46
- - 明确 C++ 标准、异常/RTTI、可见性、导出接口、PIC 和运行时依赖;静态库进入共享库的对象需要 PIC。不要把 `BUILD_SHARED_LIBS` 当成覆盖显式 STATIC/SHARED 目标的开关。
47
- - 检查 version script、导出列表和符号可见性是否绑定 Android/JNI 入口;鸿蒙核心库应导出其实际消费接口,不能直接沿用仅导出 `JNI_OnLoad` 的规则。
48
-
49
- 逐目标、逐 ABI 配置和构建,保留完整命令、退出码和日志。修复有证据的源码、配置或依赖问题后重试;缺 SDK、不可获得的依赖或仅绑定层重写才能解决的问题应报告阻塞,而非反复试编或静默禁用功能。
50
-
51
- ## 5. 验证并交付
52
-
53
- 检查本次构建产物、架构、符号、动态依赖、静态归档成员和最小消费端链接。构建成功、链接验证成功、设备运行成功是不同状态;无法在鸿蒙设备运行时明确标注未验证。只交付通过对应检查的产物,失败目标单独列出。
54
-
55
- 拆分算法核心时,按参考文档进行原实现与迁移实现的固定输入对照。记录接口契约与行为差异,不能为让样例通过而静默收窄输入范围或改变资源生命周期。
56
-
57
- 更新初始报告为最终报告,给出修改摘要、产物绝对路径、ABI/API/SDK、重现命令、测试结果、运行时依赖与绑定重写清单。不要将“核心库编译通过”描述为“应用或 N-API 迁移完成”。
@@ -1,49 +0,0 @@
1
- # 平台扫描与能力适配
2
-
3
- ## 搜索候选
4
-
5
- 在项目目录使用 `rg --files` 发现源码与构建文件,再搜索以下候选;检查依赖源码、生成配置与宏别名。忽略构建缓存,无法访问的依赖明确标为扫描缺口。
6
-
7
- ```sh
8
- rg -n '__ANDROID__|__ANDROID_API__|ANDROID_NDK|ANDROID_ABI|CMAKE_SYSTEM_NAME|__linux__|__OHOS__' .
9
- rg -n 'jni\.h|JNIEnv|JavaVM|JNI_OnLoad|Java_|RegisterNatives|napi_|node_api|NAPI_MODULE' .
10
- rg -n 'android/|sys/system_properties|__android_|AAsset|ANativeWindow|ALooper|AHardwareBuffer|AAudio|AMedia|OpenSL|GLES|EGL' .
11
- rg -n 'find_package|find_library|target_link_libraries|IMPORTED|add_subdirectory|FetchContent|ExternalProject|try_run|pkg_check_modules' -g CMakeLists.txt -g '*.cmake' .
12
- ```
13
-
14
- 补查 `#ifdef ANDROID`、自定义 `PLATFORM_*`、`#if !defined(...)`、嵌套/组合条件、CMake `if(ANDROID)`、生成器表达式和 Gradle 传入的 defines。动态加载字符串、硬编码 Android 路径、Bionic 扩展、汇编/CPU 优化、Java 回调及传递依赖也可能形成平台耦合。
15
-
16
- 扫描还需覆盖 `AndroidBitmap_*`、`AndroidBitmapInfo`、`android/bitmap.h` 等直接 API/类型依赖。平台专用源文件可能完全没有条件宏;报告应分别记录“平台宏命中情况”和“直接平台依赖”,不能相互替代。
17
-
18
- 不能机械替换 `__ANDROID__` 为鸿蒙宏,或给每个条件都追加 `|| defined(__OHOS__)`。对当前目标以编译器预处理输出和 `compile_commands.json` 验证命中的源文件与分支;对其他配置记录覆盖范围。
19
-
20
- ## Native 能力候选表
21
-
22
- 以下是检索方向,不是已验证的一对一替换承诺。按用户目标 SDK/API 查询官方 C API,并在本地头文件和库中核对符号;报告中保存查证链接和 SDK 版本。
23
-
24
- | Android 依赖 | 鸿蒙检索方向 | 必须检查的差异 |
25
- | --- | --- | --- |
26
- | `__android_log_*` / `android/log.h` | HiLog Native API | 格式、隐私标记、domain/tag、链接库 |
27
- | `AAssetManager` | Native ResourceManager / RawFile | 资源包语义、管理器初始化、句柄释放;初始化可能依赖上层 |
28
- | `ANativeWindow` / Surface | NativeWindow / NativeBuffer | Surface 来源、像素格式、buffer 生命周期、线程 |
29
- | AAudio / OpenSL ES | OHAudio | 回调模型、低延迟支持、流状态和设备能力 |
30
- | MediaCodec / `AMedia*` | Native AVCodec / AVFormat 等 | 编解码格式、异步回调、缓冲区所有权、最低 API |
31
- | Bitmap / `jnigraphics` | Native Image / PixelMap | 数据布局、stride、alpha、对象来源 |
32
- | EGL / GLES | SDK 提供的 EGL / GLES | 扩展、窗口接口、上下文线程与链接依赖 |
33
- | 属性、Looper、Binder、Bionic 扩展 | 公共 C API / 已支持的 POSIX / 平台抽象 | 可能无公开等价能力,不能依赖内部系统接口 |
34
- | JNI / Java 服务 / N-API | 核心接口拆分与绑定重写清单 | 不在本技能中重写绑定,不提供伪实现 |
35
-
36
- 优先保持行为与公开 C/C++ 接口。能使用目标 SDK 已支持的标准接口时,不必引入平台专有能力。需要上层提供资源管理器、窗口或上下文的接口,在报告中明确初始化契约;不能凭空构造句柄。
37
-
38
- ## 图像缓冲区适配
39
-
40
- 涉及 Bitmap/PixelMap 时,分别核对接口要求的**输入缓冲区格式**与**目标对象格式**,以及 stride、通道顺序、位深、alpha 和字节序;不能从目标格式选项反推输入格式。例如,若选定 SDK 的创建接口要求 BGRA8888 输入,原 RGB565 数据必须先显式转换,不能只设置格式枚举后直接传入。
41
-
42
- 确认输入缓冲区是否复制、何时可释放、输出句柄由谁释放,以及是否需要可编辑对象。原位锁定/写入改为创建新对象会改变对象身份、分配次数和拷贝成本,应作为行为差异报告并验证。锁定或创建失败后停止使用该资源,传播真实错误;资源转换不等于完成 JNI/N-API 绑定重写。
43
-
44
- 资料入口:
45
-
46
- - [OpenHarmony NDK 构建概述](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/napi/build-with-ndk-overview.md)
47
- - [华为三方库适配指南](https://developer.huawei.com/consumer/cn/doc/games-guides/games-2dx-adapt-third-library-0000002290527381)
48
-
49
- OpenHarmony 文档可用于理解工具链,但不代表用户目标 HarmonyOS SDK 的每个 API 都可用;最终以选定发行版的文档与 SDK 为准。
@@ -1,60 +0,0 @@
1
- # 报告与构建验收
2
-
3
- ## 报告内容
4
-
5
- 初始分析与最终结果使用同一份报告,保留初始发现及最终处置。建议结构:
6
-
7
- 1. **范围**:源码版本/本地改动、CMake 入口、目标、输出类型、依赖图摘要、扫描缺口。
8
- 2. **环境**:SDK 路径/版本、API、ABI、工具链、CMake/编译器版本、构建配置、预定义平台宏证据。
9
- 3. **问题明细表**:编号、文件:行号、目标、条件/符号、用途、迁移策略、证据、验证结果、状态。
10
- 4. **绑定重写清单**:N-API/JNI 文件、导出接口、核心依赖、生命周期与线程要求、排除的目标和影响。
11
- 5. **修改及构建**:源码/CMake 修改摘要、每个目标和 ABI 的命令、退出码、日志路径。
12
- 6. **产物表**:绝对路径、目标、类型、ABI、API、SDK、配置、哈希、公共头文件、动态/静态传递依赖、验证级别。
13
- 7. **剩余工作**:阻塞项、行为差异、未执行检查、设备验证与绑定重写。
14
-
15
- 问题状态可用 `pending / adapted / verified / blocked / rewrite-required`。产物验证分别记录 `configured / built / link-verified / runtime-verified`,失败记录具体阶段,不用单一“成功”覆盖所有层次。
16
-
17
- ## 配置与构建
18
-
19
- 先读取实际 SDK 的 `native/build/cmake/ohos.toolchain.cmake` 及其包含文件,确认 ABI、API、运行时和平台变量的支持方式。下面仅为命令形状;将变量设置为已确认的路径和目标,API/运行时选项按该 SDK 定义补充,不盲目照抄不存在的变量。
20
-
21
- ```sh
22
- cmake -S "$source_dir" -B "$build_dir" \
23
- -DCMAKE_TOOLCHAIN_FILE="$sdk_native/build/cmake/ohos.toolchain.cmake" \
24
- -DOHOS_ARCH="$target_abi" \
25
- -DCMAKE_BUILD_TYPE=Release \
26
- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
27
- cmake --build "$build_dir" --target "$library_target" --parallel
28
- ```
29
-
30
- 多配置生成器应使用对应的 `--config`。从 cache、配置输出和实际编译命令确认 compiler、target triple、sysroot、架构及 API;配置参数被忽略的警告必须处理。用同一编译器及编译参数执行预定义宏探测(如 `-dM -E -x c++` 读取空输入),不要用宿主机 clang 的结果推断目标宏。
31
-
32
- 检查 `find_package`、pkg-config、IMPORTED targets 和嵌套构建是否误取宿主机/Android 库。`ExternalProject` 等独立配置的依赖要显式传递正确工具链;宿主机代码生成工具与目标库分开构建。交叉编译的 `try_run` 不能直接在宿主机执行目标程序,也不能伪造通过结果。
33
-
34
- 对项目现有显式 SHARED/STATIC 目标保留类型。用户确需两类产物时,建立独立目标或使用项目已支持的选项,处理输出命名、公共宏与 PIC;不要为无关目标改变全局行为。
35
-
36
- 检查原项目的 version script(如 `.map.txt`)、导出列表、`-fvisibility` 和 `extern "C"`。只导出 `JNI_OnLoad` 的共享库规则不能用于新的核心 C 接口;按平台保留原规则,为鸿蒙目标声明所需接口,并核验最终动态符号表。库能生成但消费端无法链接,仍属失败。
37
-
38
- 若 SDK 注入的参数触发 `-Werror`,保留首次失败日志,定位参数来源并确认其不影响目标架构、sysroot 或 ABI。优先修正配置;确属无效的冗余参数警告时,可仅对受影响目标使用对应的 `-Wno-error=<具体警告>`,保留警告可见。不预置通用抑制开关,不全局关闭 `-Werror`,不忽略 API 可用性、源码错误或未解析符号。
39
-
40
- ## 核心行为对照
41
-
42
- 拆分可独立运行的算法时,以固定源码版本的原实现作为对照,使用相同输入比较输出。可以仅提取原算法及其必要数据结构作为宿主机基线,但要说明提取范围;不要用伪造的平台 API 成功结果代替基线。图像算法适合覆盖奇偶尺寸、带 padding 的 stride、合法对齐、固定时间/参数和缓冲区边界,按算法特性选择逐字节或有依据的误差比较。必要时启用地址/未定义行为检查。
43
-
44
- 宿主机对照证明核心拆分的一致性,不证明鸿蒙 PixelMap、日志、绑定层或设备行为正确。验证记录区分核心对照、目标链接和目标运行;没有真实平台宏组合或 STATIC 目标的样例不能证明这些场景已覆盖。
45
-
46
- 不要将验证样例的临时时间/尺寸上限引入迁移接口作为默认限制。发现原算法数值范围或资源约束时,应明确原有契约、修复策略及新增限制的影响;未解决的行为差异不能归入完整兼容。
47
-
48
- ## 产物验收
49
-
50
- - 确认文件由本次构建产生,记录 SHA-256,避免把旧库作为成功结果。
51
- - 使用 SDK 的 `llvm-readelf`、`llvm-nm`、`llvm-ar` 等可用工具;记录命令和结果。
52
- - `.so`:检查 ELF machine/class、SONAME(适用时)、导出符号、DT_NEEDED、RPATH/RUNPATH 和未定义符号。动态库正常可有未定义导入,逐项确认提供者;不能要求全部符号为空,也不能忽略无法解析的 Android/JNI 依赖。
53
- - `.a`:列出归档并验证各对象架构;LLVM bitcode/LTO 成员使用兼容工具链验证。归档创建成功不等于链接成功,必须用目标工具链构建最小消费端,调用预期公共入口并链接所需传递依赖。确认所有需交付对象被覆盖;适用时加 whole-archive 链接检查,避免仅验证未拉取任何成员的空程序。
54
- - 检查产物架构只是必要条件:同 CPU 的 Android ELF 不能据此判定兼容。还要验证工具链来源、运行时、目标 API、动态依赖和消费端链接。
55
- - 共享库也执行最小消费端链接检查;只有显式授权并具有设备条件时执行设备加载/功能测试,不在宿主机运行目标 ELF。
56
- - 公共头文件、依赖库及 C++ 运行时部署要求随产物清单交付;报告未覆盖的 ABI、配置与平台分支。
57
-
58
- 解析动态导入时,按实际链接搜索路径查找提供者:C++ 运行时可能位于 SDK 的 LLVM 库目录,而非 sysroot。区分系统库、应用需打包的运行时和仅供链接的 SDK stub;找到符号提供者仅证明链接条件,不允许将 stub 当运行时交付。排查交付物中的宿主机构建路径;需要相对加载路径时,按部署布局设置并验证。
59
-
60
- 有 Android 编译环境时对受影响目标执行回归;没有时明确写“Android 构建未验证”,仍检查条件分流及原路径是否完整。SDK/设备缺失属于未执行验证,不能标记通过。