
# Keep class members annotated with @MiniKepp
# 保护代码中的注解不被混淆
-keepattributes *Annotation*
-keep,allowobfuscation @interface com.tencent.qqmini.sdk.annotation.MiniKeep
-keep @com.tencent.qqmini.sdk.annotation.MiniKeep class *
-keepclassmembers @com.tencent.qqmini.sdk.annotation.MiniKeep class ** {
    public <methods>; <fields>;
}
-keepclassmembers class * {
    @com.tencent.qqmini.sdk.annotation.MiniKeep *;
}

# Keep class members annotated with @JsEvent
-keep,allowobfuscation @interface com.tencent.qqmini.sdk.annotation.JsEvent
-keepclassmembers class * {
    @com.tencent.qqmini.sdk.annotation.JsEvent *;
}

-keep class com.tencent.qqmini.sdk.ipc.AppBrandCmdProxy {
public <methods>;
}

# Keep minigame triton
-keep interface com.tencent.mobileqq.triton.** { *; }
-keep class com.tencent.mobileqq.triton.** { *; }
-keep @interface com.tencent.mobileqq.triton.jni.TTNativeModule, com.tencent.mobileqq.triton.jni.TTNativeCall
-keep @com.tencent.mobileqq.triton.jni.TTNativeModule class ** {
    @com.tencent.mobileqq.triton.jni.TTNativeCall <methods>;
    @com.tencent.mobileqq.triton.jni.TTNativeCall <fields>;
}
-keep @interface io.github.landerlyoung.jenny.NativeClass, io.github.landerlyoung.jenny.NativeFieldProxy, io.github.landerlyoung.jenny.NativeMethodProxy
-keep @io.github.landerlyoung.jenny.NativeClass class ** {
    @io.github.landerlyoung.jenny.NativeFieldProxy <fields>;
    @io.github.landerlyoung.jenny.NativeMethodProxy <methods>;
}

# Keep minigame sdk
-keep class * extends com.tencent.qqmini.sdk.launcher.ui.MiniActivity
-keep class * extends com.tencent.qqmini.sdk.receiver.AppBrandMainReceiver
-keep class com.tencent.qqmini.sdk.core.generated.** { *; }
-keep class com.tencent.qqmini.sdk.launcher.** { *; }
-keep class com.tencent.qqmini.sdk.MiniSDK { *; }
-keep class com.tencent.qqmini.sdk.MiniSDK$* { *; }
-keep class com.tencent.qqmini.sdk.BuildConfig { *; }
-keep class com.tencent.qqmini.sdk.annotation.** {* ;}
-keep class com.tencent.qqmini.sdk.utils.MiniSDKConst$AdConst{*;}
-keep class com.tencent.qqmini.sdk.receiver.** {* ;}
-keepclassmembers class com.tencent.qqmini.sdk.** {
    @android.webkit.JavascriptInterface <methods>;
}
-keep class com.tencent.qqmini.minigame.render.MiniGameRenderView {
  public <methods>;
}
-keep class com.tencent.qqmini.sdk.core.proxy.service.ChannelProxyDefault { *; }
-keep class com.tencent.qqmini.sdk.utils.MiniGameStartupNotify {
  public <methods>;
}
-keep class com.tencent.qqmini.sdk.core.manager.ActivityResultManager {
  public <methods>; <fields>;
}
-keep class com.tencent.qqmini.sdk.ui.MiniGameShopWebview {
  public <methods>;
}
-keep class com.tencent.qqmini.sdk.core.utils.WebViewUtils {
  public <methods>;
}
-keep class com.tencent.qqmini.sdk.utils.PackageUtils {
  public <methods>;
}

# protocol: should keep field name because reflection
-keep class cooperation.** { *; }
-keep class com.tencent.mobileqq.pb.MessageMicro { *; }
-keepclassmembers class * extends com.tencent.mobileqq.pb.MessageMicro {
    <fields>;
}

# extra_ad
-keep class com.tencent.qqmini.ad.** {* ;}

# ad
-keep class com.qq.e.** {* ;}

# extraad模块直接引用了协议，先keep
-keep class NS_MINI_AD.** { *; }
-keep class NS_QWEB_PROTOCAL.**  { *; }
-keep class com.tencent.mobileqq.pb.PBStringField {*;}
-keep class com.tencent.qqmini.sdk.request.ProtoBufRequest {
    public *;
}

-keep class com.tencent.qqmini.MMKVDelegate { public *; }
# Keep all native methods, their classes and any classes in their descriptors
-keepclasseswithmembers,includedescriptorclasses class com.tencent.qqmini.mmkv.** {
    native <methods>;
    long nativeHandle;
    private static *** onMMKVCRCCheckFail(***);
    private static *** onMMKVFileLengthError(***);
    private static *** mmkvLogImp(...);
    private static *** onContentChangedByOuterProcess(***);
}

-keep class com.tencent.qqmini.sdk.ui.MiniGameEmbedFragment { public *; }
-keep class com.tencent.qqmini.minigame.manager.EnginePackageManager { public *; }
