@ohos-cpf/3rdloop 0.0.1 → 0.0.3
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/README.md +245 -425
- package/bin/3rdloop.mjs +46 -46
- package/lib/cli.js +781 -740
- package/lib/config-cmd.js +452 -0
- package/lib/config.js +318 -317
- package/lib/doctor.js +113 -113
- package/lib/exit-codes.js +30 -30
- package/lib/opencode.js +155 -155
- package/lib/orch.js +426 -426
- package/lib/queries.js +263 -263
- package/lib/step.js +325 -325
- package/lib/ui.js +222 -222
- package/lib/update.js +280 -0
- package/lib/workflow.js +308 -290
- package/lib/workflows.js +131 -131
- package/package.json +50 -50
- package/vendor/Server/Agent/SkillSelector/README.md +343 -343
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
- package/vendor/Server/Agent/SkillSelector/index.js +14 -14
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
- package/vendor/Server/Brain/Brain.js +686 -686
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
- package/vendor/Server/Brain/PlanPersistence.js +196 -196
- package/vendor/Server/Brain/SkillExecutor.js +251 -251
- package/vendor/Server/Brain/index.js +11 -11
- package/vendor/Server/CLI/cli.js +275 -243
- package/vendor/Server/CLI/deveco-code/index.js +71 -0
- package/vendor/Server/CLI/deveco-code.js +5 -0
- package/vendor/Server/CLI/opencode/index.js +817 -804
- package/vendor/Server/CLI/opencode.js +5 -5
- package/vendor/Server/DbUse/MessageArchive.js +61 -61
- package/vendor/Server/DbUse/StorageManager.js +107 -107
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
- package/vendor/Server/DbUse/index.js +160 -160
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
- package/vendor/Server/FlexRunner/index.js +12 -12
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
- package/vendor/Server/Knowledge/index.js +33 -33
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
- package/vendor/Server/LoopEngine/index.js +11 -11
- package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
- package/vendor/Server/Orchestrator/StepNode.js +312 -312
- package/vendor/Server/Orchestrator/index.js +13 -13
- package/vendor/Server/Routes/controllers/BrainController.js +241 -241
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
- package/vendor/Server/Routes/controllers/HealthController.js +44 -44
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
- package/vendor/Server/Routes/controllers/StatsController.js +57 -57
- package/vendor/Server/Routes/controllers/StreamController.js +67 -67
- package/vendor/Server/Routes/library/logger.js +179 -179
- package/vendor/Server/Routes/library/zipArchive.js +172 -172
- package/vendor/Server/Routes/router/Router.js +204 -204
- package/vendor/Server/Routes/routes/brain.js +47 -47
- package/vendor/Server/Routes/routes/flexrunner.js +72 -72
- package/vendor/Server/Routes/routes/health.js +28 -28
- package/vendor/Server/Routes/routes/index.js +57 -57
- package/vendor/Server/Routes/routes/knowledge.js +55 -55
- package/vendor/Server/Routes/routes/loopengine.js +58 -58
- package/vendor/Server/Routes/routes/orchestrator.js +61 -61
- package/vendor/Server/Routes/routes/registry.js +97 -97
- package/vendor/Server/Routes/routes/stats.js +23 -23
- package/vendor/Server/Routes/routes/stream.js +30 -30
- package/vendor/Server/Routes/server.js +203 -202
- package/vendor/Server/Routes/sse/SseHub.js +308 -308
- package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -174
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -0
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -313
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -159
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -222
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/flutter-interface/README.md +75 -75
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
- package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
- package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
- package/vendor/Server/TestCheck/TestCheck.js +775 -775
- package/vendor/Server/TestCheck/index.js +11 -11
- package/vendor/Server/library/McpToolGuide.js +280 -280
- package/vendor/Server/library/StatsService.js +126 -126
- package/vendor/Server/library/cstTime.js +16 -16
- package/vendor/VERSION +3 -3
- package/workflows/pr-check.mjs +105 -105
- package/workflows/pr-push.mjs +193 -0
- package/vendor/Server/Agent/SkillSelector/types.js +0 -63
|
@@ -1,512 +1,512 @@
|
|
|
1
|
-
# HAR 与 TGZ 打包流程
|
|
2
|
-
|
|
3
|
-
本文档详细说明 RN 鸿蒙三方库适配完成后的打包流程:先打 HAR 包,再打 TGZ 包,最终 RN 工程以本地 tgz 包依赖进行编译验证。
|
|
4
|
-
|
|
5
|
-
## 流程总览
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
代码适配完成
|
|
9
|
-
│
|
|
10
|
-
▼
|
|
11
|
-
Step A: 单文件语法检查(devecocli check lint)
|
|
12
|
-
│
|
|
13
|
-
▼
|
|
14
|
-
Step B: 打 HAR 包(rnoh-build-har)
|
|
15
|
-
│ → 产出 harmony/<module>.har
|
|
16
|
-
▼
|
|
17
|
-
Step C: 打 TGZ 包(npm pack)
|
|
18
|
-
│ → 产出 <package-name>-<version>.tgz
|
|
19
|
-
▼
|
|
20
|
-
Step D: RN 工程依赖本地 TGZ 包
|
|
21
|
-
│ → example/package.json 中 "file:../xxx.tgz"
|
|
22
|
-
▼
|
|
23
|
-
Step E: 最终编译验证(依赖 tgz 包构建 example)
|
|
24
|
-
→ devecocli build 通过即验证完成
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
> ⚠️ **核心原则**:最终编译验证必须依赖 TGZ 包,不能依赖源码 `file:` 目录引用,也不能跳过 HAR 打包直接编译。TGZ 包是最终交付物,只有 TGZ 包能验证完整的产物结构正确性。
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Step A: 单文件语法检查
|
|
32
|
-
|
|
33
|
-
在打包之前,先对修改过的 `.ets`/`.cpp` 文件进行快速语法检查,避免打包过程中才发现低级语法错误。
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# 检查修改过的 ArkTS 文件
|
|
37
|
-
devecocli check lint harmony/src/main/ets/XxxModule.ets
|
|
38
|
-
devecocli check lint harmony/src/main/ets/XxxPackage.ets
|
|
39
|
-
|
|
40
|
-
# 检查修改过的 C++ 文件
|
|
41
|
-
devecocli check lint harmony/src/main/cpp/XxxComponent.cpp
|
|
42
|
-
|
|
43
|
-
# 或批量检查整个目录
|
|
44
|
-
devecocli check lint harmony/src/main/ets/
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
确认无 ERROR 级别问题后,进入 Step B。
|
|
48
|
-
|
|
49
|
-
> 也可使用 MCP `check` 工具传入文件路径列表进行结构化诊断。
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Step B: 打 HAR 包
|
|
54
|
-
|
|
55
|
-
使用 **`rnoh-build-har`** 工具自动构建鸿蒙 HAR 模块。
|
|
56
|
-
|
|
57
|
-
### 工具简介
|
|
58
|
-
|
|
59
|
-
- **仓库**:https://gitcode.com/lalhanOrz/rntpc_buildhar
|
|
60
|
-
- **npm 包名**:`rnoh-build-har`
|
|
61
|
-
- **功能**:自动创建临时壳工程 → 配置工程级文件 → 调用 `devecocli build` 构建 → 校验产物 → 拷贝 HAR → 清理临时文件
|
|
62
|
-
- **跨平台**:macOS / Windows / Linux,纯 Node.js 实现,无需 bash/find/rsync
|
|
63
|
-
|
|
64
|
-
### 安装
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# 全局安装
|
|
68
|
-
npm install -g rnoh-build-har
|
|
69
|
-
|
|
70
|
-
# 或 npx 直接运行(无需安装)
|
|
71
|
-
npx rnoh-build-har <args>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 前置要求
|
|
75
|
-
|
|
76
|
-
| 要求 | 必需 | 说明 |
|
|
77
|
-
|------|------|------|
|
|
78
|
-
| Node.js ≥ 18 | ✅ | 运行时 |
|
|
79
|
-
| devecocli | ✅ | DevEco Studio 自带,或 `npm install -g @deveco/deveco-cli@latest` |
|
|
80
|
-
| DevEco SDK | ✅ | 通过 DevEco Studio 安装 |
|
|
81
|
-
|
|
82
|
-
### 用法
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# 用法格式
|
|
86
|
-
rnoh-build-har [api-version] [version] [path] [--module-name <name>] [--build-mode <mode>]
|
|
87
|
-
|
|
88
|
-
# 参数说明:
|
|
89
|
-
# api-version HarmonyOS API 版本号(纯整数,如 12, 16)
|
|
90
|
-
# 映射到 compatibleSdkVersion: 12→'5.0.0(12)', 16→'5.0.4(16)'
|
|
91
|
-
# version RNOH ohpm 版本号(含小数点,如 0.82.18)
|
|
92
|
-
# 指定后从 ohpm 拉取 RNOH,而非使用本地 HAR
|
|
93
|
-
# path RN 库根目录(harmony/ 应在其内部)
|
|
94
|
-
# 省略时自动检测当前目录及子目录
|
|
95
|
-
# --module-name HAR 模块名,省略时自动检测
|
|
96
|
-
# --build-mode 构建模式:release(默认)或 debug
|
|
97
|
-
# --help 显示帮助
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
参数按格式自动识别:
|
|
101
|
-
- 纯整数(如 `12`、`16`)→ API 版本
|
|
102
|
-
- 含小数点(如 `0.82.18`)→ RNOH ohpm 版本
|
|
103
|
-
- 其他非 flag 参数 → 库路径
|
|
104
|
-
|
|
105
|
-
### API 版本对应表
|
|
106
|
-
|
|
107
|
-
| API 版本 | compatibleSdkVersion | API 版本 | compatibleSdkVersion |
|
|
108
|
-
|---------|---------------------|---------|---------------------|
|
|
109
|
-
| 12 | 5.0.0(12) | 18 | 5.1.0(18) |
|
|
110
|
-
| 13 | 5.0.1(13) | 19 | 5.1.1(19) |
|
|
111
|
-
| 14 | 5.0.2(14) | 20 | 6.0.0(20) |
|
|
112
|
-
| 15 | 5.0.3(15) | 21 | 6.0.1(21) |
|
|
113
|
-
| 16 | 5.0.4(16) | 22 | 6.0.2(22) |
|
|
114
|
-
| 17 | 5.0.5(17) | 23 | 6.1.0(23) |
|
|
115
|
-
| | | 24 | 6.1.1(24) |
|
|
116
|
-
|
|
117
|
-
> 数据来源:[HarmonyOS 版本说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/overview-allversion)
|
|
118
|
-
> 如果 `harmony/build-profile.json5` 已存在,将保留原有配置,不覆盖 `compatibleSdkVersion`。
|
|
119
|
-
|
|
120
|
-
### RNOH 版本与 API 版本选择
|
|
121
|
-
|
|
122
|
-
| RNOH 版本 | 推荐 API 版本 | 说明 |
|
|
123
|
-
|-----------|-------------|------|
|
|
124
|
-
| 0.72 | 12+ | API 12 |
|
|
125
|
-
| 0.77 | 12+ | API 12 |
|
|
126
|
-
| 0.82 | 12+ | API 12 |
|
|
127
|
-
| 0.84 | 12+ | API 12 |
|
|
128
|
-
|
|
129
|
-
### 常用示例
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# 自动检测当前目录或子目录中的 harmony/
|
|
133
|
-
rnoh-build-har
|
|
134
|
-
|
|
135
|
-
# 指定库路径
|
|
136
|
-
rnoh-build-har rntpc_react-native-netinfo
|
|
137
|
-
|
|
138
|
-
# 指定 API 版本 + 库路径(使用本地 HAR)
|
|
139
|
-
rnoh-build-har 12 rntpc_react-native-netinfo
|
|
140
|
-
|
|
141
|
-
# 使用 ohpm 版本号替代本地 HAR(无需先 npm install)
|
|
142
|
-
rnoh-build-har 0.82.18 rntpc_react-native-permissions
|
|
143
|
-
|
|
144
|
-
# 指定 API 版本 + ohpm 版本 + 路径
|
|
145
|
-
rnoh-build-har 12 0.84.2 rntpc_react-native-permissions
|
|
146
|
-
|
|
147
|
-
# 指定模块名 + debug 模式
|
|
148
|
-
rnoh-build-har --module-name mylib --build-mode debug
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### 工作流程(工具内部)
|
|
152
|
-
|
|
153
|
-
1. 定位 `harmony/` 目录和 HAR 模块
|
|
154
|
-
2. 检测是否依赖 `@rnoh/react-native-openharmony`
|
|
155
|
-
3. 搜索 `react_native_openharmony.har`(本地或 ohpm 版本)
|
|
156
|
-
4. 写入临时工程级配置文件(`build-profile.json5` 等)
|
|
157
|
-
5. 执行 `devecocli build --modules <name> --build-mode <mode>`
|
|
158
|
-
6. 校验产物格式(gzip tar,无 AppleDouble 文件)
|
|
159
|
-
7. 补全 cpp 源码(如果 devecocli 未打包 CMakeLists.txt)
|
|
160
|
-
8. 拷贝产物到 `harmony/<module>.har`
|
|
161
|
-
9. 清理所有临时文件和构建缓存
|
|
162
|
-
|
|
163
|
-
### 产物
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
harmony/<module-name>.har # gzip tar 格式,含 cpp 源码
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### 编程式 API
|
|
170
|
-
|
|
171
|
-
```javascript
|
|
172
|
-
import { buildHar } from 'rnoh-build-har';
|
|
173
|
-
|
|
174
|
-
await buildHar({
|
|
175
|
-
libPath: '/path/to/react-native-xxx',
|
|
176
|
-
buildMode: 'release',
|
|
177
|
-
// rnohVersion: '0.82.18', // 可选:使用 ohpm 版本
|
|
178
|
-
// apiVersion: 12, // 可选:HarmonyOS API 版本(12-24)
|
|
179
|
-
// moduleName: 'mylib', // 可选:自动检测
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### 常见问题
|
|
184
|
-
|
|
185
|
-
#### HAR 构建失败:SDK 版本不匹配
|
|
186
|
-
|
|
187
|
-
如果 `harmony/build-profile.json5` 中 `compileSdkVersion` 指定的 SDK 本地未安装:
|
|
188
|
-
|
|
189
|
-
- `rnoh-build-har` 会自动处理临时工程配置,但库自身的 `build-profile.json5` 可能保留旧 `compileSdkVersion`
|
|
190
|
-
- 解决:移除库 `build-profile.json5` 中的 `compileSdkVersion` 字段,让 hvigor 自动选择
|
|
191
|
-
- 或通过 `api-version` 参数指定正确的 API 版本
|
|
192
|
-
|
|
193
|
-
#### HAR 构建失败:ohpm 依赖未安装
|
|
194
|
-
|
|
195
|
-
`rnoh-build-har` 需要本地有 `react_native_openharmony.har`:
|
|
196
|
-
- 如果 RNOH 框架通过 npm 安装(`@react-native-oh/react-native-harmony`),HAR 文件在 `node_modules/@react-native-oh/react-native-harmony/react_native_openharmony.har`
|
|
197
|
-
- 如果使用 `rnohVersion` 参数,工具会从 ohpm 自动拉取
|
|
198
|
-
|
|
199
|
-
#### 产物路径
|
|
200
|
-
|
|
201
|
-
HAR 文件产出在库根目录的 `harmony/<module-name>.har`,例如:
|
|
202
|
-
```
|
|
203
|
-
rntpc_react-native-netinfo/
|
|
204
|
-
├── harmony/
|
|
205
|
-
│ └── netinfo.har ← 构建产物
|
|
206
|
-
├── src/
|
|
207
|
-
└── package.json
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Step C: 打 TGZ 包
|
|
213
|
-
|
|
214
|
-
HAR 包构建成功后,打 npm TGZ 包。TGZ 包是最终交付物,包含 JS 代码 + HAR 包 + package.json 配置。
|
|
215
|
-
|
|
216
|
-
### 前提条件
|
|
217
|
-
|
|
218
|
-
1. **HAR 包已就绪**:`harmony/<module>.har` 文件存在(Step B 产出)
|
|
219
|
-
2. **package.json 中 files 字段包含 HAR**:确保 `npm pack` 能将 HAR 打入 tgz
|
|
220
|
-
|
|
221
|
-
### 检查 package.json files 配置
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
# 查看当前 package.json 的 files 字段
|
|
225
|
-
cat package.json | grep -A 10 '"files"'
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
确保 `files` 字段包含 `harmony/` 或具体的 `.har` 文件路径:
|
|
229
|
-
|
|
230
|
-
```json
|
|
231
|
-
{
|
|
232
|
-
"files": [
|
|
233
|
-
"src",
|
|
234
|
-
"harmony",
|
|
235
|
-
"README.md"
|
|
236
|
-
]
|
|
237
|
-
}
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
> 如果 `files` 字段缺失或不含 `harmony/`,`npm pack` 不会包含 HAR 文件,导致 tgz 包不完整。
|
|
241
|
-
|
|
242
|
-
### 打包命令
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
# 在库根目录执行
|
|
246
|
-
cd /path/to/react-native-xxx
|
|
247
|
-
|
|
248
|
-
# 打包(生成 <name>-<version>.tgz)
|
|
249
|
-
# prepack 脚本会执行 bob build(tsc + babel 编译),必须通过
|
|
250
|
-
npm pack
|
|
251
|
-
|
|
252
|
-
# 如果 prepack 失败(TypeScript 编译错误),必须修复错误后重试,禁止 --ignore-scripts
|
|
253
|
-
# 常见 TS 错误修复见下方"prepack TypeScript 编译错误修复"
|
|
254
|
-
|
|
255
|
-
# 输出示例:
|
|
256
|
-
# npm notice
|
|
257
|
-
# npm notice 📦 @react-native-ohos/react-native-xxx@7.2.7-rc.6
|
|
258
|
-
# npm notice === Tarball Contents ===
|
|
259
|
-
# npm notice 12.0kB src/index.js
|
|
260
|
-
# npm notice 5.2MB harmony/xxx.har
|
|
261
|
-
# npm notice 1.0kB package.json
|
|
262
|
-
# npm notice 5.0kB README.md
|
|
263
|
-
# npm notice === Tarball Details ===
|
|
264
|
-
# npm notice name: @react-native-ohos/react-native-xxx
|
|
265
|
-
# npm notice version: 7.2.7-rc.6
|
|
266
|
-
# npm notice filename: react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz
|
|
267
|
-
# npm notice package size: 5.2 MB
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### 验证 tgz 内容
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
# 查看 tgz 包含的文件列表
|
|
274
|
-
npm pack --dry-run
|
|
275
|
-
|
|
276
|
-
# 或手动解压检查
|
|
277
|
-
tar -tzf react-native-ohos-react-native-xxx-*.tgz | grep '\.har$'
|
|
278
|
-
# 应看到 harmony/xxx.har
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### 产物
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
react-native-ohos-react-native-xxx-<version>.tgz
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
文件名格式:`<scope>-<name>-<version>.tgz`(scope 中的 `@` 和 `/` 转为 `-`)
|
|
288
|
-
|
|
289
|
-
### prepack TypeScript 编译错误修复
|
|
290
|
-
|
|
291
|
-
> ⚠️ **禁止使用 `npm pack --ignore-scripts` 跳过 prepack**。prepack 执行 `bob build`(tsc + babel 编译),是 TGZ 包完整性的保证。必须修复所有 TypeScript 编译错误后让 `npm pack` 正常通过。
|
|
292
|
-
|
|
293
|
-
`prepack` 脚本执行 `yarn build` → `bob build`,其中 `typescript` target 使用 `tsc` 生成类型定义文件。升级到新版本 TypeScript(如 5.9.x)后,可能遇到以下编译错误:
|
|
294
|
-
|
|
295
|
-
| 错误码 | 错误信息 | 原因 | 修复方法 |
|
|
296
|
-
|--------|---------|------|---------|
|
|
297
|
-
| `TS4111` | Property 'X' comes from an index signature, so it must be accessed with ['X'] | TypeScript 5.x 对索引签名属性访问更严格 | 将 `obj.prop` 改为 `obj['prop']` |
|
|
298
|
-
| `TS2307` | Cannot find module 'X' or its corresponding type declarations | 鸿蒙化库的 jest mock 自引用上游包名 | 改为相对路径 import(如 `"../AsyncStorage"`) |
|
|
299
|
-
| `TS2554` | Expected N arguments, but got M | 方法签名变更后调用处未同步更新 | 更新调用参数 |
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
// TS4111 修复示例
|
|
303
|
-
// 错误: return !!err.message && err?.code === "AsyncStorageError";
|
|
304
|
-
// 修复: return !!err['message'] && err?.['code'] === "AsyncStorageError";
|
|
305
|
-
|
|
306
|
-
// TS2307 修复示例(jest mock 自引用)
|
|
307
|
-
// 错误: import type { AsyncStorage } from "@react-native-async-storage/async-storage";
|
|
308
|
-
// 修复: import type { AsyncStorage } from "../AsyncStorage";
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## Step D: RN 工程依赖本地 TGZ 包
|
|
314
|
-
|
|
315
|
-
将 example 工程的依赖方式改为本地 tgz 包引用。
|
|
316
|
-
|
|
317
|
-
### 获取 example 模板工程
|
|
318
|
-
|
|
319
|
-
如果库根目录下没有 `example/` 目录(部分三方库仓库不包含 example 工程),需要先创建。从 RN3rdTemplate 模板仓库浅拷贝获取 0.84 版本的 example 模板:
|
|
320
|
-
|
|
321
|
-
```bash
|
|
322
|
-
# 在库根目录执行
|
|
323
|
-
# 浅拷贝模板仓库(仅最新一次提交,下载快)
|
|
324
|
-
git clone --depth 1 https://gitcode.com/lalhanOrz/RN3rdTemplate.git tmp-template
|
|
325
|
-
|
|
326
|
-
# 拷贝 0.84 目录作为 example
|
|
327
|
-
# 模板仓库结构: RN3rdTemplate/0.84/ (含 package.json, harmony/, 等)
|
|
328
|
-
cp -r tmp-template/0.84 example
|
|
329
|
-
|
|
330
|
-
# 清理临时目录
|
|
331
|
-
rm -rf tmp-template
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
模板仓库说明:
|
|
335
|
-
|
|
336
|
-
- **仓库地址**:https://gitcode.com/lalhanOrz/RN3rdTemplate/tree/main/0.84
|
|
337
|
-
- **内容**:RNOH 0.84 版本的标准 example 工程模板,包含 `package.json`、`harmony/` 目录、基础配置文件等
|
|
338
|
-
- **`--depth 1`**:仅克隆最新一次提交,避免下载完整历史,加快速度
|
|
339
|
-
- **拷贝后**:`example/` 目录可直接用于 4d 步骤的 tgz 依赖配置和 4e 的编译验证
|
|
340
|
-
|
|
341
|
-
> ⚠️ 模板工程是通用的 0.84 example 骨架,拷贝后需要根据实际库修改 `package.json` 中的依赖名称和版本,以及 `harmony/` 下的注册文件(`RNPackagesFactory.ets`、`PackageProvider.cpp` 等)。可使用 `./scripts/auto-integrate.sh` 自动完成注册。
|
|
342
|
-
|
|
343
|
-
### 修改 example/package.json
|
|
344
|
-
|
|
345
|
-
```json
|
|
346
|
-
{
|
|
347
|
-
"dependencies": {
|
|
348
|
-
"@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
> **关键**:使用 `file:` 引用 tgz 文件路径(相对路径),不是 `file:` 引用源码目录。
|
|
354
|
-
|
|
355
|
-
### 从源码依赖迁移到 tgz 依赖
|
|
356
|
-
|
|
357
|
-
如果原来使用源码目录引用:
|
|
358
|
-
|
|
359
|
-
```json
|
|
360
|
-
// 旧方式(源码目录引用)
|
|
361
|
-
"@react-native-ohos/react-native-xxx": "file:../rntpc_react-native-xxx"
|
|
362
|
-
|
|
363
|
-
// 新方式(tgz 包引用)
|
|
364
|
-
"@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
### 安装依赖
|
|
368
|
-
|
|
369
|
-
```bash
|
|
370
|
-
cd example
|
|
371
|
-
|
|
372
|
-
# 删除旧依赖(如果从源码引用迁移)
|
|
373
|
-
rm -rf node_modules/@react-native-ohos/react-native-xxx
|
|
374
|
-
|
|
375
|
-
# 安装 tgz 包
|
|
376
|
-
npm install --legacy-peer-deps
|
|
377
|
-
|
|
378
|
-
# 验证安装
|
|
379
|
-
ls node_modules/@react-native-ohos/react-native-xxx/harmony/
|
|
380
|
-
# 应看到 xxx.har 文件
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
### 验证 tgz 依赖正确安装
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
# 检查 node_modules 中的库是否包含 HAR
|
|
387
|
-
ls node_modules/@react-native-ohos/react-native-xxx/harmony/*.har
|
|
388
|
-
|
|
389
|
-
# 检查 package.json 解析后的依赖路径
|
|
390
|
-
cat node_modules/@react-native-ohos/react-native-xxx/package.json | grep version
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
## Step E: 最终编译验证
|
|
396
|
-
|
|
397
|
-
以 tgz 包依赖方式构建 example 工程,验证完整的产物结构正确性。
|
|
398
|
-
|
|
399
|
-
### 编译验证流程
|
|
400
|
-
|
|
401
|
-
```bash
|
|
402
|
-
# 1. 安装 JS 依赖(含 tgz 包)
|
|
403
|
-
cd example && npm install --legacy-peer-deps
|
|
404
|
-
|
|
405
|
-
# 2. 重新生成 codegen 代码
|
|
406
|
-
npm run codegen
|
|
407
|
-
|
|
408
|
-
# 3. 构建 JS Bundle
|
|
409
|
-
npm run dev
|
|
410
|
-
|
|
411
|
-
# 4. 安装鸿蒙原生依赖(关键步骤!不可跳过)
|
|
412
|
-
cd harmony && ohpm install
|
|
413
|
-
|
|
414
|
-
# 5. 构建鸿蒙原生工程
|
|
415
|
-
devecocli build --product default --build-mode debug
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
### ⚠️ ohpm install 不可跳过
|
|
419
|
-
|
|
420
|
-
`ohpm install` 将 `oh-package.json5` 中声明的 har 包安装到 `oh_modules/`。RNOH 框架的 har 包中包含 C++ 源码,CMake 编译时需要从 `oh_modules/@rnoh/react-native-openharmony/src/main/cpp/` 读取。跳过会导致 `CMake Error: not an existing directory`。
|
|
421
|
-
|
|
422
|
-
### oh-package.json5 中的 HAR 引用
|
|
423
|
-
|
|
424
|
-
确保 `example/harmony/oh-package.json5` 正确引用 tgz 包中的 HAR 文件:
|
|
425
|
-
|
|
426
|
-
```json5
|
|
427
|
-
// example/harmony/oh-package.json5 (根)
|
|
428
|
-
{
|
|
429
|
-
"overrides": {
|
|
430
|
-
"@rnoh/react-native-openharmony": "file:./../node_modules/@react-native-ohos/react-native-harmony/react_native_openharmony.har"
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
// example/harmony/entry/oh-package.json5
|
|
435
|
-
{
|
|
436
|
-
"dependencies": {
|
|
437
|
-
"@rnoh/react-native-openharmony": "file:../../node_modules/@react-native-oh/react-native-harmony/react_native_openharmony.har"
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
> tgz 包安装后,HAR 文件路径为 `node_modules/@react-native-ohos/react-native-xxx/harmony/xxx.har`。如果库自身有 oh-package.json5 引用,路径也需要对应更新。
|
|
443
|
-
|
|
444
|
-
### devecocli 不可用时回退
|
|
445
|
-
|
|
446
|
-
```bash
|
|
447
|
-
# macOS DevEco Studio 内置工具路径
|
|
448
|
-
HVIGORW="/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw"
|
|
449
|
-
OHPM="/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm"
|
|
450
|
-
|
|
451
|
-
cd example/harmony
|
|
452
|
-
"$OHPM" install
|
|
453
|
-
"$HVIGORW" assembleHap --no-daemon --mode module -p product=default
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
### 验证通过标准
|
|
457
|
-
|
|
458
|
-
| 验证项 | 通过标准 |
|
|
459
|
-
|--------|---------|
|
|
460
|
-
| `npm pack --dry-run` | tgz 包含 `.har` 文件 |
|
|
461
|
-
| `npm install` | tgz 包正确安装到 node_modules |
|
|
462
|
-
| `ohpm install` | oh_modules 中有 RNOH har 包 |
|
|
463
|
-
| `devecocli build` | `BUILD SUCCESSFUL`,仅框架内部 WARNING |
|
|
464
|
-
| 产物 hap | `entry/build/default/outputs/default/entry-default-signed.hap` 存在 |
|
|
465
|
-
|
|
466
|
-
---
|
|
467
|
-
|
|
468
|
-
## 渐进式验证策略
|
|
469
|
-
|
|
470
|
-
如果一次性验证失败难以定位,可分步验证:
|
|
471
|
-
|
|
472
|
-
1. **npm install 通过** — 确认 tgz 包能正确安装
|
|
473
|
-
2. **npm run codegen 通过** — 确认 spec 文件正确
|
|
474
|
-
3. **npm run dev 通过** — 确认 JS Bundle 构建成功
|
|
475
|
-
4. **ohpm install 通过** — 确认 har 包正确安装到 oh_modules
|
|
476
|
-
5. **devecocli build 通过** — 确认原生编译成功
|
|
477
|
-
|
|
478
|
-
每步通过后再进入下一步,便于定位问题。
|
|
479
|
-
|
|
480
|
-
---
|
|
481
|
-
|
|
482
|
-
## 完整示例:从适配完成到验证通过
|
|
483
|
-
|
|
484
|
-
```bash
|
|
485
|
-
# ── 前提:代码适配已完成 ──
|
|
486
|
-
|
|
487
|
-
# Step A: 语法检查
|
|
488
|
-
devecocli check lint harmony/src/main/ets/
|
|
489
|
-
devecocli check lint harmony/src/main/cpp/
|
|
490
|
-
|
|
491
|
-
# Step B: 打 HAR 包
|
|
492
|
-
cd /path/to/rntpc_react-native-xxx
|
|
493
|
-
rnoh-build-har 12 0.84.2 . # API 12 + RNOH 0.84.2 + 当前目录
|
|
494
|
-
# 产出: harmony/xxx.har
|
|
495
|
-
|
|
496
|
-
# Step C: 打 TGZ 包
|
|
497
|
-
npm pack
|
|
498
|
-
# 产出: react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz
|
|
499
|
-
|
|
500
|
-
# Step D: RN 工程依赖 tgz 包
|
|
501
|
-
cd example
|
|
502
|
-
# 编辑 package.json: "@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
503
|
-
rm -rf node_modules/@react-native-ohos/react-native-xxx
|
|
504
|
-
npm install --legacy-peer-deps
|
|
505
|
-
|
|
506
|
-
# Step E: 最终编译验证
|
|
507
|
-
npm run codegen
|
|
508
|
-
npm run dev
|
|
509
|
-
cd harmony && ohpm install
|
|
510
|
-
devecocli build --product default --build-mode debug
|
|
511
|
-
# ✅ BUILD SUCCESSFUL
|
|
512
|
-
```
|
|
1
|
+
# HAR 与 TGZ 打包流程
|
|
2
|
+
|
|
3
|
+
本文档详细说明 RN 鸿蒙三方库适配完成后的打包流程:先打 HAR 包,再打 TGZ 包,最终 RN 工程以本地 tgz 包依赖进行编译验证。
|
|
4
|
+
|
|
5
|
+
## 流程总览
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
代码适配完成
|
|
9
|
+
│
|
|
10
|
+
▼
|
|
11
|
+
Step A: 单文件语法检查(devecocli check lint)
|
|
12
|
+
│
|
|
13
|
+
▼
|
|
14
|
+
Step B: 打 HAR 包(rnoh-build-har)
|
|
15
|
+
│ → 产出 harmony/<module>.har
|
|
16
|
+
▼
|
|
17
|
+
Step C: 打 TGZ 包(npm pack)
|
|
18
|
+
│ → 产出 <package-name>-<version>.tgz
|
|
19
|
+
▼
|
|
20
|
+
Step D: RN 工程依赖本地 TGZ 包
|
|
21
|
+
│ → example/package.json 中 "file:../xxx.tgz"
|
|
22
|
+
▼
|
|
23
|
+
Step E: 最终编译验证(依赖 tgz 包构建 example)
|
|
24
|
+
→ devecocli build 通过即验证完成
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
> ⚠️ **核心原则**:最终编译验证必须依赖 TGZ 包,不能依赖源码 `file:` 目录引用,也不能跳过 HAR 打包直接编译。TGZ 包是最终交付物,只有 TGZ 包能验证完整的产物结构正确性。
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step A: 单文件语法检查
|
|
32
|
+
|
|
33
|
+
在打包之前,先对修改过的 `.ets`/`.cpp` 文件进行快速语法检查,避免打包过程中才发现低级语法错误。
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 检查修改过的 ArkTS 文件
|
|
37
|
+
devecocli check lint harmony/src/main/ets/XxxModule.ets
|
|
38
|
+
devecocli check lint harmony/src/main/ets/XxxPackage.ets
|
|
39
|
+
|
|
40
|
+
# 检查修改过的 C++ 文件
|
|
41
|
+
devecocli check lint harmony/src/main/cpp/XxxComponent.cpp
|
|
42
|
+
|
|
43
|
+
# 或批量检查整个目录
|
|
44
|
+
devecocli check lint harmony/src/main/ets/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
确认无 ERROR 级别问题后,进入 Step B。
|
|
48
|
+
|
|
49
|
+
> 也可使用 MCP `check` 工具传入文件路径列表进行结构化诊断。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Step B: 打 HAR 包
|
|
54
|
+
|
|
55
|
+
使用 **`rnoh-build-har`** 工具自动构建鸿蒙 HAR 模块。
|
|
56
|
+
|
|
57
|
+
### 工具简介
|
|
58
|
+
|
|
59
|
+
- **仓库**:https://gitcode.com/lalhanOrz/rntpc_buildhar
|
|
60
|
+
- **npm 包名**:`rnoh-build-har`
|
|
61
|
+
- **功能**:自动创建临时壳工程 → 配置工程级文件 → 调用 `devecocli build` 构建 → 校验产物 → 拷贝 HAR → 清理临时文件
|
|
62
|
+
- **跨平台**:macOS / Windows / Linux,纯 Node.js 实现,无需 bash/find/rsync
|
|
63
|
+
|
|
64
|
+
### 安装
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 全局安装
|
|
68
|
+
npm install -g rnoh-build-har
|
|
69
|
+
|
|
70
|
+
# 或 npx 直接运行(无需安装)
|
|
71
|
+
npx rnoh-build-har <args>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 前置要求
|
|
75
|
+
|
|
76
|
+
| 要求 | 必需 | 说明 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| Node.js ≥ 18 | ✅ | 运行时 |
|
|
79
|
+
| devecocli | ✅ | DevEco Studio 自带,或 `npm install -g @deveco/deveco-cli@latest` |
|
|
80
|
+
| DevEco SDK | ✅ | 通过 DevEco Studio 安装 |
|
|
81
|
+
|
|
82
|
+
### 用法
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 用法格式
|
|
86
|
+
rnoh-build-har [api-version] [version] [path] [--module-name <name>] [--build-mode <mode>]
|
|
87
|
+
|
|
88
|
+
# 参数说明:
|
|
89
|
+
# api-version HarmonyOS API 版本号(纯整数,如 12, 16)
|
|
90
|
+
# 映射到 compatibleSdkVersion: 12→'5.0.0(12)', 16→'5.0.4(16)'
|
|
91
|
+
# version RNOH ohpm 版本号(含小数点,如 0.82.18)
|
|
92
|
+
# 指定后从 ohpm 拉取 RNOH,而非使用本地 HAR
|
|
93
|
+
# path RN 库根目录(harmony/ 应在其内部)
|
|
94
|
+
# 省略时自动检测当前目录及子目录
|
|
95
|
+
# --module-name HAR 模块名,省略时自动检测
|
|
96
|
+
# --build-mode 构建模式:release(默认)或 debug
|
|
97
|
+
# --help 显示帮助
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
参数按格式自动识别:
|
|
101
|
+
- 纯整数(如 `12`、`16`)→ API 版本
|
|
102
|
+
- 含小数点(如 `0.82.18`)→ RNOH ohpm 版本
|
|
103
|
+
- 其他非 flag 参数 → 库路径
|
|
104
|
+
|
|
105
|
+
### API 版本对应表
|
|
106
|
+
|
|
107
|
+
| API 版本 | compatibleSdkVersion | API 版本 | compatibleSdkVersion |
|
|
108
|
+
|---------|---------------------|---------|---------------------|
|
|
109
|
+
| 12 | 5.0.0(12) | 18 | 5.1.0(18) |
|
|
110
|
+
| 13 | 5.0.1(13) | 19 | 5.1.1(19) |
|
|
111
|
+
| 14 | 5.0.2(14) | 20 | 6.0.0(20) |
|
|
112
|
+
| 15 | 5.0.3(15) | 21 | 6.0.1(21) |
|
|
113
|
+
| 16 | 5.0.4(16) | 22 | 6.0.2(22) |
|
|
114
|
+
| 17 | 5.0.5(17) | 23 | 6.1.0(23) |
|
|
115
|
+
| | | 24 | 6.1.1(24) |
|
|
116
|
+
|
|
117
|
+
> 数据来源:[HarmonyOS 版本说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/overview-allversion)
|
|
118
|
+
> 如果 `harmony/build-profile.json5` 已存在,将保留原有配置,不覆盖 `compatibleSdkVersion`。
|
|
119
|
+
|
|
120
|
+
### RNOH 版本与 API 版本选择
|
|
121
|
+
|
|
122
|
+
| RNOH 版本 | 推荐 API 版本 | 说明 |
|
|
123
|
+
|-----------|-------------|------|
|
|
124
|
+
| 0.72 | 12+ | API 12 |
|
|
125
|
+
| 0.77 | 12+ | API 12 |
|
|
126
|
+
| 0.82 | 12+ | API 12 |
|
|
127
|
+
| 0.84 | 12+ | API 12 |
|
|
128
|
+
|
|
129
|
+
### 常用示例
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 自动检测当前目录或子目录中的 harmony/
|
|
133
|
+
rnoh-build-har
|
|
134
|
+
|
|
135
|
+
# 指定库路径
|
|
136
|
+
rnoh-build-har rntpc_react-native-netinfo
|
|
137
|
+
|
|
138
|
+
# 指定 API 版本 + 库路径(使用本地 HAR)
|
|
139
|
+
rnoh-build-har 12 rntpc_react-native-netinfo
|
|
140
|
+
|
|
141
|
+
# 使用 ohpm 版本号替代本地 HAR(无需先 npm install)
|
|
142
|
+
rnoh-build-har 0.82.18 rntpc_react-native-permissions
|
|
143
|
+
|
|
144
|
+
# 指定 API 版本 + ohpm 版本 + 路径
|
|
145
|
+
rnoh-build-har 12 0.84.2 rntpc_react-native-permissions
|
|
146
|
+
|
|
147
|
+
# 指定模块名 + debug 模式
|
|
148
|
+
rnoh-build-har --module-name mylib --build-mode debug
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 工作流程(工具内部)
|
|
152
|
+
|
|
153
|
+
1. 定位 `harmony/` 目录和 HAR 模块
|
|
154
|
+
2. 检测是否依赖 `@rnoh/react-native-openharmony`
|
|
155
|
+
3. 搜索 `react_native_openharmony.har`(本地或 ohpm 版本)
|
|
156
|
+
4. 写入临时工程级配置文件(`build-profile.json5` 等)
|
|
157
|
+
5. 执行 `devecocli build --modules <name> --build-mode <mode>`
|
|
158
|
+
6. 校验产物格式(gzip tar,无 AppleDouble 文件)
|
|
159
|
+
7. 补全 cpp 源码(如果 devecocli 未打包 CMakeLists.txt)
|
|
160
|
+
8. 拷贝产物到 `harmony/<module>.har`
|
|
161
|
+
9. 清理所有临时文件和构建缓存
|
|
162
|
+
|
|
163
|
+
### 产物
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
harmony/<module-name>.har # gzip tar 格式,含 cpp 源码
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 编程式 API
|
|
170
|
+
|
|
171
|
+
```javascript
|
|
172
|
+
import { buildHar } from 'rnoh-build-har';
|
|
173
|
+
|
|
174
|
+
await buildHar({
|
|
175
|
+
libPath: '/path/to/react-native-xxx',
|
|
176
|
+
buildMode: 'release',
|
|
177
|
+
// rnohVersion: '0.82.18', // 可选:使用 ohpm 版本
|
|
178
|
+
// apiVersion: 12, // 可选:HarmonyOS API 版本(12-24)
|
|
179
|
+
// moduleName: 'mylib', // 可选:自动检测
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### 常见问题
|
|
184
|
+
|
|
185
|
+
#### HAR 构建失败:SDK 版本不匹配
|
|
186
|
+
|
|
187
|
+
如果 `harmony/build-profile.json5` 中 `compileSdkVersion` 指定的 SDK 本地未安装:
|
|
188
|
+
|
|
189
|
+
- `rnoh-build-har` 会自动处理临时工程配置,但库自身的 `build-profile.json5` 可能保留旧 `compileSdkVersion`
|
|
190
|
+
- 解决:移除库 `build-profile.json5` 中的 `compileSdkVersion` 字段,让 hvigor 自动选择
|
|
191
|
+
- 或通过 `api-version` 参数指定正确的 API 版本
|
|
192
|
+
|
|
193
|
+
#### HAR 构建失败:ohpm 依赖未安装
|
|
194
|
+
|
|
195
|
+
`rnoh-build-har` 需要本地有 `react_native_openharmony.har`:
|
|
196
|
+
- 如果 RNOH 框架通过 npm 安装(`@react-native-oh/react-native-harmony`),HAR 文件在 `node_modules/@react-native-oh/react-native-harmony/react_native_openharmony.har`
|
|
197
|
+
- 如果使用 `rnohVersion` 参数,工具会从 ohpm 自动拉取
|
|
198
|
+
|
|
199
|
+
#### 产物路径
|
|
200
|
+
|
|
201
|
+
HAR 文件产出在库根目录的 `harmony/<module-name>.har`,例如:
|
|
202
|
+
```
|
|
203
|
+
rntpc_react-native-netinfo/
|
|
204
|
+
├── harmony/
|
|
205
|
+
│ └── netinfo.har ← 构建产物
|
|
206
|
+
├── src/
|
|
207
|
+
└── package.json
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Step C: 打 TGZ 包
|
|
213
|
+
|
|
214
|
+
HAR 包构建成功后,打 npm TGZ 包。TGZ 包是最终交付物,包含 JS 代码 + HAR 包 + package.json 配置。
|
|
215
|
+
|
|
216
|
+
### 前提条件
|
|
217
|
+
|
|
218
|
+
1. **HAR 包已就绪**:`harmony/<module>.har` 文件存在(Step B 产出)
|
|
219
|
+
2. **package.json 中 files 字段包含 HAR**:确保 `npm pack` 能将 HAR 打入 tgz
|
|
220
|
+
|
|
221
|
+
### 检查 package.json files 配置
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# 查看当前 package.json 的 files 字段
|
|
225
|
+
cat package.json | grep -A 10 '"files"'
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
确保 `files` 字段包含 `harmony/` 或具体的 `.har` 文件路径:
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"files": [
|
|
233
|
+
"src",
|
|
234
|
+
"harmony",
|
|
235
|
+
"README.md"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
> 如果 `files` 字段缺失或不含 `harmony/`,`npm pack` 不会包含 HAR 文件,导致 tgz 包不完整。
|
|
241
|
+
|
|
242
|
+
### 打包命令
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# 在库根目录执行
|
|
246
|
+
cd /path/to/react-native-xxx
|
|
247
|
+
|
|
248
|
+
# 打包(生成 <name>-<version>.tgz)
|
|
249
|
+
# prepack 脚本会执行 bob build(tsc + babel 编译),必须通过
|
|
250
|
+
npm pack
|
|
251
|
+
|
|
252
|
+
# 如果 prepack 失败(TypeScript 编译错误),必须修复错误后重试,禁止 --ignore-scripts
|
|
253
|
+
# 常见 TS 错误修复见下方"prepack TypeScript 编译错误修复"
|
|
254
|
+
|
|
255
|
+
# 输出示例:
|
|
256
|
+
# npm notice
|
|
257
|
+
# npm notice 📦 @react-native-ohos/react-native-xxx@7.2.7-rc.6
|
|
258
|
+
# npm notice === Tarball Contents ===
|
|
259
|
+
# npm notice 12.0kB src/index.js
|
|
260
|
+
# npm notice 5.2MB harmony/xxx.har
|
|
261
|
+
# npm notice 1.0kB package.json
|
|
262
|
+
# npm notice 5.0kB README.md
|
|
263
|
+
# npm notice === Tarball Details ===
|
|
264
|
+
# npm notice name: @react-native-ohos/react-native-xxx
|
|
265
|
+
# npm notice version: 7.2.7-rc.6
|
|
266
|
+
# npm notice filename: react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz
|
|
267
|
+
# npm notice package size: 5.2 MB
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 验证 tgz 内容
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# 查看 tgz 包含的文件列表
|
|
274
|
+
npm pack --dry-run
|
|
275
|
+
|
|
276
|
+
# 或手动解压检查
|
|
277
|
+
tar -tzf react-native-ohos-react-native-xxx-*.tgz | grep '\.har$'
|
|
278
|
+
# 应看到 harmony/xxx.har
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 产物
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
react-native-ohos-react-native-xxx-<version>.tgz
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
文件名格式:`<scope>-<name>-<version>.tgz`(scope 中的 `@` 和 `/` 转为 `-`)
|
|
288
|
+
|
|
289
|
+
### prepack TypeScript 编译错误修复
|
|
290
|
+
|
|
291
|
+
> ⚠️ **禁止使用 `npm pack --ignore-scripts` 跳过 prepack**。prepack 执行 `bob build`(tsc + babel 编译),是 TGZ 包完整性的保证。必须修复所有 TypeScript 编译错误后让 `npm pack` 正常通过。
|
|
292
|
+
|
|
293
|
+
`prepack` 脚本执行 `yarn build` → `bob build`,其中 `typescript` target 使用 `tsc` 生成类型定义文件。升级到新版本 TypeScript(如 5.9.x)后,可能遇到以下编译错误:
|
|
294
|
+
|
|
295
|
+
| 错误码 | 错误信息 | 原因 | 修复方法 |
|
|
296
|
+
|--------|---------|------|---------|
|
|
297
|
+
| `TS4111` | Property 'X' comes from an index signature, so it must be accessed with ['X'] | TypeScript 5.x 对索引签名属性访问更严格 | 将 `obj.prop` 改为 `obj['prop']` |
|
|
298
|
+
| `TS2307` | Cannot find module 'X' or its corresponding type declarations | 鸿蒙化库的 jest mock 自引用上游包名 | 改为相对路径 import(如 `"../AsyncStorage"`) |
|
|
299
|
+
| `TS2554` | Expected N arguments, but got M | 方法签名变更后调用处未同步更新 | 更新调用参数 |
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
// TS4111 修复示例
|
|
303
|
+
// 错误: return !!err.message && err?.code === "AsyncStorageError";
|
|
304
|
+
// 修复: return !!err['message'] && err?.['code'] === "AsyncStorageError";
|
|
305
|
+
|
|
306
|
+
// TS2307 修复示例(jest mock 自引用)
|
|
307
|
+
// 错误: import type { AsyncStorage } from "@react-native-async-storage/async-storage";
|
|
308
|
+
// 修复: import type { AsyncStorage } from "../AsyncStorage";
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## Step D: RN 工程依赖本地 TGZ 包
|
|
314
|
+
|
|
315
|
+
将 example 工程的依赖方式改为本地 tgz 包引用。
|
|
316
|
+
|
|
317
|
+
### 获取 example 模板工程
|
|
318
|
+
|
|
319
|
+
如果库根目录下没有 `example/` 目录(部分三方库仓库不包含 example 工程),需要先创建。从 RN3rdTemplate 模板仓库浅拷贝获取 0.84 版本的 example 模板:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
# 在库根目录执行
|
|
323
|
+
# 浅拷贝模板仓库(仅最新一次提交,下载快)
|
|
324
|
+
git clone --depth 1 https://gitcode.com/lalhanOrz/RN3rdTemplate.git tmp-template
|
|
325
|
+
|
|
326
|
+
# 拷贝 0.84 目录作为 example
|
|
327
|
+
# 模板仓库结构: RN3rdTemplate/0.84/ (含 package.json, harmony/, 等)
|
|
328
|
+
cp -r tmp-template/0.84 example
|
|
329
|
+
|
|
330
|
+
# 清理临时目录
|
|
331
|
+
rm -rf tmp-template
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
模板仓库说明:
|
|
335
|
+
|
|
336
|
+
- **仓库地址**:https://gitcode.com/lalhanOrz/RN3rdTemplate/tree/main/0.84
|
|
337
|
+
- **内容**:RNOH 0.84 版本的标准 example 工程模板,包含 `package.json`、`harmony/` 目录、基础配置文件等
|
|
338
|
+
- **`--depth 1`**:仅克隆最新一次提交,避免下载完整历史,加快速度
|
|
339
|
+
- **拷贝后**:`example/` 目录可直接用于 4d 步骤的 tgz 依赖配置和 4e 的编译验证
|
|
340
|
+
|
|
341
|
+
> ⚠️ 模板工程是通用的 0.84 example 骨架,拷贝后需要根据实际库修改 `package.json` 中的依赖名称和版本,以及 `harmony/` 下的注册文件(`RNPackagesFactory.ets`、`PackageProvider.cpp` 等)。可使用 `./scripts/auto-integrate.sh` 自动完成注册。
|
|
342
|
+
|
|
343
|
+
### 修改 example/package.json
|
|
344
|
+
|
|
345
|
+
```json
|
|
346
|
+
{
|
|
347
|
+
"dependencies": {
|
|
348
|
+
"@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
> **关键**:使用 `file:` 引用 tgz 文件路径(相对路径),不是 `file:` 引用源码目录。
|
|
354
|
+
|
|
355
|
+
### 从源码依赖迁移到 tgz 依赖
|
|
356
|
+
|
|
357
|
+
如果原来使用源码目录引用:
|
|
358
|
+
|
|
359
|
+
```json
|
|
360
|
+
// 旧方式(源码目录引用)
|
|
361
|
+
"@react-native-ohos/react-native-xxx": "file:../rntpc_react-native-xxx"
|
|
362
|
+
|
|
363
|
+
// 新方式(tgz 包引用)
|
|
364
|
+
"@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 安装依赖
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
cd example
|
|
371
|
+
|
|
372
|
+
# 删除旧依赖(如果从源码引用迁移)
|
|
373
|
+
rm -rf node_modules/@react-native-ohos/react-native-xxx
|
|
374
|
+
|
|
375
|
+
# 安装 tgz 包
|
|
376
|
+
npm install --legacy-peer-deps
|
|
377
|
+
|
|
378
|
+
# 验证安装
|
|
379
|
+
ls node_modules/@react-native-ohos/react-native-xxx/harmony/
|
|
380
|
+
# 应看到 xxx.har 文件
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### 验证 tgz 依赖正确安装
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
# 检查 node_modules 中的库是否包含 HAR
|
|
387
|
+
ls node_modules/@react-native-ohos/react-native-xxx/harmony/*.har
|
|
388
|
+
|
|
389
|
+
# 检查 package.json 解析后的依赖路径
|
|
390
|
+
cat node_modules/@react-native-ohos/react-native-xxx/package.json | grep version
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## Step E: 最终编译验证
|
|
396
|
+
|
|
397
|
+
以 tgz 包依赖方式构建 example 工程,验证完整的产物结构正确性。
|
|
398
|
+
|
|
399
|
+
### 编译验证流程
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# 1. 安装 JS 依赖(含 tgz 包)
|
|
403
|
+
cd example && npm install --legacy-peer-deps
|
|
404
|
+
|
|
405
|
+
# 2. 重新生成 codegen 代码
|
|
406
|
+
npm run codegen
|
|
407
|
+
|
|
408
|
+
# 3. 构建 JS Bundle
|
|
409
|
+
npm run dev
|
|
410
|
+
|
|
411
|
+
# 4. 安装鸿蒙原生依赖(关键步骤!不可跳过)
|
|
412
|
+
cd harmony && ohpm install
|
|
413
|
+
|
|
414
|
+
# 5. 构建鸿蒙原生工程
|
|
415
|
+
devecocli build --product default --build-mode debug
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### ⚠️ ohpm install 不可跳过
|
|
419
|
+
|
|
420
|
+
`ohpm install` 将 `oh-package.json5` 中声明的 har 包安装到 `oh_modules/`。RNOH 框架的 har 包中包含 C++ 源码,CMake 编译时需要从 `oh_modules/@rnoh/react-native-openharmony/src/main/cpp/` 读取。跳过会导致 `CMake Error: not an existing directory`。
|
|
421
|
+
|
|
422
|
+
### oh-package.json5 中的 HAR 引用
|
|
423
|
+
|
|
424
|
+
确保 `example/harmony/oh-package.json5` 正确引用 tgz 包中的 HAR 文件:
|
|
425
|
+
|
|
426
|
+
```json5
|
|
427
|
+
// example/harmony/oh-package.json5 (根)
|
|
428
|
+
{
|
|
429
|
+
"overrides": {
|
|
430
|
+
"@rnoh/react-native-openharmony": "file:./../node_modules/@react-native-ohos/react-native-harmony/react_native_openharmony.har"
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// example/harmony/entry/oh-package.json5
|
|
435
|
+
{
|
|
436
|
+
"dependencies": {
|
|
437
|
+
"@rnoh/react-native-openharmony": "file:../../node_modules/@react-native-oh/react-native-harmony/react_native_openharmony.har"
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
> tgz 包安装后,HAR 文件路径为 `node_modules/@react-native-ohos/react-native-xxx/harmony/xxx.har`。如果库自身有 oh-package.json5 引用,路径也需要对应更新。
|
|
443
|
+
|
|
444
|
+
### devecocli 不可用时回退
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# macOS DevEco Studio 内置工具路径
|
|
448
|
+
HVIGORW="/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw"
|
|
449
|
+
OHPM="/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm"
|
|
450
|
+
|
|
451
|
+
cd example/harmony
|
|
452
|
+
"$OHPM" install
|
|
453
|
+
"$HVIGORW" assembleHap --no-daemon --mode module -p product=default
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### 验证通过标准
|
|
457
|
+
|
|
458
|
+
| 验证项 | 通过标准 |
|
|
459
|
+
|--------|---------|
|
|
460
|
+
| `npm pack --dry-run` | tgz 包含 `.har` 文件 |
|
|
461
|
+
| `npm install` | tgz 包正确安装到 node_modules |
|
|
462
|
+
| `ohpm install` | oh_modules 中有 RNOH har 包 |
|
|
463
|
+
| `devecocli build` | `BUILD SUCCESSFUL`,仅框架内部 WARNING |
|
|
464
|
+
| 产物 hap | `entry/build/default/outputs/default/entry-default-signed.hap` 存在 |
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## 渐进式验证策略
|
|
469
|
+
|
|
470
|
+
如果一次性验证失败难以定位,可分步验证:
|
|
471
|
+
|
|
472
|
+
1. **npm install 通过** — 确认 tgz 包能正确安装
|
|
473
|
+
2. **npm run codegen 通过** — 确认 spec 文件正确
|
|
474
|
+
3. **npm run dev 通过** — 确认 JS Bundle 构建成功
|
|
475
|
+
4. **ohpm install 通过** — 确认 har 包正确安装到 oh_modules
|
|
476
|
+
5. **devecocli build 通过** — 确认原生编译成功
|
|
477
|
+
|
|
478
|
+
每步通过后再进入下一步,便于定位问题。
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## 完整示例:从适配完成到验证通过
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
# ── 前提:代码适配已完成 ──
|
|
486
|
+
|
|
487
|
+
# Step A: 语法检查
|
|
488
|
+
devecocli check lint harmony/src/main/ets/
|
|
489
|
+
devecocli check lint harmony/src/main/cpp/
|
|
490
|
+
|
|
491
|
+
# Step B: 打 HAR 包
|
|
492
|
+
cd /path/to/rntpc_react-native-xxx
|
|
493
|
+
rnoh-build-har 12 0.84.2 . # API 12 + RNOH 0.84.2 + 当前目录
|
|
494
|
+
# 产出: harmony/xxx.har
|
|
495
|
+
|
|
496
|
+
# Step C: 打 TGZ 包
|
|
497
|
+
npm pack
|
|
498
|
+
# 产出: react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz
|
|
499
|
+
|
|
500
|
+
# Step D: RN 工程依赖 tgz 包
|
|
501
|
+
cd example
|
|
502
|
+
# 编辑 package.json: "@react-native-ohos/react-native-xxx": "file:../react-native-ohos-react-native-xxx-7.2.7-rc.6.tgz"
|
|
503
|
+
rm -rf node_modules/@react-native-ohos/react-native-xxx
|
|
504
|
+
npm install --legacy-peer-deps
|
|
505
|
+
|
|
506
|
+
# Step E: 最终编译验证
|
|
507
|
+
npm run codegen
|
|
508
|
+
npm run dev
|
|
509
|
+
cd harmony && ohpm install
|
|
510
|
+
devecocli build --product default --build-mode debug
|
|
511
|
+
# ✅ BUILD SUCCESSFUL
|
|
512
|
+
```
|