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>
59 lines
1.6 KiB
Prolog
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.** { *; }
|