简体   繁体   English

更新 Android studio 3.5 获取 proguard 警告

[英]Update Android studio 3.5 getting proguard warnings

Since I've updated Android studio from 3.4 to 3.5 I'm getting the error on the project.由于我已将 Android Studio 从 3.4 更新到 3.5,因此我在项目中遇到了错误。 The list of error are below and it seems like missing rules in proguard file.错误列表如下,似乎 proguard 文件中缺少规则。

But once I put these rules:但是一旦我提出了这些规则:

-dontnote androidx.**
-dontwarn androidx.**

The project is building infinitely and won't finish.该项目正在无限构建,不会完成。 I was waiting 30-40 min with not result at all.我等了 30-40 分钟,根本没有结果。 (Usually the project build time is 4-5min) (通常项目构建时间为4-5min)

Note: there were 6 duplicate class definitions.
      (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Note: the configuration refers to the unknown class 'com.amazonaws.auth.AWS4Signer'
Warning: androidx.appcompat.widget.ActivityChooserView: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.appcompat.widget.ActivityChooserView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'boolean isHorizontallyScrollable()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'android.text.TextDirectionHeuristic getTextDirectionHeuristic()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.ButtonBarLayout: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.appcompat.widget.ButtonBarLayout
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced method 'android.graphics.Insets getOpticalInsets()' in library class android.graphics.drawable.Drawable
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.DrawableUtils: can't find referenced class android.graphics.Insets
Warning: androidx.appcompat.widget.ListPopupWindow: can't find referenced method 'void setEpicenterBounds(android.graphics.Rect)' in library class android.widget.PopupWindow
Warning: androidx.appcompat.widget.ListPopupWindow: can't find referenced method 'void setIsClippedToScreen(boolean)' in library class android.widget.PopupWindow
Warning: androidx.appcompat.widget.MenuPopupWindow: can't find referenced method 'void setTouchModal(boolean)' in library class android.widget.PopupWindow
Warning: androidx.appcompat.widget.SearchView: can't find referenced method 'void refreshAutoCompleteResults()' in program class androidx.appcompat.widget.SearchView$SearchAutoComplete
Warning: androidx.camera.camera2.impl.compat.CameraManagerCompat$AvailabilityCallbackExecutorWrapper$1: can't find referenced method 'void onCameraAccessPrioritiesChanged()' in library class android.hardware.camera2.CameraManager$AvailabilityCallback
Warning: androidx.recyclerview.widget.RecyclerView: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.recyclerview.widget.RecyclerView
Warning: androidx.viewpager2.widget.ViewPager2: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.viewpager2.widget.ViewPager2

Warning: there were 6 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning: there were 5 unresolved references to program class members.
         Your input classes appear to be inconsistent.
         You may need to recompile the code.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
Warning: there were 7 unresolved references to library class members.
         You probably need to update the library versions.
         Alternatively, you may have to specify the option 
         '-dontskipnonpubliclibraryclassmembers'.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)

These are proguard rules:这些是proguard规则:

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in <android sdk path>/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# 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 *;
#}

# Additional config for retaining stacktrace coherence
-dontskipnonpubliclibraryclassmembers
-keepattributes LineNumberTable, SourceFile, Exceptions, RuntimeVisibleAnnotations, AnnotationDefault

# Enums
-keepclassmembers enum * { *; }

# This is for retaining proper names of custom Exceptions
-keep public class * extends java.lang.Exception

# Remove log calls
-assumenosideeffects class android.util.Log {
    public static *** d(...);
}
-assumenosideeffects class timber.log.Timber {
    public static *** d(...);
}

# Android
-dontnote android.**
-dontnote com.android.**
## Do not obfuscate but allow shrinking of android-oauth-client
-keepnames class com.wuman.android.auth.** { *; }

# ButterKnife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

# OK
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform

# Crashlytics
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-dontnote io.fabric.**

# Nucleus (requires default empty constructor, ProGuard removes them)
# https://github.com/konmik/nucleus/issues/126
-keepclassmembers class * extends nucleus5.presenter.Presenter {
    <init>();
}
-dontwarn nucleus.view.NucleusActionBarActivity
-dontnote nucleus5.**

# Google
-keep class com.google.android.gms.common.api.** { *; }
-dontnote com.google.**
# For using GSON @Expose annotation
-keepattributes *Annotation*

# Firebase
-dontnote com.firebase.**

# Amazon AWS Pinpoint
## Class names are needed in reflection
-keepnames class com.amazonaws.**
-keepclassmembers public class com.amazonaws.auth.AWS4Signer {
   public <init>(...);}
## Request handlers defined in request.handlers
-keep class com.amazonaws.services.**.*Handler
## The following are referenced but aren't required to run
-dontwarn com.fasterxml.jackson.**
-dontwarn org.apache.commons.logging.**
## Android 6.0 release removes support for the Apache HTTP client
-dontwarn org.apache.http.**
## The SDK has several references of Apache HTTP client
-dontwarn com.amazonaws.http.**
-dontwarn com.amazonaws.metrics.**
## Spinner indicator
-keep class com.wang.avi.** { *; }
-keep class com.wang.avi.indicators.** { *; }

# Branch.io
-dontwarn com.google.firebase.appindexing.**
-dontwarn com.android.installreferrer.api.**

# Subsampling Scale View
-dontnote com.davemorrissey.**

# RxJava
-dontnote io.reactivex.**

# Realm
-dontnote io.realm.**

# Facebook
-dontnote com.facebook.**

# Dagger
-dontnote dagger.internal.**

# Experimental
-dontwarn **Lambda**

# org.apache.http.legacy (see https://issuetracker.google.com/issues/37070898)
-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**

# MapWize
-dontwarn com.mapbox.**
-dontwarn com.unity3d.player.UnityPlayer
-keep class com.navisens.** {*;}
-keep class org.json.** {*;}

# ChatKit
-keep class * extends com.stfalcon.chatkit.messages.MessageHolders$OutcomingTextMessageViewHolder {
     public <init>(android.view.View, java.lang.Object);
     public <init>(android.view.View);
}
-keep class * extends com.stfalcon.chatkit.messages.MessageHolders$IncomingTextMessageViewHolder {
     public <init>(android.view.View, java.lang.Object);
     public <init>(android.view.View);
}
-keep class * extends com.stfalcon.chatkit.messages.MessageHolders$IncomingImageMessageViewHolder {
     public <init>(android.view.View, java.lang.Object);
     public <init>(android.view.View);
}
-keep class * extends com.stfalcon.chatkit.messages.MessageHolders$OutcomingImageMessageViewHolder {
     public <init>(android.view.View, java.lang.Object);
     public <init>(android.view.View);
}

# Twilio
-keep class com.twilio.chat.** { *; }
-keepattributes InnerClasses
#-keep interface com.twilio.chat.** { *; }
#-keep enum com.twilio.chat.** { *; }

## Keep native methods
-keepclasseswithmembernames class com.twilio.chat.** {
    native <methods>;
}

# Volley
-keep class com.android.volley.** { *;}
-dontwarn com.android.volley.**

-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}

Try to set尝试设置

android {
     compileSDKVersion 29
}

Just use this:只需使用这个:

-dontwarn androidx.appcompat.widget.**

Don't forget to remove:不要忘记删除:

-dontnote androidx.**
-dontwarn androidx.**

update gradle plugin version更新gradle插件版本

buildscript {
 repositories {

    google()
    jcenter()

}
dependencies {
    classpath 'com.android.tools.build:gradle:3.5.3'
    classpath 'com.google.gms:google-services:4.3.3'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}    

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM