94 lines
5.2 KiB
Prolog
94 lines
5.2 KiB
Prolog
# ODY Release Proguard Rules
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ── Kotlin ────────────────────────────────────────────────────────────────────
|
|
-keep class kotlin.** { *; }
|
|
-keep class kotlin.Metadata { *; }
|
|
-dontwarn kotlin.**
|
|
-keepclassmembers class **$WhenMappings { <fields>; }
|
|
-keepclassmembers class kotlin.Lazy { *; }
|
|
|
|
# ── Kotlin Coroutines ─────────────────────────────────────────────────────────
|
|
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
|
|
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
|
|
-keepclassmembernames class kotlinx.** {
|
|
volatile <fields>;
|
|
}
|
|
-dontwarn kotlinx.coroutines.**
|
|
|
|
# ── Jetpack Compose ───────────────────────────────────────────────────────────
|
|
-keep class androidx.compose.** { *; }
|
|
-keepclassmembers class androidx.compose.** { *; }
|
|
-dontwarn androidx.compose.**
|
|
|
|
# ── ODY Guards (müssen vollständig erhalten bleiben) ─────────────────────────
|
|
-keep class de.ody.guards.** { *; }
|
|
-keepclassmembers class de.ody.guards.** { *; }
|
|
|
|
# ── ODY Runtime Interface + Adapter ──────────────────────────────────────────
|
|
-keep interface de.ody.runtime.LocalModelRuntime { *; }
|
|
-keep class de.ody.runtime.** { *; }
|
|
-keepclassmembers class de.ody.runtime.** { *; }
|
|
|
|
# ── ODY Application + MainActivity ───────────────────────────────────────────
|
|
-keep class de.ody.ODYApplication { *; }
|
|
-keep class de.ody.app.ODYApplication { *; }
|
|
-keep class de.ody.app.MainActivity { *; }
|
|
|
|
# ── LlamaContext (librnllama.so JNI) — Fix direct-mmap3 ─────────────────────
|
|
# LlamaContext darf NICHT durch R8/ProGuard umbenannt oder entfernt werden,
|
|
# da librnllama.so die Klasse per JNI-Name findet.
|
|
-keep class org.nehuatl.llamacpp.** { *; }
|
|
-keepclassmembers class org.nehuatl.llamacpp.** { *; }
|
|
-keepclassmembers class org.nehuatl.llamacpp.LlamaContext {
|
|
public <init>(int, java.util.Map);
|
|
public long getContext();
|
|
public void setTokenCallback(kotlin.jvm.functions.Function1);
|
|
public java.util.Map completion(java.util.Map);
|
|
public void stopCompletion();
|
|
public boolean isPredicting();
|
|
public void release();
|
|
native <methods>;
|
|
}
|
|
-dontwarn org.nehuatl.llamacpp.**
|
|
|
|
# ── LiteRT-LM (Google AI Edge) ────────────────────────────────────────────────
|
|
-keep class com.google.ai.edge.** { *; }
|
|
-dontwarn com.google.ai.edge.**
|
|
|
|
# ── Enum-Klassen vollständig erhalten ─────────────────────────────────────────
|
|
-keepclassmembers enum * {
|
|
public static **[] values();
|
|
public static ** valueOf(java.lang.String);
|
|
}
|
|
|
|
# ── Data-Klassen (Serialisierung, Reflection) ─────────────────────────────────
|
|
-keepclassmembers class * implements java.io.Serializable {
|
|
static final long serialVersionUID;
|
|
private static final java.io.ObjectStreamField[] serialPersistentFields;
|
|
private void writeObject(java.io.ObjectOutputStream);
|
|
private void readObject(java.io.ObjectInputStream);
|
|
java.lang.Object writeReplace();
|
|
java.lang.Object readResolve();
|
|
}
|
|
|
|
# ── Entferne Logging in Release ───────────────────────────────────────────────
|
|
-assumenosideeffects class android.util.Log {
|
|
public static boolean isLoggable(java.lang.String, int);
|
|
public static int v(...);
|
|
public static int d(...);
|
|
}
|
|
|
|
# ── Entferne Debug-Assertions ─────────────────────────────────────────────────
|
|
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
|
|
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkNotNullParameter(java.lang.Object, java.lang.String);
|
|
static void checkExpressionValueIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkNotNullExpressionValue(java.lang.Object, java.lang.String);
|
|
static void checkReturnedValueIsNotNull(java.lang.Object, java.lang.String, java.lang.String);
|
|
static void checkReturnedValueIsNotNull(java.lang.Object, java.lang.String);
|
|
static void throwUninitializedPropertyAccessException(java.lang.String);
|
|
static void throwNpe(java.lang.String);
|
|
static void throwJavaNpe();
|
|
static void throwIfNull(java.lang.Object, java.lang.String);
|
|
}
|