Read the original article:Integrating Modules from Other Projects into a Project
Problem Description
There are two sibling projects A and B. The goal is to package and use a module from Project B inside Project A.
Background Knowledge
- The project-level build-profile.json5 lists project modules: each item specifies the module name, its srcPath, and its build targets.
-
Dependencies are declared in oh-package.json5 under dependencies (runtime) or devDependencies (development). You can reference:
- Remote third‑party packages,
- Local folders,
- Local HAR/HSP artifacts.
HSP (Shared Package) is the recommended library type for sharing ArkTS/ETS code and resources across modules/apps.
Troubleshooting Process
- Confirm directory layout
/parent ├─ A/ └─ B/ 2.Check library type in Project B
- Ensure B contains an HSP module (e.g., library) that builds successfully on its own.
3.Verify module registration in A
- In A’s build-profile.json5, confirm B’s module is listed with the correct relative srcPath and a target that applies to A’s product:
{ "modules": [ { "name": "entry", "srcPath": "./entry", "targets": [{ "name": "default", "applyToProducts": ["default"] }] }, { "name": "library", // must match module name in B "srcPath": "../B/library", // relative to A "targets": [{ "name": "default", "applyToProducts": ["default"] }] } ] } 4.Verify dependency wiring in A
- In A/entry oh-package.json5, add the local dependency pointing to B’s module folder:
{ "name": "entry", "version": "1.0.0", "dependencies": { "library": "file:../../B/library" // key should align with library package name } } 5.Re-sync & build
- Sync in DevEco Studio → Clean/Rebuild A.
6.If issues persist, check common pitfalls
- Wrong srcPath or file: path (relative paths from A).
- Module/package name mismatch between modules[].name and dependency key.
- Missing targets.applyToProducts mapping the active product (e.g., "default").
- Incompatible compatibleSdkVersion / runtimeOS between A and B.
- Using HAR when HSP is expected (or vice versa).
Analysis Conclusion
Failures typically stem from path or naming mismatches, unregistered module targets, or incompatible SDK/product settings.
Correctly registering B’s HSP module in A’s build-profile.json5 and wiring a matching local file: dependency in oh-package.json5 resolves the packaging/linking errors.
Solution
- Keep A and B as siblings.
- In B, create/confirm an HSP module (e.g., library).
-
In A:
- Add B/library to build-profile.json5 → "modules" with a correct relative srcPath and targets.
- Add a local dependency in A/entry oh-package.json5:
"dependencies": { "library": "file:../../B/library" } - Re-sync and build A.
Verification Result
- Build of A succeeds in debug and release.
- Code from B/library is importable/usable in A/entry.
- Final HAP produced by A contains the library content (expected classes/resources available at runtime)
Related Documents or Links
https://developer.huawei.com/consumer/en/doc/harmonyos-guides/ide-hvigor-configuration
Top comments (0)