openclaw/apps/android/app/proguard-rules.pro
ronitchidara fdc7e11891 mobile: Phase 4 polish - refactoring, app store prep, and infrastructure
Tier 5 - Code Refactoring:
- iOS: Split NodeAppModel.swift (988→493 LOC) into focused modules
  - NodeCommandHandlers.swift: command routing (372 LOC)
  - NodeGatewaySync.swift: gateway sync, branding (153 LOC)
- Android: Split NodeRuntime.kt (1268→756 LOC, 40% reduction)
  - NodeCommandHandlers.kt: command routing (326 LOC)
  - NodeGatewaySync.kt: gateway sync, A2UI helpers (294 LOC)

Tier 6 - App Store Preparation:
- iOS: Add PrivacyInfo.xcprivacy (iOS 17+ privacy manifest)
- Android: Add ProGuard rules and enable minification for release builds

Infrastructure (from earlier tiers):
- iOS: Add OfflineMessageQueue for disconnected message queueing
- iOS: Add PushManager for VoIP push foundation
- iOS: Add TTSVoiceSettingsView for voice selection
- Android: Add ClawdbotMessagingService for FCM push
- Android: Add SyncWorker for background chat sync
- Both: Deep linking support (clawdbot:// URL scheme)
- Both: Empty states and loading indicators in settings

Testing:
- iOS: Add OfflineMessageQueueTests (8 tests)
- Android: Add NodeGatewaySyncTest (11 tests)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:01:20 +05:30

59 lines
1.6 KiB
Prolog

# Clawdbot Android ProGuard Rules
# https://www.guardsquare.com/manual/configuration/usage
# OkHttp
-dontwarn okhttp3.**
-dontwarn okio.**
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
# Kotlinx Serialization
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** { *; }
-keepclasseswithmembers class * {
@kotlinx.serialization.Serializable *;
}
# Keep Serializable classes
-keep class com.clawdbot.android.** implements kotlinx.serialization.KSerializer { *; }
-keep @kotlinx.serialization.Serializable class * { *; }
# Keep WebView JavaScript interface
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Keep all enums
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Firebase Messaging
-keep class com.google.firebase.messaging.** { *; }
# dnsjava (for DNS-SD discovery)
-dontwarn org.xbill.DNS.**
-keep class org.xbill.DNS.** { *; }
# CameraX
-keep class androidx.camera.** { *; }
# Keep R8 from stripping the companion objects used by serialization
-keepclassmembers class * {
*** Companion;
}
-keepclasseswithmembers class * {
kotlinx.serialization.KSerializer serializer(...);
}
# Prevent stripping of coroutine internals
-dontwarn kotlinx.coroutines.**
-keep class kotlinx.coroutines.** { *; }
# Keep data classes
-keep class com.clawdbot.android.chat.** { *; }
-keep class com.clawdbot.android.gateway.** { *; }
-keep class com.clawdbot.android.protocol.** { *; }