-ignorewarnings
-dontpreverify
-dontoptimize
-optimizationpasses 5
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*,Signature,EnclosingMethod,InnerClasses,SourceFile,LineNumberTable
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class * implements java.io.Serializable {
    public static final long serialVersionUID;
}

# YIM
-keep class com.ypush.YPush{public *;}
-keep class com.ypush.YPush$Companion {
    <fields>;
    <methods>;
}
-keep class com.ypush.model.**{public *;}

# push
-keep class com.huawei.**{*;}
-keep class com.heytap.** { *;}
-keep class com.hihonor.**{*;}
-keep class com.meizu.**{*;}
-keep class com.vivo.**{*;}
-keep class com.xiaomi.**{*;}

# other
-keep class okhttp3.**{*;}
-keep class okio.**{*;}
-keep class com.google.**{*;}

-dontwarn com.huawei.android.os.BuildEx$VERSION
-dontwarn com.huawei.hianalytics.process.HiAnalyticsInstance
-dontwarn com.huawei.hianalytics.process.HiAnalyticsManager
-dontwarn java.awt.Color
-dontwarn java.awt.Font
-dontwarn java.awt.Point
-dontwarn java.awt.Rectangle
-dontwarn javax.money.CurrencyUnit
-dontwarn javax.money.Monetary
-dontwarn org.bouncycastle.crypto.BlockCipher
-dontwarn org.bouncycastle.crypto.engines.AESEngine
-dontwarn org.bouncycastle.crypto.prng.SP800SecureRandom
-dontwarn org.bouncycastle.crypto.prng.SP800SecureRandomBuilder
-dontwarn org.conscrypt.Conscrypt$ProviderBuilder
-dontwarn org.conscrypt.Conscrypt
-dontwarn org.javamoney.moneta.Money
-dontwarn org.joda.time.DateTime
-dontwarn org.joda.time.DateTimeZone
-dontwarn org.joda.time.Duration
-dontwarn org.joda.time.Instant
-dontwarn org.joda.time.LocalDate
-dontwarn org.joda.time.LocalDateTime
-dontwarn org.joda.time.LocalTime
-dontwarn org.joda.time.Period
-dontwarn org.joda.time.ReadablePartial
-dontwarn org.joda.time.format.DateTimeFormat
-dontwarn org.joda.time.format.DateTimeFormatter
-dontwarn springfox.documentation.spring.web.json.Json

#MiPushSDK的混淆规则
-keep class com.xiaomi.mipush.sdk.MiPushMessage {*;}
-keep class com.xiaomi.mipush.sdk.MiPushCommandMessage {*;}
-keep class com.xiaomi.mipush.sdk.PushMessageReceiver {*;}
-keep class com.xiaomi.mipush.sdk.MessageHandleService {*;}
-keep class com.xiaomi.push.service.XMJobService {*;}
-keep class com.xiaomi.push.service.XMPushService {*;}
-keep class com.xiaomi.mipush.sdk.PushMessageHandler {*;}
-keep class com.xiaomi.push.service.receivers.NetworkStatusReceiver {*;}
-keep class com.xiaomi.push.service.receivers.PingReceiver {*;}
-keep class com.xiaomi.mipush.sdk.NotificationClickedActivity {*;}

-keep class * implements com.huawei.agconnect.core.ServiceRegistrar
-keepclassmembers class **{
    public <init>(android.content.Context,com.huawei.agconnect.AGConnectInstance);
}

-keep class !com.huawei.hms.update.manager.HmsApkReallySizeManager$*,
    !com.huawei.hms.update.manager.ThirdPartyMarketConfigManager$*,
    !com.huawei.hms.update.ui.AppTouchWizard$SizeCallback,
    !com.huawei.hms.update.ui.DownloadProgress$*,
    !com.huawei.hms.update.ui.ConfirmDialogs$*,
    !com.huawei.hms.update.ui.HiappWizard$SizeCallback,
    !com.huawei.hms.update.ui.HwAlertController$CheckedItemAdapter,
    !com.huawei.hms.update.ui.HwAlertController$ListViewScrollListener,
    !com.huawei.hms.update.ui.HwAlertController$BtnHandler,
    !com.huawei.hms.update.ui.SilentUpdateWizard$*,
    !com.huawei.hms.update.ui.PromptDialogs$*,
    !com.huawei.hms.update.ui.ThirdPartyMarketWizard$*,
    !com.huawei.hms.update.ui.UpdateWizard$SizeCallback,
    com.huawei.hms.update.** {public *;}

-keep class !com.huawei.hms.adapter.BaseAdapter$MPendingResultImpl, com.huawei.hms.adapter.** {public *;}
-keep class com.huawei.hms.base.** {public *;}
-keep class com.huawei.hms.availableupdate.** {public *;}

