# 将所有的 IService 子类 keep 住，因为 spi 会自动查找
-keep class * implements com.bytedance.ttgame.framework.module.spi.IService {*;}
# 将所有的 ModuleLifecycle 子类 keep 住，因为 ModuleManager 会查找
-keep class * implements com.bytedance.ttgame.framework.module.spi.ModuleLifecycle {*;}
-keep class g.optional.share.** {*;}

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class com.bytedance.ttgame.module.share.ShareService {*;}
-keep class com.bytedance.ug.sdk.share.channel.wechat.view.BaseWXEntryActivity {*;}
-keep class com.bytedance.ttgame.module.share.TTWXBaseEntryActivity {*;}
-keep class com.bytedance.ttgame.module.share.TTBdBaseEntryActivity {*;}
-keep class com.bytedance.ug.sdk.share.channel.douyin.view.BaseDouYinEntryActivity {*;}
-keep class com.bytedance.ug.sdk.share.channel.tiktok.view.BaseTikTokEntryActivity {*;}

# 这个非常重要，控制我们混淆产出的包名，防止与其它三方sdk出现包名冲突
-repackageclasses 'g.optional.share'

-dontshrink
-ignorewarnings
-dontpreverify
-dontoptimize
-optimizations !class/unboxing/enum
-optimizations !code/simplification/arithmetic
-keeppackagenames doNotKeepAThing
-keepattributes SourceFile, LineNumberTable

-keep class * implements com.bytedance.ttgame.framework.module.spi.IService {*;}

-keep class com.tencent.** {*;}
-keep class com.tencent.**$* {*;}
-keep class com.bytedance.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.sdk.share.api.** {*;}
-keep class com.bytedance.sdk.share.partner.** {*;}
-keep class com.bytedance.sdk.share.network.model.** {*;}
-keep class com.bytedance.sdk.share.manager.** {*;}
-keep class com.bytedance.sdk.share.channel.wechat.view.**{*;}
-keep class  com.bytedance.sdk.share.channel.qq.action.**{*;}
-keep class com.bytedance.sdk.open.** {*;}

-ignorewarnings
-keepattributes *Annotation*
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes Exceptions,InnerClasses
-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.facebook.share.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.facebook.share.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keep class com.bytedance.ug.sdk.share.keep.impl.** {*;}
-keepattributes Exceptions,InnerClasses,...
-keep interface com.bytedance.ug.sdk.deeplink.CallBackForAppLink {*;}
-keep interface com.bytedance.ug.sdk.deeplink.CallBackForCheckClipboard {*;}
-keep interface com.bytedance.ug.sdk.deeplink.IDeepLinkDepend {*;}
-keep interface com.bytedance.ug.sdk.deeplink.interfaces.IExecutor {*;}
-keep interface com.bytedance.ug.sdk.deeplink.interfaces.INetwork {*;}
-keep interface com.bytedance.ug.sdk.deeplink.fission.CallbackForFission {*;}

-keep class com.bytedance.ug.sdk.deeplink.DeepLinkApi {*;}
-keep class com.bytedance.ug.sdk.deeplink.DeepLinkDependAbility {*;}
-keep class com.bytedance.ug.sdk.deeplink.DeepLinkDependAbility$Builder {*;}

# 保持枚举 enum 类不被混淆
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# 保持Parcelable不被混淆
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
