Предупреждение о кинжале в Android Studio с Proguard, хотя Dagger не используется напрямую - PullRequest
0 голосов
/ 20 июня 2019

Мой проект больше не компилируется с оптимизацией Proguard. Как вы увидите ниже, здесь упоминается dagger, но я не использовал ничего связанного с этим напрямую. Недавно я обновил много зависимостей одновременно.

Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.AndroidMemorySensitiveReferenceManager_Factory: can't find referenced class dagger.releasablereferences.TypedReleasableReferenceManager
Warning: dagger.android.ReleaseReferencesAt: can't find referenced class dagger.releasablereferences.CanReleaseReferences

Если я использую dontwarn для подавления dagger связанных строк, я получаю следующие сообщения (я пытался получить больше строк с --info, --debug и --scan, но вывод содержит ту же информацию):

> Task :app:transformClassesAndResourcesWithProguardForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 2

Я пробовал последнюю версию (6.1.1) Proguard (переопределяя стандартную), результат тот же.

В чем может быть причина?

Содержимое приложения build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {

    compileSdkVersion 29//28
    buildToolsVersion "29.0.0" //"28.0.3"
    defaultConfig {
        applicationId "myapp"
        minSdkVersion 16
        targetSdkVersion 28

        versionName "1.1.1"
        multiDexEnabled true
        manifestPlaceholders.crashlyticsEnabled = "true"
    }
    buildTypes {
        release {
            useProguard true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    dexOptions {
        javaMaxHeapSize "2g"
    }
}
configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

dependencies {
    implementation 'com.android.billingclient:billing:2.0.0'
    implementation 'androidx.media:media:1.1.0-rc01'
    implementation 'androidx.preference:preference:1.1.0-beta01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation files('libs/juniversalchardet-1.0.3.jar')
    implementation project(path: ':ViewPageIndicator')

    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.google.firebase:firebase-inappmessaging-display:18.0.0'
    implementation 'com.google.firebase:firebase-ads:18.0.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
    implementation 'com.google.firebase:firebase-analytics:17.0.0'

    implementation 'androidx.multidex:multidex:2.0.1'

    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'com.facebook.android:facebook-login:4.42.0'
    implementation 'com.facebook.android:facebook-share:4.42.0'
    implementation 'com.amplitude:android-sdk:2.23.0'
    implementation 'com.flurry.android:analytics:11.5.0@aar'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'android.arch.lifecycle:runtime:1.1.1'
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }
}

apply plugin: 'com.google.gms.google-services'

UPDATE Я вернул зависимости к их предыдущим версиям. Проблема в implementation 'com.google.firebase:firebase-inappmessaging-display:18.0.0' Если я изменю версию на 17.1.0, проблема, связанная с «кинжалом», исчезнет. Если я изменю его на 17.2.0, проблема вернется.

UPDATE2 Это может быть ошибкой в ​​Firebase. Я связался с ними, и они создали внутренний отчет об ошибках. Я обновлю этот вопрос, когда у меня будет ответ.

1 Ответ

0 голосов
/ 20 июня 2019

Поскольку вы не знаете, какая у вас версия кинжала, очень трудно найти точную проблему в вашем проекте, но вы можете добавить приведенный ниже код в файл progaurd-rules.pro, и ваш проект будет успешно собран.

-ignorewarnings
-keep class * {
    public private *;
}

Попробуйте и дайте мне знать.Надеюсь, это сработает для вас.Удачного кодирования:)

...