Loading...
Loading...
Kuikly Multi-module Project Configuration Assistant. Guides on how to create Kuikly submodules and configure multi-modules. Used when users need to create new Kuikly submodules, configure multi-module parameters, or resolve KuiklyCoreEntry entry class conflicts.
npx skill4agent add tencent-tds/kuiklyui-ai kuikly-multi-module-config@PageKuiklyCoreEntry🚨 Mandatory Rule: Before performing any configuration operations, you must first ask the user for the submodule name. Even if the user only says "Help me create a submodule", you must stop and ask what name the submodule should have and proceed only after obtaining the name. Never assume or fabricate the submodule name on your own.
kuikly_businesssettings.gradle.ktsdemosharedTask Progress:
- [x] Step 1: Confirm submodule name → ${User-provided name}
- [x] Step 2: Confirm main module name → ${Confirmed main module name}
- [ ] Step 3: Create submodule directory and build.gradle.kts
- [ ] Step 4: Modify settings.gradle.kts
- [ ] Step 5: Modify main module build.gradle.kts (dependencies + KSP multi-module parameters)
- [ ] Step 6: Create submodule src directory structure
- [ ] Step 7: Generate sample page (@Page)
- [ ] Step 8: Check for multiple Gradle configurations (configure each set if present)settings.gradle.ktsinclude(":${submodule name}")
// If the main module has buildFileName configuration, the submodule also needs it:
project(":${submodule name}").buildFileName = buildFileName// 1. Add submodule to commonMain dependencies
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation(project(":${submodule name}"))
}
}
}
}
// 2. Configure multi-module parameters in the ksp block
ksp {
arg("moduleId", "${main module name}")
arg("isMainModule", "true")
arg("subModules", "${submodule name}") // Separate multiple submodules with &
arg("enableMultiModule", "true")
}When subModules already exists: Appendto the existing value, e.g.,&${submodule name}"sub1&sub2&${new submodule}"
Directly copy the main module'sto the submodule directory, then only modify the following differences, keep other configurations (plugins, targets, cocoapods, etc.) exactly the same as the main module.build.gradle.kts
// Difference 1: ksp block — Modify multi-module parameters
ksp {
// Keep other parameters unchanged...
arg("moduleId", "${submodule name}") // ← Change to the submodule's own name
arg("isMainModule", "false") // ← Key: Change to false
arg("enableMultiModule", "true")
// ★ Remove the subModules parameter (not needed for submodules)
}
// Difference 2: android.namespace — Change to the submodule's package name
android {
namespace = "com.tencent.kuikly.${submodule name}"
}
// Difference 3: commonMain dependencies — Remove dependencies on other submodules (keep basic dependencies like core, compose, etc.)${submodule name}/
├── build.gradle.kts
├── src/
│ ├── commonMain/
│ │ ├── kotlin/com/tencent/kuikly/${submodule name}/
│ │ │ └── pages/ # Place @Page pages
│ │ └── assets/ # Resource files (optional)
│ ├── androidMain/ # Create the following *Main directories as needed based on the main module architecture
│ │ ├── AndroidManifest.xml
│ │ └── kotlin/
│ ├── iosMain/
│ │ └── kotlin/
│ └── jsMain/
│ └── kotlin/<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.tencent.kuikly.${submodule name}"/>pages@Page${submodule name}/src/commonMain/kotlin/com/tencent/kuikly/${submodule name}/pages/SamplePage.ktbuild.ohos.gradle.ktssettings.ohos.gradle.ktsbuild.*.gradle.ktssettings.*.gradle.ktsbuild.gradle.ktssettings.gradle.ktsbuild.gradle.ktsbuild.ohos.gradle.kts💡 Judgment Method: Check if there isrelated configuration inbuildFileName, or if there are multiplesettings.gradle.ktsfiles in the main module directory.build.*.gradle.kts
| Configuration Item | Main Module | Submodule |
|---|---|---|
| Main module name (e.g., | Submodule name (e.g., |
| | |
| All submodule names, separated by | Not needed |
| | |
| commonMain dependencies | | No dependency on main module |
KuiklyCoreEntrymoduleIdsubModulescocoapodsshared.frameworkbuild.gradle.kts