From db31ee89f2ab4b6ca801ebdf6f261a992a8d8069 Mon Sep 17 00:00:00 2001 From: ag2s20150909 Date: Thu, 15 Jul 2021 21:07:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Cronet=20=E6=B7=B7=E6=B7=86?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/proguard-rules.pro | 135 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 3733c9bc4..aedd4a7c4 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -222,3 +222,138 @@ public static **[] values(); public static ** valueOf(java.lang.String); } + + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# 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.RemovableInRelease +-keep @interface org.chromium.base.annotations.UsedByReflection + +# 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 class * { + @androidx.annotation.Keep ; +} +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +# Keeps for class level annotations. +-keep @org.chromium.base.annotations.UsedByReflection class ** {} + +# Keeps for method level annotations. +-keepclasseswithmembers class ** { + @org.chromium.base.annotations.AccessedByNative ; +} +-keepclasseswithmembers,includedescriptorclasses class ** { + @org.chromium.base.annotations.CalledByNative ; +} +-keepclasseswithmembers,includedescriptorclasses class ** { + @org.chromium.base.annotations.CalledByNativeUnchecked ; +} +-keepclasseswithmembers class ** { + @org.chromium.base.annotations.UsedByReflection ; +} +-keepclasseswithmembers class ** { + @org.chromium.base.annotations.UsedByReflection ; +} +# Even unused methods kept due to explicit jni registration: +# https://crbug.com/688465. +-keepclasseswithmembers,includedescriptorclasses class !org.chromium.base.library_loader.**,** { + native ; +} +-keepclasseswithmembernames,includedescriptorclasses class org.chromium.base.library_loader.** { + native ; +} + +-assumenosideeffects class ** { + # Remove @RemovableInRelease methods so long as return values are unused. + @org.chromium.base.annotations.RemovableInRelease ; +} + +-assumevalues class ** { + # Remove object @RemovableInRelease methods even when return value is used. + # Note: ** in return type does not match primitives. + @org.chromium.base.annotations.RemovableInRelease ** *(...) return null; + # Remove boolean @RemovableInRelease methods even when return value is used. + @org.chromium.base.annotations.RemovableInRelease boolean *(...) return false; +} + +# Never inline classes or methods with this annotation, but allow shrinking and +# obfuscation. +-if @org.chromium.base.annotations.DoNotInline class * { + *** *(...); +} +-keep,allowobfuscation class <1> { + *** <2>(...); +} +-keepclassmembers,allowobfuscation class * { + @org.chromium.base.annotations.DoNotInline ; +} + +# 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 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(); +} +# 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 org.chromium.net.impl.NativeCronetProvider { + public (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.library_loader.NativeLibraries +-dontwarn org.chromium.base.multidex.ChromiumMultiDexInstaller +-dontwarn org.chromium.base.library_loader.LibraryLoader +-dontwarn org.chromium.base.SysUtils + +# 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 \ No newline at end of file