-keep interface com.huawei.hms.support.api.transport.DatagramTransport
-keepclasseswithmembers class * implements com.huawei.hms.support.api.transport.DatagramTransport {
  <init>(...);
}
-keep public class com.huawei.hms.support.api.client.* {public *;}
-keep public class com.huawei.hms.support.api.ResolvePendingResult {public *;}
-keep public class com.huawei.hms.support.api.ResolveResult {public *;}
-keep public class com.huawei.hms.support.api.PendingResultImpl {public *;}
-keep public class com.huawei.hms.support.api.ErrorResultImpl {public *;}
-keep public class com.huawei.hms.support.api.entity.core.* {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.AbstractResp {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.AuthCode {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.Scope {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.PermissionInfo {public *;}
-keep class com.huawei.hms.support.api.entity.auth.AuthCode$* {public *;}
-keep public class com.huawei.hms.support.api.core.ConnectService {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsClient {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsUtil {public *;}

-keep public class com.huawei.hms.api.* {*;}
-keep public class com.huawei.hms.common.api.* {*;}
-keep public class com.huawei.hms.common.internal.AutoLifecycleFragment {*;}
-keep public class com.huawei.hms.support.api.client.* {*;}
-keep public class com.huawei.hms.support.api.core.* {*;}
-keep public class com.huawei.hms.support.api.entity.core.* {*;}
-keep public class com.huawei.hms.support.api.ResolvePendingResult {*;}

-keep class com.huawei.hms.utils.** {public *;}

-keep class !com.huawei.hms.common.internal.BindResolveClients$*,
    !com.huawei.hms.common.internal.HmsClient$BaseAdapterCallBack,
    !com.huawei.hms.common.HuaweiApi$RequestRunnable,
    com.huawei.hms.common.** {public *;}

-keep class com.huawei.hms.android.** {public *;}
-keep public class com.huawei.hms.support.log.common.Base64 {public *;}
-keep public class com.huawei.hms.support.gentyref.GenericTypeReflector {public *;}
-keep class com.huawei.hms.device.** {public *;}

-keep class org.apache.http.conn.ssl.BrowserCompatHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.StrictHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.X509HostnameVerifier {public *;}

-keep class org.apache.http.conn.ssl.SSLSocketFactory {public *;}

-keep class com.huawei.hianalytics.** {public *;}

-keep class org.apache.http.conn.ssl.BrowserCompatHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.StrictHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.X509HostnameVerifier {public *;}

-keep class org.apache.http.conn.ssl.SSLSocketFactory {public *;}

-keep class com.huawei.hms.base.** {public *;}
-keep public class com.huawei.hms.support.log.HMSDebugger {public *;}
-keep public class com.huawei.hms.support.log.LogLevel {public *;}
-keep public class com.huawei.hms.support.log.HMSLog {public *;}
-keep class com.huawei.hms.log.** {public *;}

# 业务引用打点SDK时，要保留这几个类,用于动态加载打点
-keep class com.huawei.hianalytics.process.HiAnalyticsInstance{
    public <methods>;
}
-keep class com.huawei.hianalytics.process.HiAnalyticsManager{
    public <methods>;
}
-keep class com.huawei.hianalytics.v2.HiAnalytics{
    public <methods>;
}
# 解决HBase打点的能力问题,避免业务混淆后，NetworkKit无法打点的问题
-keep class com.huawei.hms.utils.HMSBIInitializer{
    public static com.huawei.hms.utils.HMSBIInitializer getInstance(android.content.Context);
    public void initBI();
}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsUtils{
    public static com.huawei.hms.support.hianalytics.HiAnalyticsUtils getInstance();
    public void onNewEvent(android.content.Context,java.lang.String,java.util.Map);
}
-keep public enum com.huawei.hms.network.SceneType {
    *;
}
# 保留所有的public protected的api实现类，httpclient目录下的
-keep class com.huawei.secure.android.common.util.SafeBase64{
 public *;
 protected *;
 }
-keep class com.huawei.secure.android.common.util.SafeString{
 public *;
 protected *;
}

-keep class com.huawei.hms.framework.common** {!private *; }


-keep class com.huawei.hms.framework.network.grs.BuildConfig {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsApi {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsBaseInfo {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsBaseInfo$* {*;}
-keep class com.huawei.hms.framework.network.grs.IQueryUrlCallBack {   *; }
-keep class com.huawei.hms.framework.network.grs.IQueryUrlsCallBack {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsClient {   *; }
-keep class com.huawei.hms.framework.network.grs.local.model.CountryCodeBean {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsApp {   *; }


-keep public class com.huawei.hms.support.api.entity.opendevice.* { public *; protected *; }
-keep public class com.huawei.hms.aaid.entity.* { *;}

-keep public class com.huawei.hms.support.api.entity.push.* { *; }

-keep class com.huawei.hms.utils.** {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsClient {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsConstant {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsUtils {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$KeyAndValue {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$HaKey {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$Direction {public *;}
-keep class com.huawei.hms.stats.** {public *;}

-keep class com.huawei.hms.ui.** {public *;}
-keep class !com.huawei.hms.activity.ForegroundBusDelegate$*, com.huawei.hms.activity.** {public *;}
-keep class com.huawei.hms.utils.** {public *;}
-keep class com.huawei.hms.base.** {public *;}
-keep public class com.huawei.hms.support.common.ActivityMgr {public *;}


-keepclassmembers public class com.hihonor.push.sdk.common.* {*;}

-keepclassmembers public class com.hihonor.push.sdk.common.* {*;}




#MiPushSDK的混淆规则
-keep class com.xiaomi.mipush.sdk.MiPushMessage {*;}
-keep class com.xiaomi.mipush.sdk.MiPushCommandMessage {*;}
-keep class com.xiaomi.mipush.sdk.PushMessageReceiver {*;}
-keep class com.xiaomi.mipush.sdk.MessageHandleService {*;}
-keep class com.xiaomi.push.service.XMJobService {*;}
-keep class com.xiaomi.push.service.XMPushService {*;}
-keep class com.xiaomi.mipush.sdk.PushMessageHandler {*;}
-keep class com.xiaomi.push.service.receivers.NetworkStatusReceiver {*;}
-keep class com.xiaomi.push.service.receivers.PingReceiver {*;}
-keep class com.xiaomi.mipush.sdk.NotificationClickedActivity {*;}

-keep class * implements com.huawei.agconnect.core.ServiceRegistrar
-keepclassmembers class **{
    public <init>(android.content.Context,com.huawei.agconnect.AGConnectInstance);
}

-keep class !com.huawei.hms.update.manager.HmsApkReallySizeManager$*,
    !com.huawei.hms.update.manager.ThirdPartyMarketConfigManager$*,
    !com.huawei.hms.update.ui.AppTouchWizard$SizeCallback,
    !com.huawei.hms.update.ui.DownloadProgress$*,
    !com.huawei.hms.update.ui.ConfirmDialogs$*,
    !com.huawei.hms.update.ui.HiappWizard$SizeCallback,
    !com.huawei.hms.update.ui.HwAlertController$CheckedItemAdapter,
    !com.huawei.hms.update.ui.HwAlertController$ListViewScrollListener,
    !com.huawei.hms.update.ui.HwAlertController$BtnHandler,
    !com.huawei.hms.update.ui.SilentUpdateWizard$*,
    !com.huawei.hms.update.ui.PromptDialogs$*,
    !com.huawei.hms.update.ui.ThirdPartyMarketWizard$*,
    !com.huawei.hms.update.ui.UpdateWizard$SizeCallback,
    com.huawei.hms.update.** {public *;}

-keep class !com.huawei.hms.adapter.BaseAdapter$MPendingResultImpl, com.huawei.hms.adapter.** {public *;}
-keep class com.huawei.hms.base.** {public *;}
-keep class com.huawei.hms.availableupdate.** {public *;}

-keep interface com.huawei.hms.support.api.transport.DatagramTransport
-keepclasseswithmembers class * implements com.huawei.hms.support.api.transport.DatagramTransport {
  <init>(...);
}
-keep public class com.huawei.hms.support.api.client.* {public *;}
-keep public class com.huawei.hms.support.api.ResolvePendingResult {public *;}
-keep public class com.huawei.hms.support.api.ResolveResult {public *;}
-keep public class com.huawei.hms.support.api.PendingResultImpl {public *;}
-keep public class com.huawei.hms.support.api.ErrorResultImpl {public *;}
-keep public class com.huawei.hms.support.api.entity.core.* {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.AbstractResp {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.AuthCode {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.Scope {public *;}
-keep public class com.huawei.hms.support.api.entity.auth.PermissionInfo {public *;}
-keep class com.huawei.hms.support.api.entity.auth.AuthCode$* {public *;}
-keep public class com.huawei.hms.support.api.core.ConnectService {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsClient {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsUtil {public *;}

-keep public class com.huawei.hms.api.* {*;}
-keep public class com.huawei.hms.common.api.* {*;}
-keep public class com.huawei.hms.common.internal.AutoLifecycleFragment {*;}
-keep public class com.huawei.hms.support.api.client.* {*;}
-keep public class com.huawei.hms.support.api.core.* {*;}
-keep public class com.huawei.hms.support.api.entity.core.* {*;}
-keep public class com.huawei.hms.support.api.ResolvePendingResult {*;}

-keep class com.huawei.hms.utils.** {public *;}

-keep class !com.huawei.hms.common.internal.BindResolveClients$*,
    !com.huawei.hms.common.internal.HmsClient$BaseAdapterCallBack,
    !com.huawei.hms.common.HuaweiApi$RequestRunnable,
    com.huawei.hms.common.** {public *;}

-keep class com.huawei.hms.android.** {public *;}
-keep public class com.huawei.hms.support.log.common.Base64 {public *;}
-keep public class com.huawei.hms.support.gentyref.GenericTypeReflector {public *;}
-keep class com.huawei.hms.device.** {public *;}

-keep class org.apache.http.conn.ssl.BrowserCompatHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.StrictHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.X509HostnameVerifier {public *;}

-keep class org.apache.http.conn.ssl.SSLSocketFactory {public *;}

-keep class com.huawei.hianalytics.** {public *;}

-keep class org.apache.http.conn.ssl.BrowserCompatHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.StrictHostnameVerifier {public *;}
-keep class org.apache.http.conn.ssl.X509HostnameVerifier {public *;}

-keep class org.apache.http.conn.ssl.SSLSocketFactory {public *;}

-keep class com.huawei.hms.base.** {public *;}
-keep public class com.huawei.hms.support.log.HMSDebugger {public *;}
-keep public class com.huawei.hms.support.log.LogLevel {public *;}
-keep public class com.huawei.hms.support.log.HMSLog {public *;}
-keep class com.huawei.hms.log.** {public *;}

# 业务引用打点SDK时，要保留这几个类,用于动态加载打点
-keep class com.huawei.hianalytics.process.HiAnalyticsInstance{
    public <methods>;
}
-keep class com.huawei.hianalytics.process.HiAnalyticsManager{
    public <methods>;
}
-keep class com.huawei.hianalytics.v2.HiAnalytics{
    public <methods>;
}
# 解决HBase打点的能力问题,避免业务混淆后，NetworkKit无法打点的问题
-keep class com.huawei.hms.utils.HMSBIInitializer{
    public static com.huawei.hms.utils.HMSBIInitializer getInstance(android.content.Context);
    public void initBI();
}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsUtils{
    public static com.huawei.hms.support.hianalytics.HiAnalyticsUtils getInstance();
    public void onNewEvent(android.content.Context,java.lang.String,java.util.Map);
}
-keep public enum com.huawei.hms.network.SceneType {
    *;
}
# 保留所有的public protected的api实现类，httpclient目录下的
-keep class com.huawei.secure.android.common.util.SafeBase64{
 public *;
 protected *;
 }
-keep class com.huawei.secure.android.common.util.SafeString{
 public *;
 protected *;
}

-keep class com.huawei.hms.framework.common** {!private *; }


-keep class com.huawei.hms.framework.network.grs.BuildConfig {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsApi {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsBaseInfo {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsBaseInfo$* {*;}
-keep class com.huawei.hms.framework.network.grs.IQueryUrlCallBack {   *; }
-keep class com.huawei.hms.framework.network.grs.IQueryUrlsCallBack {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsClient {   *; }
-keep class com.huawei.hms.framework.network.grs.local.model.CountryCodeBean {   *; }
-keep class com.huawei.hms.framework.network.grs.GrsApp {   *; }


-keep public class com.huawei.hms.support.api.entity.opendevice.* { public *; protected *; }
-keep public class com.huawei.hms.aaid.entity.* { *;}

-keep public class com.huawei.hms.support.api.entity.push.* { *; }

-keep class com.huawei.hms.utils.** {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsClient {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsConstant {public *;}
-keep public class com.huawei.hms.support.hianalytics.HiAnalyticsUtils {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$KeyAndValue {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$HaKey {public *;}
-keep class com.huawei.hms.support.hianalytics.HiAnalyticsConstant$Direction {public *;}
-keep class com.huawei.hms.stats.** {public *;}

-keep class com.huawei.hms.ui.** {public *;}
-keep class !com.huawei.hms.activity.ForegroundBusDelegate$*, com.huawei.hms.activity.** {public *;}
-keep class com.huawei.hms.utils.** {public *;}
-keep class com.huawei.hms.base.** {public *;}
-keep public class com.huawei.hms.support.common.ActivityMgr {public *;}


-keepclassmembers public class com.hihonor.push.sdk.common.* {*;}

-keepclassmembers public class com.hihonor.push.sdk.common.* {*;}



