Использование MultiDex в Android-приложении запускает ProGuard дважды и только второй раз с помощью Warnings / Notes?

Я использую MultiDex и ProGuard в своем приложении для Android. Когда я запускаю приложение, оказывается, что proguard работает дважды. Вот задачи, по которым запускается proguard:

:app:transformClassesAndResourcesWithProguardForRelease ProGuard, version 5.2.1 ... Initializing... Shrinking... Obfuscating... Writing output... 

и позже:

 :app:transformClassesWithMultidexlistForRelease ProGuard, version 5.2.1 

Вот файл build.gradle моего приложения:

 buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.20.1' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "de.majestella" minSdkVersion 16 targetSdkVersion 22 versionCode 3 versionName "1.0.1" // Enabling multidex support. multiDexEnabled true } dexOptions { incremental true javaMaxHeapSize "2g" } buildTypes { debug { debuggable true // ProGuard minifyEnabled false } release { signingConfig signingConfigs.release debuggable false // ProGuard minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-guava.pro', 'proguard-square-picasso.pro', 'proguard-crashlytics.pro', 'proguard-google-analytics.pro' } } } repositories { mavenCentral() maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } maven { name = "sonatypeGoogle" url = "https://oss.sonatype.org/content/repositories/google-snapshots/" } flatDir { dirs 'libs' } maven { url 'https://maven.fabric.io/public' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true; } compile 'com.android.support:multidex:1.0.1' compile 'com.google.android.gms:play-services-analytics:8.1.0' compile "com.google.android.gms:play-services:8.1.0" } 

После первого запуска proguard (т. Е. После: app: transformClassesAndResourcesWithProguardForRelease) я получаю следующие предупреждения после writing output , поэтому proguard сам отлично работает с моими правилами:

 Warning: can't write resource [fabric/com.crashlytics.sdk.android.answers.properties] (Duplicate zip entry [fabric/com.crashlytics.sdk.android.answers.properties]) Warning: can't write resource [fabric/com.crashlytics.sdk.android.beta.properties] (Duplicate zip entry [fabric/com.crashlytics.sdk.android.beta.properties]) Warning: can't write resource [fabric/com.crashlytics.sdk.android.crashlytics-core.properties] (Duplicate zip entry [fabric/com.crashlytics.sdk.android.crashlytics-core.properties]) Warning: can't write resource [fabric/com.crashlytics.sdk.android.crashlytics.properties] (Duplicate zip entry [fabric/com.crashlytics.sdk.android.crashlytics.properties]) Warning: can't write resource [fabric/io.fabric.sdk.android.fabric.properties] (Duplicate zip entry [fabric/io.fabric.sdk.android.fabric.properties]) 

Когда выполняется второй прогард после :app:transformClassesWithMultidexlistForRelease я получаю следующее:

 Note: android.support.design.widget.CoordinatorLayout calls 'Class.getAnnotation' Note: com.google.ads.mediation.MediationServerParameters calls 'Field.getAnnotation' Note: com.google.common.eventbus.AnnotatedSubscriberFinder calls 'Method.getAnnotation' Note: com.google.common.reflect.Invokable$MethodInvokable calls 'Method.getParameterAnnotations' Note: daaac calls 'Class.getAnnotation' Note: daaai calls 'Class.getAnnotation' Note: android.support.v4.app.ak calls 'Field.getType' Note: com.google.android.gms.internal.zzsf calls 'Field.getType' ... 

Это странно, потому что в первом прогураторе я не получаю никаких предупреждений / заметок, подобных этому из-за моих правил.

Вот мои правила ProGuard:

 -keep class com.google.common.io.Resources { public static <methods>; } -keep class com.google.common.collect.Lists { public static ** reverse(**); } -keep class com.google.common.base.Charsets { public static <fields>; } -keep class com.google.common.collect.MapMakerInternalMap$ReferenceEntry -keep class com.google.common.cache.LocalCache$ReferenceEntry -dontwarn sun.misc.Unsafe -dontwarn com.google.common.collect.MinMaxPriorityQueue -keepattributes SourceFile,LineNumberTable,*Annotation* -keep class com.crashlytics.android.** -dontwarn com.squareup.okhttp.** -dontnote org.apache.http.conn.** -dontnote org.apache.http.params.** -dontnote android.net.http.** -dontnote **ILicensingService -dontnote com.android.vending.billing.IInAppBillingService -dontwarn com.google.auto.factory.** -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -dontnote android.support.** -dontnote com.google.common.util.concurrent.** -dontnote com.squareup.okhttp.** -keep class org.jsoup.** { *; } -keeppackagenames org.jsoup.nodes -keep class com.google.common.cache.Striped64 { *; } -keep class com.google.common.** { *; } -keep class com.daimajia.slider.** { *; } -dontnote org.jsoup.** -dontnote com.google.common.** -keep class com.squareup.picasso.** { *; } -keep class com.google.android.gms.** { *; } -keep class com.google.ads.** { *; } -keep class com.lorentzos.** { *; } -keep public class com.google.android.gms.* { public *; } -dontwarn com.google.android.gms.** -dontnote com.google.android.gms.maps.internal.CreatorImpl -keep class com.mikepenz.iconics.** { *; } 

Мне кажется, что второй прогон ProGuard не использует мои правила proguard.

Изменить: Вот результат gradlew -q tasks --all : https://gist.github.com/confile/2a15d80980214656f4f1

Почему второй Proguard запускает ошибки и как их разрешать?

Это, похоже, проблема с плагином для Android. См. https://www.google.co.kr/url?sa=t&source=web&rct=j&url=https://groups.google.com/forum/m/%23!topic/adt-dev/iS_lyRH8hL8&ved=0ahUKEwiP7cP -nMHJAhXLp5QKHX3qBuwQFggdMAI & USG = AFQjCNF4ZuCA79SeCltd8kBIzArzeBbKsQ & Sig2 = UFqfkY_By7z1rCW4SwmQZw

Intereting Posts
Получите оставшееся время работы от телефона Android Как реализовать липкий нижний колонтитул в recyclerview Утечка контекста Android в AsyncTask Как вы отлаживаете Android IntentService? Одноранговый SIP-вызов с Android SIP Stack? Сброс изменения пути SD-карты в Android Studio AVD Manager Повысьте производительность webView (должна быть такая же производительность, что и собственный веб-браузер) SQLiteConstraintException: код ошибки 19: ограничение не выполнено Может ли кто-нибудь подтвердить эту проблему (ограниченное количество файловых дескрипторов на некоторых устройствах Android)? Почему setCharactersticNotification () фактически не включает уведомления? Ориентация на конкретную версию системного образа с помощью утилиты командной строки «android»? Текст-заполнитель (только процесс проектирования) в макете Android? Реализация Handler-Looper в Android Как играть в видеофайл в андроиде? RecyclerView.ViewHolder – getLayoutPosition vs getAdapterPosition