|  |  |  | @ -232,16 +232,6 @@ | 
			
		
	
		
			
				
					|  |  |  |  |     public static ** valueOf(java.lang.String); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keep all of Cronet API as it's used by the Cronet module. | 
			
		
	
		
			
				
					|  |  |  |  | -keep public class org.chromium.net.* { | 
			
		
	
		
			
				
					|  |  |  |  |     !private *; | 
			
		
	
		
			
				
					|  |  |  |  |     *; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keep class org.chromium.** {*;} | 
			
		
	
		
			
				
					|  |  |  |  | -keep class com.google.android.gms.net.PlayServicesCronetProvider{*;} | 
			
		
	
		
			
				
					|  |  |  |  | -keep class com.google.android.gms.net.GmsCoreCronetProvider{*;} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | ## 保证该私有变量不被混淆 | 
			
		
	
		
			
				
					|  |  |  |  | -keepclassmembers class com.google.android.exoplayer2.upstream.cache.CacheDataSource$Factory { | 
			
		
	
		
			
				
					|  |  |  |  |     #noinspection ShrinkerUnresolvedReference | 
			
		
	
	
		
			
				
					|  |  |  | @ -250,3 +240,153 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | ## 对外提供api | 
			
		
	
		
			
				
					|  |  |  |  | -keep class io.legado.app.api.ReturnData{*;} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #-------------------Cronet------------------------------------ | 
			
		
	
		
			
				
					|  |  |  |  | # Contains flags that can be safely shared with Cronet, and thus would be | 
			
		
	
		
			
				
					|  |  |  |  | # appropriate for third-party apps to include. | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keep all annotation related attributes that can affect runtime | 
			
		
	
		
			
				
					|  |  |  |  | -keepattributes RuntimeVisible*Annotations | 
			
		
	
		
			
				
					|  |  |  |  | -keepattributes AnnotationDefault | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keep the annotations, because if we don't, the ProGuard rules that use them | 
			
		
	
		
			
				
					|  |  |  |  | # will not be respected. These classes then show up in our final dex, which we | 
			
		
	
		
			
				
					|  |  |  |  | # do not want - see crbug.com/628226. | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.AccessedByNative | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.CalledByNative | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.CalledByNativeUnchecked | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.DoNotInline | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.UsedByReflection | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface org.chromium.base.annotations.IdentifierNameString | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Android support library annotations will get converted to androidx ones | 
			
		
	
		
			
				
					|  |  |  |  | # which we want to keep. | 
			
		
	
		
			
				
					|  |  |  |  | -keep @interface androidx.annotation.Keep | 
			
		
	
		
			
				
					|  |  |  |  | -keep @androidx.annotation.Keep class * | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,allowaccessmodification class * { | 
			
		
	
		
			
				
					|  |  |  |  |   @androidx.annotation.Keep <fields>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,allowaccessmodification class * { | 
			
		
	
		
			
				
					|  |  |  |  |   @androidx.annotation.Keep <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keeps for class level annotations. | 
			
		
	
		
			
				
					|  |  |  |  | -keep,allowaccessmodification @org.chromium.base.annotations.UsedByReflection class ** {} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keeps for method level annotations. | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,allowaccessmodification class ** { | 
			
		
	
		
			
				
					|  |  |  |  |   @org.chromium.base.annotations.AccessedByNative <fields>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class ** { | 
			
		
	
		
			
				
					|  |  |  |  |   @org.chromium.base.annotations.CalledByNative <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class ** { | 
			
		
	
		
			
				
					|  |  |  |  |   @org.chromium.base.annotations.CalledByNativeUnchecked <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,allowaccessmodification class ** { | 
			
		
	
		
			
				
					|  |  |  |  |   @org.chromium.base.annotations.UsedByReflection <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,allowaccessmodification class ** { | 
			
		
	
		
			
				
					|  |  |  |  |   @org.chromium.base.annotations.UsedByReflection <fields>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | # Even unused methods kept due to explicit jni registration: | 
			
		
	
		
			
				
					|  |  |  |  | # https://crbug.com/688465. | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class !org.chromium.base.library_loader.**,** { | 
			
		
	
		
			
				
					|  |  |  |  |   native <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class org.chromium.base.library_loader.** { | 
			
		
	
		
			
				
					|  |  |  |  |   native <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Use assumevalues block instead of assumenosideeffects block because Google3 proguard cannot parse | 
			
		
	
		
			
				
					|  |  |  |  | # assumenosideeffects blocks which overwrite return value. | 
			
		
	
		
			
				
					|  |  |  |  | -assumevalues class org.chromium.base.Log { | 
			
		
	
		
			
				
					|  |  |  |  |   static boolean isDebug() return false; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Never inline classes, methods, or fields with this annotation, but allow | 
			
		
	
		
			
				
					|  |  |  |  | # shrinking and obfuscation. | 
			
		
	
		
			
				
					|  |  |  |  | # Relevant to fields when they are needed to store strong references to objects | 
			
		
	
		
			
				
					|  |  |  |  | # that are held as weak references by native code. | 
			
		
	
		
			
				
					|  |  |  |  | -if @org.chromium.base.annotations.DoNotInline class * { | 
			
		
	
		
			
				
					|  |  |  |  |     *** *(...); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keep,allowobfuscation,allowaccessmodification class <1> { | 
			
		
	
		
			
				
					|  |  |  |  |     *** <2>(...); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclassmembers,allowobfuscation,allowaccessmodification class * { | 
			
		
	
		
			
				
					|  |  |  |  |    @org.chromium.base.annotations.DoNotInline <methods>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | -keepclassmembers,allowobfuscation,allowaccessmodification class * { | 
			
		
	
		
			
				
					|  |  |  |  |    @org.chromium.base.annotations.DoNotInline <fields>; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Never merge classes horizontally or vertically with this annotation. | 
			
		
	
		
			
				
					|  |  |  |  | # Relevant to classes being used as a key in maps or sets. | 
			
		
	
		
			
				
					|  |  |  |  | -keep,allowaccessmodification,allowobfuscation,allowshrinking @org.chromium.base.annotations.DoNotClassMerge class * | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keep all CREATOR fields within Parcelable that are kept. | 
			
		
	
		
			
				
					|  |  |  |  | -keepclassmembers class org.chromium.** implements android.os.Parcelable { | 
			
		
	
		
			
				
					|  |  |  |  |   public static *** CREATOR; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Don't obfuscate Parcelables as they might be marshalled outside Chrome. | 
			
		
	
		
			
				
					|  |  |  |  | # If we annotated all Parcelables that get put into Bundles other than | 
			
		
	
		
			
				
					|  |  |  |  | # for saveInstanceState (e.g. PendingIntents), then we could actually keep the | 
			
		
	
		
			
				
					|  |  |  |  | # names of just those ones. For now, we'll just keep them all. | 
			
		
	
		
			
				
					|  |  |  |  | -keepnames,allowaccessmodification class org.chromium.** implements android.os.Parcelable {} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Keep all enum values and valueOf methods. See | 
			
		
	
		
			
				
					|  |  |  |  | # http://proguard.sourceforge.net/index.html#manual/examples.html | 
			
		
	
		
			
				
					|  |  |  |  | # for the reason for this. Also, see http://crbug.com/248037. | 
			
		
	
		
			
				
					|  |  |  |  | -keepclassmembers enum org.chromium.** { | 
			
		
	
		
			
				
					|  |  |  |  |     public static **[] values(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Mark members annotated with IdentifierNameString as identifier name strings | 
			
		
	
		
			
				
					|  |  |  |  | -identifiernamestring class * { | 
			
		
	
		
			
				
					|  |  |  |  |     @org.chromium.base.annotations.IdentifierNameString *; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # -identifiernamestring doesn't keep the module impl around, we have to | 
			
		
	
		
			
				
					|  |  |  |  | # explicitly keep it. | 
			
		
	
		
			
				
					|  |  |  |  | -if @org.chromium.components.module_installer.builder.ModuleInterface interface * | 
			
		
	
		
			
				
					|  |  |  |  | -keep,allowobfuscation,allowaccessmodification class * extends <1> { | 
			
		
	
		
			
				
					|  |  |  |  |   <init>(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | # Proguard config for apps that depend on cronet_impl_native_java.jar. | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # This constructor is called using the reflection from Cronet API (cronet_api.jar). | 
			
		
	
		
			
				
					|  |  |  |  | -keep class * extends org.chromium.net.CronetProvider{ | 
			
		
	
		
			
				
					|  |  |  |  |     public <init>(android.content.Context); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Suppress unnecessary warnings. | 
			
		
	
		
			
				
					|  |  |  |  | -dontnote org.chromium.net.ProxyChangeListener$ProxyReceiver | 
			
		
	
		
			
				
					|  |  |  |  | -dontnote org.chromium.net.AndroidKeyStore | 
			
		
	
		
			
				
					|  |  |  |  | # Needs 'void setTextAppearance(int)' (API level 23). | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.base.ApiCompatibilityUtils | 
			
		
	
		
			
				
					|  |  |  |  | # Needs 'boolean onSearchRequested(android.view.SearchEvent)' (API level 23). | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.base.WindowCallbackWrapper | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Generated for chrome apk and not included into cronet. | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.base.multidex.ChromiumMultiDexInstaller | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.base.library_loader.LibraryLoader | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.base.SysUtils | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn org.chromium.build.NativeLibraries | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Objects of this type are passed around by native code, but the class | 
			
		
	
		
			
				
					|  |  |  |  | # is never used directly by native code. Since the class is not loaded, it does | 
			
		
	
		
			
				
					|  |  |  |  | # not need to be preserved as an entry point. | 
			
		
	
		
			
				
					|  |  |  |  | -dontnote org.chromium.net.UrlRequest$ResponseHeadersMap | 
			
		
	
		
			
				
					|  |  |  |  | # https://android.googlesource.com/platform/sdk/+/marshmallow-mr1-release/files/proguard-android.txt#54 | 
			
		
	
		
			
				
					|  |  |  |  | -dontwarn android.support.** | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # This class should be explicitly kept to avoid failure if | 
			
		
	
		
			
				
					|  |  |  |  | # class/merging/horizontal proguard optimization is enabled. | 
			
		
	
		
			
				
					|  |  |  |  | -keep class org.chromium.base.CollectionUtil | 
			
		
	
		
			
				
					|  |  |  |  | #-------------------Cronet------------------------------------ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |