2017-11-08 30 views
8

Tôi đang cố gắng tạo APK bằng ProGuard và phiên bản Gradle 3.0.0 mới. Tôi nhận được rất nhiều cảnh báo về các lớp học mà tôi nghĩ rằng tôi bỏ qua trong tập tin cấu hình ProGuard của tôi. Các cấu hình tương tự hoạt động tốt với Gradle 2.3.3 nhưng dường như phá vỡ trên 3.0.0. Các cảnh báo rất nhiều, hầu như không đọc được cấu hình ProGuard.Các vấn đề về Proguard với Gradle 3.0.0

build.gradle My

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 cảnh báo dưới đây.

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

Bạn phải tự mình viết quy tắc bảo vệ trong «proguard-rules.pro'. –

+0

Tôi có cùng một vấn đề. Vì một số lý do, gói ứng dụng chứa tất cả các lớp từ android.jar với các phương thức được phân tích. Nếu tôi thêm '-dontwarn android. **' vào tệp 'proguard-rules.pro' của mình, gói ứng dụng được tạo. Khi tôi chạy nó, tôi nhận được 'java.lang.RuntimeException: Stub! tại android.content.g. (Nguồn không xác định) ... '. –

+0

Tôi có cùng một vấn đề chính xác. APK được xây dựng thành công trên 2.3.3. Bất kỳ bản cập nhật? – sirackh

Trả lời

1

Tôi đã nâng cấp lên phiên bản 3.0.1 và hầu hết các cảnh báo đã biến mất. Nếu bạn vẫn còn trên 3.0.0 thì hãy sử dụng điều này trong tập tin bảo vệ của bạn

-dontwarn android.** 

Không lý tưởng nhưng nó hoạt động.

-3

Thêm bên dưới mã trong android thẻ

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 
    } 
+0

Bạn chỉ cách tắt cảnh báo và lỗi lint. Câu hỏi đặt ra là về ProGuard. –

0

tôi đã cùng một vấn đề, mặc dù trường hợp của tôi là loại độc đáo, đây là giải pháp của tôi :

Sau khi nâng cấp lên phiên bản 3.0.1 mới (com.android.tools.build:gradle:3.0.1), tôi thấy ít cảnh báo hơn (ban đầu tôi có> 3000 cảnh báo). Nguồn gốc của vấn đề của tôi là tôi đã sử dụng thư viện có phụ thuộc vào toàn bộ khung công tác android (Điều này: https://github.com/tony19/logback-android, số phát hành #73).

Tôi cũng đã xem xét các phụ thuộc (./gradlew app:dependenices), bởi vì tôi có các thư viện phụ thuộc vào ứng dụng http apache cũ, cũng gây ra một số cảnh báo. Tôi cũng phải loại bỏ chúng.

Các vấn đề liên quan