我正在尝试使用ProGuard和新的Gradle 3.0.0版本创建APK。对于我认为在ProGuard配置文件中忽略的类,我收到了很多警告。相同的配置适用于Gradle 2.3.3但似乎在3.0.0上中断。警告很多,几乎没有读取ProGuard配置。
我的build.gradle
buildscript {
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
}
}
allprojects {
repositories {
jcenter()
maven {
url 'https://jitpack.io'
}
maven {
url 'https://maven.google.com'
}
}
}
android{
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.release
lintOptions {
disable 'MissingTranslation'
}
}
compileSdkVersion 27
buildToolsVersion "27.0.1"
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
下面的Proguard警告。
Warning: library class android.animation.FloatArrayEvaluator extends or implements program class android.animation.TypeEvaluator
Warning: library class android.animation.IntArrayEvaluator extends or implements program class android.animation.TypeEvaluator
Warning: library class android.animation.PointFEvaluator extends or implements program class android.animation.TypeEvaluator
Warning: library class android.animation.RectEvaluator extends or implements program class android.animation.TypeEvaluator
Warning: library class android.app.ActivityManager$TaskDescription extends or implements program class android.os.Parcelable
Warning: library class android.app.AlarmManager$AlarmClockInfo extends or implements program class android.os.Parcelable
Warning: library class android.app.AuthenticationRequiredException extends or implements program class android.os.Parcelable
Warning: library class android.app.AutomaticZenRule extends or implements program class android.os.Parcelable
Warning: library class android.app.Notification$Action extends or implements program class android.os.Parcelable
Warning: library class android.app.Notification$DecoratedCustomViewStyle extends or implements program class android.app.Notification$Style
Warning: library class android.app.Notification$MediaStyle extends or implements program class android.app.Notification$Style
Warning: library class android.app.Notification$MessagingStyle extends or implements program class android.app.Notification$Style
Warning: library class android.app.NotificationChannel extends or implements program class android.os.Parcelable
Warning: library class android.app.NotificationChannelGroup extends or implements program class android.os.Parcelable
Warning: library class android.app.NotificationManager$Policy extends or implements program class android.os.Parcelable
Warning: library class android.app.PictureInPictureParams extends or implements program class android.os.Parcelable
Warning: library class android.app.Presentation extends or implements program class android.app.Dialog
Warning: library class android.app.RemoteAction extends or implements program class android.os.Parcelable
Warning: library class android.app.RemoteInput extends or implements program class android.os.Parcelable
Warning: library class android.app.VoiceInteractor$PickOptionRequest$Option extends or implements program class android.os.Parcelable
Warning: library class android.app.VoiceInteractor$Prompt extends or implements program class android.os.Parcelable
Warning: library class android.app.WallpaperColors extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.ConnectEvent extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.DeviceAdminService extends or implements program class android.app.Service
Warning: library class android.app.admin.DnsEvent extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.NetworkEvent extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.SecurityLog$SecurityEvent extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.SystemUpdateInfo extends or implements program class android.os.Parcelable
Warning: library class android.app.admin.SystemUpdatePolicy extends or implements program class android.os.Parcelable
Warning: library class android.app.assist.AssistContent extends or implements program class android.os.Parcelable
Warning: library class android.app.assist.AssistStructure extends or implements program class android.os.Parcelable
Warning: library class android.app.job.JobInfo extends or implements program class android.os.Parcelable
Warning: library class android.util.FloatProperty extends or implements program class android.util.Property
Warning: library class android.util.IntProperty extends or implements program class android.util.Property
Warning: library class android.view.ActionMode$Callback2 extends or implements program class android.view.ActionMode$Callback
Warning: library class android.view.Display$HdrCapabilities extends or implements program class android.os.Parcelable
Warning: library class android.view.Display$Mode extends or implements program class android.os.Parcelable
Warning: library class android.view.DragAndDropPermissions extends or implements program class android.os.Parcelable
Warning: library class android.view.KeyboardShortcutGroup extends or implements program class android.os.Parcelable
Warning: library class android.view.KeyboardShortcutInfo extends or implements program class android.os.Parcelable
Warning: library class android.view.PointerIcon extends or implements program class android.os.Parcelable
Warning: library class android.view.WindowAnimationFrameStats extends or implements program class android.os.Parcelable
Warning: library class android.view.WindowContentFrameStats extends or implements program class android.os.Parcelable
Warning: library class android.view.WindowId extends or implements program class android.os.Parcelable
Warning: library class android.view.accessibility.AccessibilityWindowInfo extends or implements program class android.os.Parcelable
Warning: library class android.view.animation.BaseInterpolator extends or implements program class android.view.animation.Interpolator
Warning: library class android.view.autofill.AutofillId extends or implements program class android.os.Parcelable
Warning: library class android.view.autofill.AutofillValue extends or implements program class android.os.Parcelable
Warning: library class android.view.inputmethod.CursorAnchorInfo extends or implements program class android.os.Parcelable
Warning: library class android.view.inputmethod.InputContentInfo extends or implements program class android.os.Parcelable
Warning: library class android.widget.ActionMenuView extends or implements program class android.widget.LinearLayout
Warning: library class android.widget.ActionMenuView$LayoutParams extends or implements program class android.widget.LinearLayout$LayoutParams
Warning: library class android.app.RemoteInput depends on program class android.content.Intent
Warning: library class android.app.RemoteInput depends on program class android.os.Bundle
Warning: library class android.app.RemoteInput depends on program class android.content.Intent
Warning: library class android.app.RemoteInput depends on program class android.os.Parcel
Warning: library class android.app.RemoteInput$Builder depends on program class android.os.Bundle
Warning: library class android.app.RemoteInput$Builder depends on program class android.os.Bundle
Warning: library class android.app.SharedElementCallback depends on program class android.view.View
Warning: library class android.app.SharedElementCallback depends on program class android.graphics.Matrix
Warning: library class android.app.SharedElementCallback depends on program class android.graphics.RectF
Warning: library class android.app.SharedElementCallback depends on program class android.os.Parcelable
Warning: library class android.app.SharedElementCallback depends on program class android.content.Context
Warning: library class android.media.session.MediaController$TransportControls depends on program class android.net.Uri
Warning: library class android.media.session.MediaController$TransportControls depends on program class android.os.Bundle
Warning: library class android.media.session.MediaController$TransportControls depends on program class android.os.Bundle
Warning: library class android.media.session.MediaController$TransportControls depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession depends on program class android.content.Context
Warning: library class android.media.session.MediaSession depends on program class android.os.Handler
Warning: library class android.media.session.MediaSession depends on program class android.app.PendingIntent
Warning: library class android.media.session.MediaSession depends on program class android.app.PendingIntent
Warning: library class android.media.session.MediaSession depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.ResultReceiver
Warning: library class android.media.session.MediaSession$Callback depends on program class android.content.Intent
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.net.Uri
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.net.Uri
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$Callback depends on program class android.os.Bundle
Warning: library class android.media.session.MediaSession$QueueItem depends on program class android.os.Parcelable$Creator
Warning: library class android.media.session.MediaSession$QueueItem depends on program class android.os.Parcel
Warning: library class android.media.session.MediaSession$Token depends on program class android.os.Parcelable$Creator
Warning: library class android.media.session.MediaSession$Token depends on program class android.os.Parcel
Warning: library class android.media.session.PlaybackState depends on program class android.os.Parcelable$Creator
Warning: library class android.media.session.PlaybackState depends on program class android.os.Parcel
Warning: library class android.media.session.PlaybackState depends on program class android.os.Bundle
Warning: library class android.media.session.PlaybackState$Builder depends on program class android.os.Bundle
Warning: library class android.media.session.PlaybackState$CustomAction depends on program class android.os.Parcelable$Creator
Warning: library class android.media.session.PlaybackState$CustomAction depends on program class android.os.Parcel
Warning: library class android.media.session.PlaybackState$CustomAction depends on program class android.os.Bundle
Warning: library class android.media.session.PlaybackState$CustomAction$Builder depends on program class android.os.Bundle
Warning: library class android.net.Network depends on program class android.os.Parcelable$Creator
Warning: library class android.net.Network depends on program class android.os.Parcel
Warning: library class android.os.LocaleList depends on program class android.os.Parcelable$Creator
Warning: library class android.os.LocaleList depends on program class android.os.Parcel
Warning: library class android.os.PersistableBundle depends on program class android.os.Parcelable$Creator
Warning: library class android.os.PersistableBundle depends on program class android.os.Parcel
Warning: library class android.os.UserManager depends on program class android.os.Bundle
Warning: library class android.os.UserManager depends on program class android.os.Bundle
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.content.Context
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.content.ContentResolver
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.graphics.Point
Warning: library class android.provider.DocumentsContract depends on program class android.os.CancellationSignal
Warning: library class android.provider.DocumentsContract depends on program class android.graphics.Bitmap
Warning: library class android.provider.DocumentsContract depends on program class android.content.ContentResolver
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.content.ContentResolver
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.content.ContentResolver
Warning: library class android.provider.DocumentsContract depends on program class android.net.Uri
Warning: library class android.provider.DocumentsContract depends on program class android.content.ContentResolver
Warning: library class android.security.KeyPairGeneratorSpec depends on program class android.content.Context
Warning: library class android.security.KeyPairGeneratorSpec$Builder depends on program class android.content.Context
Warning: library class android.service.media.MediaBrowserService depends on program class android.content.Intent
Warning: library class android.service.media.MediaBrowserService depends on program class android.os.IBinder
Warning: library class android.service.media.MediaBrowserService depends on program class android.os.Bundle
Warning: library class android.service.media.MediaBrowserService depends on program class android.os.Bundle
Warning: library class android.service.media.MediaBrowserService depends on program class android.os.Bundle
Warning: library class android.service.media.MediaBrowserService depends on program class android.os.Bundle
Warning: library class android.service.media.MediaBrowserService$BrowserRoot depends on program class android.os.Bundle
Warning: library class android.service.media.MediaBrowserService$BrowserRoot depends on program class android.os.Bundle
Warning: library class android.widget.Toolbar depends on program class android.util.AttributeSet
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.content.Context
Warning: library class android.widget.Toolbar depends on program class android.content.Context
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.view.View$OnClickListener
Warning: library class android.widget.Toolbar depends on program class android.view.Menu
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.graphics.drawable.Drawable
Warning: library class android.widget.Toolbar depends on program class android.os.Parcelable
Warning: library class android.widget.Toolbar depends on program class android.os.Parcelable
Warning: library class android.widget.Toolbar depends on program class android.view.MotionEvent
Warning: library class android.widget.Toolbar depends on program class android.util.AttributeSet
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Warning: library class android.widget.Toolbar depends on program class android.util.AttributeSet
Warning: library class android.widget.Toolbar depends on program class android.view.ViewGroup$LayoutParams
Note: there were 15 references to unknown classes.
You should check your configuration for typos.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)
Note: there were 21 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
Warning: there were 928 instances of library classes depending on program classes.
You must avoid such dependencies since the program classes will be processed, while the library classes will remain unchanged.
(http://proguard.sourceforge.net/manual/troubleshooting.html#dependency)
Warning: there were 53 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: Exception while processing task java.io.IOException: Please correct the above warnings first.
:transformClassesAndResourcesWithProguardForCouchdbRelease FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':transformClassesAndResourcesWithProguardForCouchdbRelease'.
> Job failed, see logs for details
答案 0 :(得分:2)
我已升级到gradle 3.0.1,大部分警告都已消失。如果您仍然使用3.0.0,请在您的proguard文件中使用它
-dontwarn android.**
不理想,但让它发挥作用。
答案 1 :(得分:1)
我有同样的问题,虽然我的案例有点独特,但这是我的解决方案:
升级到新的3.0.1版本(com.android.tools.build:gradle:3.0.1
)后,我看到更少的警告(最初我有> 3000警告)。
我的问题的根源是我使用了一个依赖于整个android框架的库(这一个:https://github.com/tony19/logback-android,问题#73)。
我还查看了依赖项(./gradlew app:dependenices
),因为我的库依赖于旧的apache http客户端,这也会导致一些警告。我也必须消除它们。
答案 2 :(得分:0)
它可能对你有所帮助
Enabling ProGuard for local library modules no longer affects the library's code. Instead, you should run ProGuard on the app module that consumes the library.
https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
答案 3 :(得分:-4)
在android标记
中添加以下代码lintOptions {
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}