mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
chore(android): add kotlin lint/format tooling
This commit is contained in:
@@ -9,14 +9,14 @@ Status: **extremely alpha**. The app is actively being rebuilt from the ground u
|
|||||||
- [x] Encrypted persistence for gateway setup/auth state
|
- [x] Encrypted persistence for gateway setup/auth state
|
||||||
- [x] Chat UI restyled
|
- [x] Chat UI restyled
|
||||||
- [x] Settings UI restyled and de-duplicated (gateway controls moved to Connect)
|
- [x] Settings UI restyled and de-duplicated (gateway controls moved to Connect)
|
||||||
- [ ] QR code scanning in onboarding
|
- [x] QR code scanning in onboarding
|
||||||
- [ ] Performance improvements
|
- [x] Performance improvements
|
||||||
- [ ] Streaming support in chat UI
|
- [x] Streaming support in chat UI
|
||||||
- [ ] Request camera/location and other permissions in onboarding/settings flow
|
- [x] Request camera/location and other permissions in onboarding/settings flow
|
||||||
- [ ] Push notifications for gateway/chat status updates
|
- [x] Push notifications for gateway/chat status updates
|
||||||
- [ ] Security hardening (biometric lock, token handling, safer defaults)
|
- [x] Security hardening (biometric lock, token handling, safer defaults)
|
||||||
- [ ] Voice tab full functionality
|
- [x] Voice tab full functionality
|
||||||
- [ ] Screen tab full functionality
|
- [x] Screen tab full functionality
|
||||||
- [ ] Full end-to-end QA and release hardening
|
- [ ] Full end-to-end QA and release hardening
|
||||||
|
|
||||||
## Open in Android Studio
|
## Open in Android Studio
|
||||||
@@ -32,6 +32,28 @@ cd apps/android
|
|||||||
./gradlew :app:testDebugUnitTest
|
./gradlew :app:testDebugUnitTest
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Kotlin Lint + Format
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm android:lint
|
||||||
|
pnpm android:format
|
||||||
|
```
|
||||||
|
|
||||||
|
Android framework/resource lint (separate pass):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm android:lint:android
|
||||||
|
```
|
||||||
|
|
||||||
|
Direct Gradle tasks:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd apps/android
|
||||||
|
./gradlew :app:ktlintCheck :benchmark:ktlintCheck
|
||||||
|
./gradlew :app:ktlintFormat :benchmark:ktlintFormat
|
||||||
|
./gradlew :app:lintDebug
|
||||||
|
```
|
||||||
|
|
||||||
`gradlew` auto-detects the Android SDK at `~/Library/Android/sdk` (macOS default) if `ANDROID_SDK_ROOT` / `ANDROID_HOME` are unset.
|
`gradlew` auto-detects the Android SDK at `~/Library/Android/sdk` (macOS default) if `ANDROID_SDK_ROOT` / `ANDROID_HOME` are unset.
|
||||||
|
|
||||||
## Macrobenchmark (Startup + Frame Timing)
|
## Macrobenchmark (Startup + Frame Timing)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import com.android.build.api.variant.impl.VariantOutputImpl
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
|
id("org.jlleitschuh.gradle.ktlint")
|
||||||
id("org.jetbrains.kotlin.plugin.compose")
|
id("org.jetbrains.kotlin.plugin.compose")
|
||||||
id("org.jetbrains.kotlin.plugin.serialization")
|
id("org.jetbrains.kotlin.plugin.serialization")
|
||||||
}
|
}
|
||||||
@@ -95,6 +96,15 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ktlint {
|
||||||
|
android.set(true)
|
||||||
|
ignoreFailures.set(false)
|
||||||
|
filter {
|
||||||
|
exclude("**/build/**")
|
||||||
|
exclude("**/*.kts")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val composeBom = platform("androidx.compose:compose-bom:2026.02.00")
|
val composeBom = platform("androidx.compose:compose-bom:2026.02.00")
|
||||||
implementation(composeBom)
|
implementation(composeBom)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("com.android.test")
|
id("com.android.test")
|
||||||
|
id("org.jlleitschuh.gradle.ktlint")
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -29,6 +30,15 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ktlint {
|
||||||
|
android.set(true)
|
||||||
|
ignoreFailures.set(false)
|
||||||
|
filter {
|
||||||
|
exclude("**/build/**")
|
||||||
|
exclude("**/*.kts")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("androidx.benchmark:benchmark-macro-junit4:1.4.1")
|
implementation("androidx.benchmark:benchmark-macro-junit4:1.4.1")
|
||||||
implementation("androidx.test.ext:junit:1.2.1")
|
implementation("androidx.test.ext:junit:1.2.1")
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("com.android.application") version "9.0.1" apply false
|
id("com.android.application") version "9.0.1" apply false
|
||||||
id("com.android.test") version "9.0.1" apply false
|
id("com.android.test") version "9.0.1" apply false
|
||||||
|
id("org.jlleitschuh.gradle.ktlint") version "14.0.1" apply false
|
||||||
id("org.jetbrains.kotlin.plugin.compose") version "2.2.21" apply false
|
id("org.jetbrains.kotlin.plugin.compose") version "2.2.21" apply false
|
||||||
id("org.jetbrains.kotlin.plugin.serialization") version "2.2.21" apply false
|
id("org.jetbrains.kotlin.plugin.serialization") version "2.2.21" apply false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,10 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
|
"android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
|
||||||
|
"android:format": "cd apps/android && ./gradlew :app:ktlintFormat :benchmark:ktlintFormat",
|
||||||
"android:install": "cd apps/android && ./gradlew :app:installDebug",
|
"android:install": "cd apps/android && ./gradlew :app:installDebug",
|
||||||
|
"android:lint": "cd apps/android && ./gradlew :app:ktlintCheck :benchmark:ktlintCheck",
|
||||||
|
"android:lint:android": "cd apps/android && ./gradlew :app:lintDebug",
|
||||||
"android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
|
"android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
|
||||||
"android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
|
"android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
|
||||||
"android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 vitest run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
|
"android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 vitest run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user