Skill: Gradle Build Commands
SkillDev toolsUse Gradle commands to build and run the app by platform.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: Gradle Build Commands skill
What this skill tells your AI
The instructions your AI receives, as published by championswimmer/twofac in .agents/skills/gradle-build/SKILL.md and read by ahel’s review.
Use these commands to build and run the app by platform.
Common checks
- Repository baseline:
./gradlew check - Shared library tests:
./gradlew :sharedLib:test - CLI tests:
./gradlew :cliApp:test - Compose tests:
./gradlew :composeApp:test
Guidance
- Prefer module-scoped tasks for faster feedback.
- Run full checks only when change scope spans multiple modules.
Build and Run by Platform
CLI App (cliApp)
Native CLI executables for desktop platforms:
| Platform | Build Debug | Build Release | Output Location |
|---|---|---|---|
| macOS (Apple Silicon) | ./gradlew :cliApp:linkDebugExecutableMacosArm64 | ./gradlew :cliApp:linkReleaseExecutableMacosArm64 | cliApp/build/bin/macosArm64/ |
| Linux | ./gradlew :cliApp:linkDebugExecutableLinuxX64 | ./gradlew :cliApp:linkReleaseExecutableLinuxX64 | cliApp/build/bin/linuxX64/ |
| Windows | ./gradlew :cliApp:linkDebugExecutableMingwX64 | ./gradlew :cliApp:linkReleaseExecutableMingwX64 | cliApp/build/bin/mingwX64/ |
Run the CLI: ./cliApp/build/bin/<target>/debugExecutable/twofac.kexe
Desktop GUI App (composeApp - Desktop)
| Action | Command |
|---|---|
| Run dev build | ./gradlew :composeApp:run |
| Run release build | ./gradlew :composeApp:runRelease |
| Create distributable | ./gradlew :composeApp:createDistributable |
| Package for current OS | ./gradlew :composeApp:packageDistributionForCurrentOS |
| Package release for current OS | ./gradlew :composeApp:packageReleaseDistributionForCurrentOS |
Platform-specific packages (run on respective OS):
| Platform | Package Commands |
|---|---|
| macOS | :composeApp:packageDmg, :composeApp:packageReleaseDmg |
| Linux | :composeApp:packageDeb, :composeApp:packageReleaseDeb |
| Windows | :composeApp:packageMsi, :composeApp:packageReleaseMsi |
Uber JAR (cross-platform):
| Action | Command |
|---|---|
| Debug uber JAR | ./gradlew :composeApp:packageUberJarForCurrentOS |
| Release uber JAR | ./gradlew :composeApp:packageReleaseUberJarForCurrentOS |
Output: composeApp/build/compose/binaries/main/
Android Mobile App (androidApp)
| Action | Command |
|---|---|
| Build debug APK | ./gradlew :androidApp:assembleDebug |
| Build release APK | ./gradlew :androidApp:assembleRelease |
| Install debug | ./gradlew :androidApp:installDebug |
| Uninstall | ./gradlew :androidApp:uninstallDebug |
| Build bundle (AAB) | ./gradlew :androidApp:bundle |
Output: androidApp/build/outputs/apk/ or androidApp/build/outputs/bundle/
Run/install on a specific emulator and launch the app explicitly:
ANDROID_SERIAL=emulator-5554 ./gradlew :androidApp:installDebug
adb -s emulator-5554 shell am start -n tech.arnav.twofac.app/.MainActivity
adb -s emulator-5554 shell dumpsys activity activities | rg 'Resumed: ActivityRecord|mCurrentFocus|mFocusedApp'
When multiple Android devices are connected, always set ANDROID_SERIAL for Gradle and use adb -s <serial> for launch/verification commands.
Wear OS Watch App (watchApp)
| Action | Command |
|---|---|
| Build debug APK | ./gradlew :watchApp:assembleDebug |
| Build release APK | ./gradlew :watchApp:assembleRelease |
| Install debug | ./gradlew :watchApp:installDebug |
| Uninstall | ./gradlew :watchApp:uninstallDebug |
| Build bundle (AAB) | ./gradlew :watchApp:bundle |
Output: watchApp/build/outputs/apk/ or watchApp/build/outputs/bundle/
iOS App (composeApp + iosApp)
Framework linking (for Xcode integration):
| Action | Command |
|---|---|
| Debug framework (device) | ./gradlew :composeApp:linkDebugFrameworkIosArm64 |
| Debug framework (simulator) | ./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64 |
| Release framework (device) | ./gradlew :composeApp:linkReleaseFrameworkIosArm64 |
| Release framework (simulator) | ./gradlew :composeApp:linkReleaseFrameworkIosSimulatorArm64 |
Output: composeApp/build/bin/<target>/debugFramework/ or releaseFramework/
Running the iOS app: Open iosApp/iosApp.xcworkspace in Xcode and run from there. Xcode triggers embedAndSignAppleFrameworkForXcode automatically.
Xcode integration: The task embedAndSignAppleFrameworkForXcode is called by Xcode's build phase.
watchOS (future)
Not yet implemented. See .agents/plans/02-watchos-companion-app.md for planned architecture.
Web/Wasm (composeApp - Wasm)
| Action | Command |
|---|---|
| Dev server | ./gradlew :composeApp:wasmJsBrowserDevelopmentRun |
| Production build | ./gradlew :composeApp:wasmJsBrowserProductionWebpack |
| Combined distribution | ./gradlew :composeApp:composeCompatibilityBrowserDistribution |
Output: composeApp/build/dist/wasmJs/
Signals
- GitHub stars
- 125
- Forks
- 8
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
gradle-build- Source
- github.com/championswimmer/twofac