@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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +40 -0
- package/agents/android-to-hmos-00-orchestrator.md +3 -315
- package/agents/d2h.md +53 -38
- package/contracts/workflow/artifacts.md +22 -0
- package/contracts/workflow/delivery.md +54 -0
- package/contracts/workflow/dispatch.md +26 -0
- package/contracts/workflow/execution.md +125 -0
- package/contracts/workflow/generation.md +40 -0
- package/contracts/workflow/orchestration.md +49 -0
- package/contracts/workflow/overview.md +58 -0
- package/contracts/workflow/plan.md +119 -0
- package/contracts/workflow/scope.md +151 -0
- package/dist/bin/install-opencode.js +34 -15
- package/dist/src/install-codex.js +131 -0
- package/dist/src/install-opencode.js +5 -5
- package/dist/src/workflow.js +54 -0
- package/docs/architecture-plan-guide.zh-CN.md +70 -0
- package/docs/incremental-spec-evaluation-design.md +670 -0
- package/docs/spec-plan-guide.md +226 -0
- package/docs/workflow-decoupling.md +59 -0
- package/opencode/interactive-tools/advance-progress-demo.mjs +21 -0
- package/opencode/interactive-tools/browser-host.ts +110 -0
- package/opencode/interactive-tools/core.ts +242 -0
- package/opencode/interactive-tools/demo-workflow.ts +55 -0
- package/opencode/interactive-tools/demo.mjs +37 -0
- package/opencode/interactive-tools/package-lock.json +1876 -0
- package/opencode/interactive-tools/package.json +23 -0
- package/opencode/interactive-tools/panel.ts +40 -0
- package/opencode/interactive-tools/prepare-demo.mjs +17 -0
- package/opencode/interactive-tools/prepare-progress-demo.mjs +13 -0
- package/opencode/interactive-tools/progress.ts +118 -0
- package/opencode/interactive-tools/server-legacy.mjs +2 -0
- package/opencode/interactive-tools/server.mjs +40 -0
- package/opencode/interactive-tools/tui.tsx +230 -0
- package/package.json +9 -1
- package/schemas/native-libs-analysis-report.schema.json +695 -0
- package/schemas/native-libs-verify-report.schema.json +566 -0
- package/schemas/spec-native-libs-shard.schema.json +110 -0
- package/skills/arkts-icon-sizing/SKILL.md +0 -10
- package/skills/cpp/d2h-native-library-analyse/SKILL.md +91 -0
- package/skills/cpp/d2h-native-library-analyse/scripts/analyse-android-so.py +630 -0
- package/skills/cpp/d2h-native-library-build/SKILL.md +403 -0
- package/skills/cpp/d2h-native-library-build/references/build-config-mapping.md +180 -0
- package/skills/cpp/d2h-native-library-build/references/jni-to-napi-mapping.md +74 -0
- package/skills/cpp/d2h-native-library-build/scripts/check-android-so.py +580 -0
- package/skills/cpp/d2h-native-library-verify/SKILL.md +111 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-build-sign-run.md +67 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/app.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/resources/base/element/string.json +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/README.md +25 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/build-profile.json5 +24 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/build-profile.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/hvigorfile.ts +2 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/oh-package.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/entryability/EntryAbility.ets +5 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/Index.ets +3 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/NativeVerifyDemo.ets +276 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/module.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/color.json +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/string.json +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/profile/main_pages.json +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/FFmpegVerify.test.ets +176 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/List.test.ets +2 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/module.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigor/hvigor-config.json5 +1 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigorfile.ts +2 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-project-template/oh-package.json5 +9 -0
- package/skills/cpp/d2h-native-library-verify/references/demo-template.md +176 -0
- package/skills/cpp/d2h-native-library-verify/references/hypium-test-template.md +163 -0
- package/skills/cpp/d2h-native-library-verify/scripts/__pycache__/native_common.cpython-313.pyc +0 -0
- package/skills/cpp/d2h-native-library-verify/scripts/device-verify.py +304 -0
- package/skills/cpp/d2h-native-library-verify/scripts/native_common.py +341 -0
- package/skills/cpp/d2h-native-library-verify/scripts/verify-ohos-native.py +1099 -0
- package/skills/d2h-app-solution/SKILL.md +198 -0
- package/skills/d2h-app-solution/agents/openai.yaml +4 -0
- package/skills/d2h-app-solution/references/framework-evidence.md +117 -0
- package/skills/d2h-app-solution/references/hierarchy-rules.md +88 -0
- package/skills/d2h-app-solution/references/inventory-schema.md +305 -0
- package/skills/d2h-app-solution/references/technical-analysis.md +101 -0
- package/skills/d2h-app-solution/scripts/scan_repositories.py +350 -0
- package/skills/d2h-app-solution/scripts/validate_inventory.py +337 -0
- package/skills/d2h-architecture-plan/SKILL.md +35 -0
- package/skills/d2h-architecture-plan/references/directory-creation.md +43 -0
- package/skills/d2h-architecture-plan/references/hybrid-design.md +84 -0
- package/skills/d2h-architecture-plan/references/layout-reference.md +83 -0
- package/skills/d2h-architecture-plan/references/plan-contract.md +51 -0
- package/skills/d2h-architecture-plan/references/source-review.md +50 -0
- package/skills/d2h-cloud-knowledge/SKILL.md +28 -7
- package/skills/d2h-cloud-knowledge/kb_query.mjs +8 -0
- package/skills/d2h-dashboard/SKILL.md +56 -0
- package/skills/d2h-product-family-migration/SKILL.md +103 -0
- package/skills/d2h-product-family-migration/agents/openai.yaml +3 -0
- package/skills/d2h-product-family-migration/assets/incremental-plan.template.md +55 -0
- package/skills/d2h-product-family-migration/references/advanced/behavioral-verification.md +59 -0
- package/skills/d2h-product-family-migration/references/advanced/existing-skill-integration.md +30 -0
- package/skills/d2h-product-family-migration/references/advanced/packaging-and-verification.md +43 -0
- package/skills/d2h-product-family-migration/references/advanced/platform-probes.md +26 -0
- package/skills/d2h-product-family-migration/references/advanced/product-line-design.md +40 -0
- package/skills/d2h-product-family-migration/references/baseline-and-delta.md +50 -0
- package/skills/d2h-product-family-migration/tests/markdown-cases.md +76 -0
- package/skills/{d2h-page-develop → d2h-spec-develop}/SKILL.md +143 -132
- package/skills/d2h-spec-develop/agents/openai.yaml +7 -0
- package/skills/d2h-spec-develop/references/worker-workflow.md +26 -0
- package/skills/{d2h-page-spec-generate → d2h-spec-generate}/SKILL.md +24 -13
- package/skills/d2h-spec-generate/assets/spec-template.md +109 -0
- package/skills/d2h-spec-generate/references/from-plan.md +19 -0
- package/skills/d2h-spec-generate/references/spec-content.md +34 -0
- package/skills/{d2h-page-spec-generate → d2h-spec-generate}/scripts/build_batch_report.py +35 -84
- package/skills/d2h-spec-plan/SKILL.md +38 -0
- package/skills/d2h-spec-plan/agents/openai.yaml +4 -0
- package/skills/d2h-spec-plan/references/architecture-handoff.md +9 -0
- package/skills/d2h-spec-plan/references/plan-contract.md +13 -0
- package/skills/d2h-spec-plan/references/planning-method.md +46 -0
- package/skills/d2h-spec-plan/references/round-scope-assessment.md +49 -0
- package/skills/d2h-spec-plan/references/work-packets.md +61 -0
- package/skills/d2h-utg-ai-generate/references/click-paths-schema.json +2 -2
- package/skills/d2h-utg-ai-generate/references/page-schema.json +2 -2
- package/skills/d2h-utg-ai-generate/references/utg-schema.json +2 -2
- package/skills/d2h-utg-static-generate/SKILL.md +2 -2
- package/skills/managing-d2h-toolchain/environment-requirements.json +1 -1
- package/skills/managing-d2h-toolchain/toolchain.json +1 -1
- package/skills/preparing-migration-workspace/SKILL.md +32 -2
- package/workflow/__pycache__/artifact_bindings.cpython-313.pyc +0 -0
- package/workflow/__pycache__/spec_runtime.cpython-313.pyc +0 -0
- package/workflow/artifact_bindings.py +224 -0
- package/workflow/assets/dashboard.html +88 -0
- package/workflow/build_batch_report.py +8 -0
- package/workflow/collect_code_metrics.py +75 -0
- package/workflow/dashboard_overview.py +109 -0
- package/workflow/delivery_view.py +82 -0
- package/workflow/feature_plan.py +234 -0
- package/workflow/page_batches.py +223 -0
- package/workflow/spec_generation.py +120 -0
- package/workflow/spec_runtime.py +890 -0
- package/workflow/work_packets.py +85 -0
- package/skills/d2h-page-develop/agents/openai.yaml +0 -7
- package/skills/harmonyos-migration-playbook/SKILL.md +0 -83
- package/skills/harmonyos-migration-playbook/agents/openai.yaml +0 -7
- package/skills/harmonyos-migration-playbook/references/arkts-compile.md +0 -24
- package/skills/harmonyos-migration-playbook/references/harmony-runtime.md +0 -53
- package/skills/harmonyos-migration-playbook/references/lesson-lifecycle.md +0 -45
- package/skills/harmonyos-migration-playbook/references/protocol-e2e.md +0 -23
- package/skills/harmonyos-migration-playbook/references/ui-automation.md +0 -53
- package/skills/harmonyos-migration-playbook/references/windows-environment.md +0 -38
- package/skills/native-library-substitution/SKILL.md +0 -385
- package/skills/native-library-substitution/references/native-library-substitution.json +0 -56906
- package/skills/native-library-substitution/references/native-library-substitution.md +0 -163
- package/skills/porting-cmake-native-libraries/SKILL.md +0 -57
- package/skills/porting-cmake-native-libraries/references/platform-adaptation.md +0 -49
- package/skills/porting-cmake-native-libraries/references/report-and-build.md +0 -60
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: d2h-native-library-analyse
|
|
3
|
+
description: Android 应用功能清单分析:从 Android 工程源码提取用户功能场景 → 每个场景的 JNI native 方法 → 每个方法涉及的 .so/.a 文件。自顶向下分析:① 扫描 Java/Kotlin 源码提取 native 声明和调用上下文 ② 通过 loadLibrary → CMake target_link_libraries → 实际文件三级关联(含间接 LibraryLoader 和同包前缀兜底)③ 按用户场景(视频播放/音频播放/直播推流/媒体转码等)分组。输出 feature-manifest.html(给人看,功能维度)+ feature-manifest.json(给 AI 映射,机器可读)。当用户要求「分析 Android 工程用了哪些 so」「功能涉及哪些原生库」「生成功能清单」「JNI 和 so 的对应关系」时触发。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Android 应用功能清单 → JNI → so/a 文件分析
|
|
7
|
+
|
|
8
|
+
## 一、分析链条(自顶向下)
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
用户功能场景(视频播放/音频播放/直播推流/媒体转码…)
|
|
12
|
+
→ JNI native 方法(Java/Kotlin 中的 native/external fun 声明)
|
|
13
|
+
→ 涉及的 .so/.a 文件(通过 loadLibrary → CMake 依赖 → 实际文件)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 二、快速用法
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# 完整分析
|
|
20
|
+
python3 scripts/analyse-android-so.py <Android工程目录>
|
|
21
|
+
|
|
22
|
+
# 指定输出目录
|
|
23
|
+
python3 scripts/analyse-android-so.py <工程> --output <目录>
|
|
24
|
+
|
|
25
|
+
# JSON 输出(给 AI 映射)
|
|
26
|
+
python3 scripts/analyse-android-so.py <工程> --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
产出(默认 `<工程名>-native-reports/`):
|
|
30
|
+
- `feature-manifest.html` — 给人看,页面结构自上而下:
|
|
31
|
+
1. **📦 工程内全部 .so/.a 文件**(去重后同名多 ABI 优先保留 arm64-v8a,含**迁移分级**(🔴阻断/🟡需适配/🟢干净)/架构/路径/被哪些功能使用,悬停显示分级原因)
|
|
32
|
+
2. **📋 功能 → 原生库对照表**
|
|
33
|
+
3. 各功能详情卡片(JNI 方法清单 + 涉及库)
|
|
34
|
+
- `feature-manifest.json` — 给 AI 映射(`features[]` + `all_libs[]`,机器可读)
|
|
35
|
+
|
|
36
|
+
## 三、so/a 关联策略(三级)
|
|
37
|
+
|
|
38
|
+
| 优先级 | 策略 | 示例 |
|
|
39
|
+
|--------|------|------|
|
|
40
|
+
| ① 直接 | 类自身 `System.loadLibrary("media-handle")` → CMake `target_link_libraries(media-handle ffmpeg)` → `libffmpeg.so` | FFmpegCmd |
|
|
41
|
+
| ② 间接 | LibraryLoader 类加载 → `loadLibrary("nextplayer")` → CMake nextplayer→ffmpeg | NextPlayer |
|
|
42
|
+
| ③ 同模块 | 同包前缀(前 3 段相同)其他类的 loadLibrary | FrankVisualizer → AudioPlayer 的 media-handle |
|
|
43
|
+
| ④ JNI 符号 | .so 导出表中直接匹配 `Java_` 符号 | 备用 |
|
|
44
|
+
|
|
45
|
+
CMake 解析:去 `#` 注释后多行匹配 `target_link_libraries(target dep1 dep2 ...)`,过滤 NDK 系统库(log/android/jnigraphics 等)。
|
|
46
|
+
|
|
47
|
+
## 四、场景识别
|
|
48
|
+
|
|
49
|
+
从 Java 类名推断用户场景(精确匹配优先,Activity 名兜底):
|
|
50
|
+
|
|
51
|
+
| 类名关键词 | 场景 | 用户操作 |
|
|
52
|
+
|-----------|------|----------|
|
|
53
|
+
| `NextPlayer` | 视频播放(NextPlayer引擎) | 播放视频/网络流 |
|
|
54
|
+
| `VideoPlayer` | 视频滤镜预览 | 预览滤镜效果 |
|
|
55
|
+
| `AudioPlayer` | 音频播放 | 播放音频文件 |
|
|
56
|
+
| `FFmpegCmd` | 视频剪辑处理 | 转码/压缩/加水印 |
|
|
57
|
+
| `MediaRetriever` | 媒体格式探测 | 获取时长/截图/元数据 |
|
|
58
|
+
| `LivePusher` | 直播推流 | 摄像头→编码→RTMP推流 |
|
|
59
|
+
| `Visualizer` | 音频可视化 | 实时频谱/波形 |
|
|
60
|
+
|
|
61
|
+
## 五、输出 JSON 结构
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"features": [
|
|
66
|
+
{
|
|
67
|
+
"feature": "视频剪辑处理(FFmpegCmd)",
|
|
68
|
+
"jni_methods": [
|
|
69
|
+
{"class": "com.frank.ffmpeg.FFmpegCmd", "method": "handle",
|
|
70
|
+
"jni_symbol": "Java_com_frank_ffmpeg_FFmpegCmd_handle",
|
|
71
|
+
"operation": "execute", "file": "FFmpegCmd.java", "line": 139,
|
|
72
|
+
"libs": ["libffmpeg.so"]}
|
|
73
|
+
],
|
|
74
|
+
"involved_libs": ["libffmpeg.so"],
|
|
75
|
+
"source_files": ["FFmpegCmd.java"]
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 六、约束
|
|
82
|
+
|
|
83
|
+
- 只读分析,不修改任何文件
|
|
84
|
+
- so/a 关联是推断性的(基于 loadLibrary + CMake 依赖链),可能有误报/漏报
|
|
85
|
+
- 编译期产物(如 NextPlayer 的 libnextplayer.so)在仓库内无 .so 文件,正确显示为空(通过间接策略仍可关联到 CMake 依赖的 libffmpeg.so)
|
|
86
|
+
- 功能场景识别基于类名关键词,未识别的类归「其他」
|
|
87
|
+
|
|
88
|
+
## 七、参考文件
|
|
89
|
+
|
|
90
|
+
- [scripts/analyse-android-so.py](scripts/analyse-android-so.py):分析脚本
|
|
91
|
+
- 输出目录默认 `<工程名>-native-reports/`
|