Ungelöster Klassenname proguard-rules Android Studio 4.0

Lesezeit: 2 Minuten

Benutzer-Avatar
Công Hải

Wenn ich auf Android Studio 4.0 proguard-rules aktualisiere, wird eine Warnung angezeigt Unresolved class name. Unten ist ein Beispiel, aber ich bin mir sicher, dass es immer noch die exist-Klasse in meinem Projekt ist.

-keep class com.squareup.haha.** { *; }
-keep class com.squareup.leakcanary.** { *; }

Wenn ich umsteige ** zu * diese Warnung ist weg.

-keep class com.squareup.haha.* { *; }
-keep class com.squareup.leakcanary.* { *; }

Bekommt das jemand? Soll ich diese Warnung ignorieren oder handelt es sich um einen Fehler von Android Studio 4.0?

Aktualisieren

Ich finde, es ist ein Fehler, er wurde bereits zugewiesen, aber nicht behoben https://issuetracker.google.com/issues/153616200

Update Juli

Das Google-Team hat diesen Fehler bereits analysiert und erhöht, er könnte mit einer neueren Version von R8 zusammenhängen.

August aktualisieren

Fest eingebaut AS 4.2 Canary 9

  • füge es als Antwort hinzu und markiere es als akzeptiert

    – Mohammed Ali

    12. November 2020 um 17:15 Uhr


Überprüfen Sie dieses Problem: https://issuetracker.google.com/issues/147802433

`Wenn Sie mit der rechten Maustaste auf den Fehler klicken, gibt es die Option “Unterdrücken für Anweisung”, danach fügt AS einen Kommentar hinzu wie:

noinspection ShrinkerUnresolvedReference

-Klasse nicht.bestehend lassen

Und bei diesem Kommentar gibt es keinen Fehler für “not.existing”.`

Geben Sie hier die Bildbeschreibung ein

  • Eigentlich brauchen wir nur noinspection wenn sich die Bibliothek ändert und die Klasse nicht beendet wird, aber einige Klassen und Modelle beendet werden, aber Android Studio 4.0 immer noch sagt, dass es ungelöst ist. Ich denke, es sollte ein Fehler sein, anstatt durch “Unterdrückung für Anweisung” behoben zu werden.

    – Công Hải

    29. Mai 2020 um 7:46 Uhr

Ersetzen .** mit ** als Notlösung. Kein Kompilierungsfehler und Klassen werden beibehalten.

-keep class com.squareup.haha** { *; }
-keep class com.squareup.leakcanary** { *; }

Geben Sie hier die Bildbeschreibung ein

Dieses Problem wurde in Android Studio 4.2 Canary 8 behoben. Die Versionshinweise finden Sie hier https://androidstudio.googleblog.com/2020/08/android-studio-42-canary-8-available.html und suchen Sie nach dieser Problem-ID #153616200

Benutzer-Avatar
aa86799

Ein Ordner und seine Unterdatei. Ich habe das getestet:

com.xx.xx.* { *; }   

Ich vermute, dass es mehrere Ordner und Unterdateien enthalten kann. Das habe ich nicht getestet:

com.xx.xx.**.* {*;}   

Benutzer-Avatar
Martin Zeitler

Alle diese Antworten sind bloßer Unsinn, weil:

LeakCanary wird hinzugefügt als debugImplementation.

  • Es macht keinen Sinn, Regeln für Klassen zu haben, die in nicht existieren release baut.
  • es macht noch weniger Sinn zu verschleiern debug baut.

Falls Sie eine dieser Regeln benötigen, haben Sie sie dem falschen Build-Typ hinzugefügt.

Benutzer-Avatar
Iman mirzaei

ersetzen

.**

mit

.*.*

Ergebnis

-keep class com.squareup.haha.*.* { *; }
-keep class com.squareup.leakcanary.*.* { *; }

1226770cookie-checkUngelöster Klassenname proguard-rules Android Studio 4.0

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy